arch/*_rptun.c: port all the chip's rptun driver to new rptun framework

New rptun framework need provide the carveout device to provide
the share memmory.

And need add the cpuname feature for rpmsg virtio device to let
rpmsg virtio can know remote cpuname.

Signed-off-by: wangzhi16 <wangzhi16@xiaomi.com>
Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
This commit is contained in:
wangzhi16
2025-04-09 10:57:37 +08:00
committed by GUIDINGLI
parent 728a61437a
commit 8c8e837230
9 changed files with 137 additions and 46 deletions
+6 -4
View File
@@ -80,7 +80,8 @@ static const char *imx9_rptun_get_cpuname(struct rptun_dev_s *dev);
static const char *imx9_rptun_get_firmware(struct rptun_dev_s *dev);
static const struct rptun_addrenv_s *
imx9_rptun_get_addrenv(struct rptun_dev_s *dev);
static struct rptun_rsc_s *imx9_rptun_get_resource(struct rptun_dev_s *dev);
static struct resource_table *
imx9_rptun_get_resource(struct rptun_dev_s *dev);
static bool imx9_rptun_is_autostart(struct rptun_dev_s *dev);
static bool imx9_rptun_is_master(struct rptun_dev_s *dev);
static int imx9_rptun_start(struct rptun_dev_s *dev);
@@ -149,14 +150,15 @@ imx9_rptun_get_addrenv(struct rptun_dev_s *dev)
* Name: imx9_rptun_get_resource
****************************************************************************/
static struct rptun_rsc_s *imx9_rptun_get_resource(struct rptun_dev_s *dev)
static struct resource_table *
imx9_rptun_get_resource(struct rptun_dev_s *dev)
{
struct imx9_rptun_dev_s *priv =
container_of(dev, struct imx9_rptun_dev_s, rptun);
if (priv->shmem != NULL)
{
return &priv->shmem->rsc;
return &priv->shmem->rsc.rsc_tbl_hdr;
}
priv->shmem = (struct imx9_rptun_shmem_s *)VRING_SHMEM;
@@ -166,7 +168,7 @@ static struct rptun_rsc_s *imx9_rptun_get_resource(struct rptun_dev_s *dev)
imx9_rsctable_copy();
}
return &priv->shmem->rsc;
return &priv->shmem->rsc.rsc_tbl_hdr;
}
/****************************************************************************
+6 -3
View File
@@ -27,6 +27,7 @@
#include "imx9_rsctable.h"
#include <string.h>
#include <nuttx/rptun/rptun.h>
/****************************************************************************
* Pre-processor Definitions
@@ -40,7 +41,8 @@
#define RESOURCE_TABLE_BASE 0x88220000
#define NO_RESOURCE_ENTRIES (1)
#define RSC_VDEV_FEATURE_NS (1) /* Support name service announcement */
#define RSC_VDEV_FEATURE (1 << VIRTIO_RPMSG_F_NS | \
1 << VIRTIO_RPMSG_F_CPUNAME)
#define IMX9_RSC_TABLE_VERSION (1)
/****************************************************************************
@@ -81,7 +83,7 @@ const struct rptun_rsc_s g_imx9_rsc_table =
RSC_VDEV,
7,
2,
RSC_VDEV_FEATURE_NS,
RSC_VDEV_FEATURE,
0,
0,
0,
@@ -111,7 +113,8 @@ const struct rptun_rsc_s g_imx9_rsc_table =
.config =
{
0
.host_cpuname = "netcore",
.remote_cpuname = "nuttx"
}
};
+5 -4
View File
@@ -84,7 +84,7 @@ static const char *mx8mp_rptun_get_cpuname(struct rptun_dev_s *dev);
static const char *mx8mp_rptun_get_firmware(struct rptun_dev_s *dev);
static const struct rptun_addrenv_s *
mx8mp_rptun_get_addrenv(struct rptun_dev_s *dev);
static struct rptun_rsc_s *
static struct resource_table *
mx8mp_rptun_get_resource(struct rptun_dev_s *dev);
static bool mx8mp_rptun_is_autostart(struct rptun_dev_s *dev);
static bool mx8mp_rptun_is_master(struct rptun_dev_s *dev);
@@ -154,14 +154,15 @@ mx8mp_rptun_get_addrenv(struct rptun_dev_s *dev)
* Name: mx8mp_rptun_get_resource
****************************************************************************/
static struct rptun_rsc_s *mx8mp_rptun_get_resource(struct rptun_dev_s *dev)
static struct resource_table *
mx8mp_rptun_get_resource(struct rptun_dev_s *dev)
{
struct mx8mp_rptun_dev_s *priv
= container_of(dev, struct mx8mp_rptun_dev_s, rptun);
if (priv->shmem != NULL)
{
return &priv->shmem->rsc;
return &priv->shmem->rsc.rsc_tbl_hdr;
}
priv->shmem = (struct mx8mp_rptun_shmem_s *)VRING_SHMEM;
@@ -171,7 +172,7 @@ static struct rptun_rsc_s *mx8mp_rptun_get_resource(struct rptun_dev_s *dev)
mx8mp_copy_rsc_table();
}
return &priv->shmem->rsc;
return &priv->shmem->rsc.rsc_tbl_hdr;
}
/****************************************************************************
+8 -4
View File
@@ -26,6 +26,8 @@
#include "mx8mp_rsctable.h"
#include <string.h>
#include <nuttx/nuttx.h>
#include <nuttx/rptun/rptun.h>
/****************************************************************************
* Pre-processor Definitions
@@ -39,7 +41,8 @@
#define VRING_SIZE 0x8000
#define NO_RESOURCE_ENTRIES (1)
#define RSC_VDEV_FEATURE_NS (1) /* Support name service announcement */
#define RSC_VDEV_FEATURE (1 << VIRTIO_RPMSG_F_NS | \
1 << VIRTIO_RPMSG_F_CPUNAME)
#define MX8MP_RSC_TABLE_VERSION (1)
/****************************************************************************
@@ -80,7 +83,7 @@ const struct rptun_rsc_s g_mx8mp_rsc_table =
RSC_VDEV,
7,
2,
RSC_VDEV_FEATURE_NS,
RSC_VDEV_FEATURE,
0,
0,
0,
@@ -110,8 +113,9 @@ const struct rptun_rsc_s g_mx8mp_rsc_table =
.config =
{
0
}
.host_cpuname = "netcore",
.remote_cpuname = "nuttx",
},
};
/****************************************************************************
+24 -6
View File
@@ -102,7 +102,7 @@ struct nrf53_rptun_dev_s
****************************************************************************/
static const char *nrf53_rptun_get_cpuname(struct rptun_dev_s *dev);
static struct rptun_rsc_s *
static struct resource_table *
nrf53_rptun_get_resource(struct rptun_dev_s *dev);
static bool nrf53_rptun_is_autostart(struct rptun_dev_s *dev);
static bool nrf53_rptun_is_master(struct rptun_dev_s *dev);
@@ -167,7 +167,7 @@ static const char *nrf53_rptun_get_cpuname(struct rptun_dev_s *dev)
* Name: nrf53_rptun_get_resource
****************************************************************************/
static struct rptun_rsc_s *
static struct resource_table *
nrf53_rptun_get_resource(struct rptun_dev_s *dev)
{
struct nrf53_rptun_dev_s *priv = container_of(dev,
@@ -176,7 +176,7 @@ nrf53_rptun_get_resource(struct rptun_dev_s *dev)
if (priv->shmem != NULL)
{
return &priv->shmem->rsc;
return &priv->shmem->rsc.rsc_tbl_hdr;
}
#ifdef CONFIG_NRF53_APPCORE
@@ -194,7 +194,7 @@ nrf53_rptun_get_resource(struct rptun_dev_s *dev)
priv->shmem->base = (uintptr_t)priv->shmem;
rsc->rsc_tbl_hdr.ver = 1;
rsc->rsc_tbl_hdr.num = 1;
rsc->rsc_tbl_hdr.num = 2;
rsc->rsc_tbl_hdr.reserved[0] = 0;
rsc->rsc_tbl_hdr.reserved[1] = 0;
rsc->offset[0] = offsetof(struct rptun_rsc_s,
@@ -204,7 +204,8 @@ nrf53_rptun_get_resource(struct rptun_dev_s *dev)
rsc->rpmsg_vdev.id = VIRTIO_ID_RPMSG;
rsc->rpmsg_vdev.dfeatures = 1 << VIRTIO_RPMSG_F_NS
| 1 << VIRTIO_RPMSG_F_ACK
| 1 << VIRTIO_RPMSG_F_BUFSZ;
| 1 << VIRTIO_RPMSG_F_BUFSZ
| 1 << VIRTIO_RPMSG_F_CPUNAME;
rsc->rpmsg_vdev.config_len = sizeof(struct fw_rsc_config);
rsc->rpmsg_vdev.num_of_vrings = VRINGS;
@@ -216,6 +217,23 @@ nrf53_rptun_get_resource(struct rptun_dev_s *dev)
rsc->rpmsg_vring1.notifyid = VRING1_NOTIFYID;
rsc->config.r2h_buf_size = VRING_SIZE;
rsc->config.h2r_buf_size = VRING_SIZE;
strlcpy((char *)rsc->config.host_cpuname, "appcore",
VIRTIO_RPMSG_CPUNAME_SIZE);
strlcpy((char *)rsc->config.remote_cpuname, "netcore",
VIRTIO_RPMSG_CPUNAME_SIZE);
/* Carveout, reserved 512 for vring descriptors and memory
* management header
*/
rsc->offset[1] = offsetof(struct rptun_rsc_s,
carveout);
rsc->carveout.type = RSC_CARVEOUT;
rsc->carveout.da = (uintptr_t)rsc + ALIGN_UP(sizeof
(struct rptun_rsc_s), VRING_ALIGN);
rsc->carveout.pa = FW_RSC_U32_ADDR_ANY;
rsc->carveout.len = VRING_SIZE * VRING_NR * VRINGS + 512;
memcpy(rsc->carveout.name, "vdev0buffer", 11);
}
else
{
@@ -227,7 +245,7 @@ nrf53_rptun_get_resource(struct rptun_dev_s *dev)
}
}
return &priv->shmem->rsc;
return &priv->shmem->rsc.rsc_tbl_hdr;
}
/****************************************************************************
+24 -6
View File
@@ -108,7 +108,7 @@ struct stm32_rptun_dev_s
****************************************************************************/
static const char *stm32_rptun_get_cpuname(struct rptun_dev_s *dev);
static struct rptun_rsc_s *
static struct resource_table *
stm32_rptun_get_resource(struct rptun_dev_s *dev);
static bool stm32_rptun_is_autostart(struct rptun_dev_s *dev);
static bool stm32_rptun_is_master(struct rptun_dev_s *dev);
@@ -173,7 +173,7 @@ static const char *stm32_rptun_get_cpuname(struct rptun_dev_s *dev)
* Name: stm32_rptun_get_resource
****************************************************************************/
static struct rptun_rsc_s *
static struct resource_table *
stm32_rptun_get_resource(struct rptun_dev_s *dev)
{
struct stm32_rptun_dev_s *priv = container_of(dev,
@@ -182,7 +182,7 @@ stm32_rptun_get_resource(struct rptun_dev_s *dev)
if (priv->shmem != NULL)
{
return &priv->shmem->rsc;
return &priv->shmem->rsc.rsc_tbl_hdr;
}
#ifdef CONFIG_ARCH_CHIP_STM32H7_CORTEXM7
@@ -197,7 +197,7 @@ stm32_rptun_get_resource(struct rptun_dev_s *dev)
rsc = &priv->shmem->rsc;
rsc->rsc_tbl_hdr.ver = 1;
rsc->rsc_tbl_hdr.num = 1;
rsc->rsc_tbl_hdr.num = 2;
rsc->rsc_tbl_hdr.reserved[0] = 0;
rsc->rsc_tbl_hdr.reserved[1] = 0;
rsc->offset[0] = offsetof(struct rptun_rsc_s,
@@ -207,7 +207,8 @@ stm32_rptun_get_resource(struct rptun_dev_s *dev)
rsc->rpmsg_vdev.id = VIRTIO_ID_RPMSG;
rsc->rpmsg_vdev.dfeatures = 1 << VIRTIO_RPMSG_F_NS
| 1 << VIRTIO_RPMSG_F_ACK
| 1 << VIRTIO_RPMSG_F_BUFSZ;
| 1 << VIRTIO_RPMSG_F_BUFSZ
| 1 << VIRTIO_RPMSG_F_CPUNAME;
rsc->rpmsg_vdev.config_len = sizeof(struct fw_rsc_config);
rsc->rpmsg_vdev.num_of_vrings = VRINGS;
@@ -219,6 +220,23 @@ stm32_rptun_get_resource(struct rptun_dev_s *dev)
rsc->rpmsg_vring1.notifyid = VRING1_NOTIFYID;
rsc->config.r2h_buf_size = VRING_SIZE;
rsc->config.h2r_buf_size = VRING_SIZE;
strlcpy((char *)rsc->config.host_cpuname, "cm7",
VIRTIO_RPMSG_CPUNAME_SIZE);
strlcpy((char *)rsc->config.remote_cpuname, "cm4",
VIRTIO_RPMSG_CPUNAME_SIZE);
/* Carveout, reserved 512 for vrings descriptors and memory
* management header
*/
rsc->offset[1] = offsetof(struct rptun_rsc_s,
carveout);
rsc->carveout.type = RSC_CARVEOUT;
rsc->carveout.da = (uintptr_t)rsc + ALIGN_UP(sizeof
(struct rptun_rsc_s), VRING_ALIGN);
rsc->carveout.pa = FW_RSC_U32_ADDR_ANY;
rsc->carveout.len = VRING_SIZE * VRING_NR * VRINGS + 512;
memcpy(rsc->carveout.name, "vdev0buffer", 11);
priv->shmem->base = (uintptr_t)priv->shmem;
}
@@ -232,7 +250,7 @@ stm32_rptun_get_resource(struct rptun_dev_s *dev)
}
}
return &priv->shmem->rsc;
return &priv->shmem->rsc.rsc_tbl_hdr;
}
/****************************************************************************
+24 -6
View File
@@ -132,7 +132,7 @@ struct k230_rptun_dev_s
****************************************************************************/
static const char *rp_get_cpuname(struct rptun_dev_s *dev);
static struct rptun_rsc_s *rp_get_resource(struct rptun_dev_s *dev);
static struct resource_table *rp_get_resource(struct rptun_dev_s *dev);
static bool rp_is_autostart(struct rptun_dev_s *dev);
static bool rp_is_master(struct rptun_dev_s *dev);
static int rp_start(struct rptun_dev_s *dev);
@@ -173,14 +173,14 @@ static const char *rp_get_cpuname(struct rptun_dev_s *dev)
return priv->peername;
}
static struct rptun_rsc_s *rp_get_resource(struct rptun_dev_s *dev)
static struct resource_table *rp_get_resource(struct rptun_dev_s *dev)
{
struct k230_rptun_dev_s *priv = as_k230_rptun_dev(dev);
struct rptun_rsc_s *rsc;
if (priv->shmem != NULL)
{
return &priv->shmem->rsc;
return &priv->shmem->rsc.rsc_tbl_hdr;
}
priv->shmem = SHMEM;
@@ -192,7 +192,7 @@ static struct rptun_rsc_s *rp_get_resource(struct rptun_dev_s *dev)
rsc = &priv->shmem->rsc;
rsc->rsc_tbl_hdr.ver = 1;
rsc->rsc_tbl_hdr.num = 1;
rsc->rsc_tbl_hdr.num = 2;
rsc->rsc_tbl_hdr.reserved[0] = 0;
rsc->rsc_tbl_hdr.reserved[1] = 0;
rsc->offset[0] = offsetof(struct rptun_rsc_s,
@@ -202,7 +202,8 @@ static struct rptun_rsc_s *rp_get_resource(struct rptun_dev_s *dev)
rsc->rpmsg_vdev.id = VIRTIO_ID_RPMSG;
rsc->rpmsg_vdev.dfeatures = 1 << VIRTIO_RPMSG_F_NS
| 1 << VIRTIO_RPMSG_F_ACK
| 1 << VIRTIO_RPMSG_F_BUFSZ;
| 1 << VIRTIO_RPMSG_F_BUFSZ
| 1 << VIRTIO_RPMSG_F_CPUNAME;
rsc->rpmsg_vdev.config_len = sizeof(struct fw_rsc_config);
rsc->rpmsg_vdev.num_of_vrings = VRINGS;
@@ -214,6 +215,23 @@ static struct rptun_rsc_s *rp_get_resource(struct rptun_dev_s *dev)
rsc->rpmsg_vring1.notifyid = VRING1_NOTIFYID;
rsc->config.r2h_buf_size = VRING_SIZE;
rsc->config.h2r_buf_size = VRING_SIZE;
strlcpy((char *)rsc->config.host_cpuname, "master",
VIRTIO_RPMSG_CPUNAME_SIZE);
strlcpy((char *)rsc->config.remote_cpuname, "remote",
VIRTIO_RPMSG_CPUNAME_SIZE);
/* Carveout, reserved 512 for vrings descriptors and memory
* management header
*/
rsc->offset[1] = offsetof(struct rptun_rsc_s,
carveout);
rsc->carveout.type = RSC_CARVEOUT;
rsc->carveout.da = (uintptr_t)rsc + ALIGN_UP(sizeof
(struct rptun_rsc_s), VRING_ALIGN);
rsc->carveout.pa = FW_RSC_U32_ADDR_ANY;
rsc->carveout.len = VRING_SIZE * VRING_NR * VRINGS + 512;
memcpy(rsc->carveout.name, "vdev0buffer", 11);
priv->shmem->base = (uintptr_t)priv->shmem;
@@ -232,7 +250,7 @@ static struct rptun_rsc_s *rp_get_resource(struct rptun_dev_s *dev)
rpinfo("shmem:%lx, dev:%p\n", priv->shmem->base, dev);
}
return &priv->shmem->rsc;
return &priv->shmem->rsc.rsc_tbl_hdr;
}
static bool rp_is_autostart(struct rptun_dev_s *dev)
+16 -7
View File
@@ -81,7 +81,7 @@
/* rptun initialization names */
#define MPFS_RPTUN_CPU_NAME "mpfs-ihc"
#define MPFS_RPTUN_CPU_NAME "mpfsihc"
/* Vring configuration parameters */
@@ -147,7 +147,8 @@ struct mpfs_ihc_work_arg_s
****************************************************************************/
static const char *mpfs_rptun_get_cpuname(struct rptun_dev_s *dev);
static struct rptun_rsc_s *mpfs_rptun_get_resource(struct rptun_dev_s *dev);
static struct resource_table *
mpfs_rptun_get_resource(struct rptun_dev_s *dev);
static bool mpfs_rptun_is_autostart(struct rptun_dev_s *dev);
static bool mpfs_rptun_is_master(struct rptun_dev_s *dev);
static int mpfs_rptun_start(struct rptun_dev_s *dev);
@@ -845,7 +846,7 @@ static const char *mpfs_rptun_get_cpuname(struct rptun_dev_s *dev)
*
****************************************************************************/
static struct rptun_rsc_s *
static struct resource_table *
mpfs_rptun_get_resource(struct rptun_dev_s *dev)
{
struct mpfs_rptun_dev_s *priv = container_of(dev,
@@ -857,7 +858,7 @@ mpfs_rptun_get_resource(struct rptun_dev_s *dev)
if (priv->shmem != NULL)
{
return &priv->shmem->rsc;
return &priv->shmem->rsc.rsc_tbl_hdr;
}
else
{
@@ -876,10 +877,12 @@ mpfs_rptun_get_resource(struct rptun_dev_s *dev)
rsc->rpmsg_vdev.id = VIRTIO_ID_RPMSG;
rsc->rpmsg_vdev.notifyid = VDEV_NOTIFYID;
rsc->rpmsg_vdev.dfeatures = 1 << VIRTIO_RPMSG_F_NS |
1 << VIRTIO_RPMSG_F_ACK;
1 << VIRTIO_RPMSG_F_ACK |
1 << VIRTIO_RPMSG_F_CPUNAME;
rsc->rpmsg_vdev.gfeatures = 1 << VIRTIO_RPMSG_F_NS |
1 << VIRTIO_RPMSG_F_ACK;
1 << VIRTIO_RPMSG_F_ACK |
1 << VIRTIO_RPMSG_F_CPUNAME;
/* If the master is up already, don't clear the status here */
@@ -888,6 +891,8 @@ mpfs_rptun_get_resource(struct rptun_dev_s *dev)
rsc->rpmsg_vdev.status = 0;
}
rsc->rpmsg_vdev.reserved[0] = VIRTIO_DEV_DRIVER;
rsc->rpmsg_vdev.reserved[1] = 0;
rsc->rpmsg_vdev.config_len = sizeof(struct fw_rsc_config);
rsc->rpmsg_vdev.num_of_vrings = VRINGS;
rsc->rpmsg_vring0.align = VRING_ALIGN;
@@ -900,6 +905,10 @@ mpfs_rptun_get_resource(struct rptun_dev_s *dev)
rsc->rpmsg_vring1.notifyid = VRING1_NOTIFYID;
rsc->config.r2h_buf_size = VRING_SIZE;
rsc->config.h2r_buf_size = VRING_SIZE;
strlcpy((char *)rsc->config.host_cpuname, MPFS_RPTUN_CPU_NAME,
VIRTIO_RPMSG_CPUNAME_SIZE);
strlcpy((char *)rsc->config.remote_cpuname, "nuttx",
VIRTIO_RPMSG_CPUNAME_SIZE);
}
/* It might be tempting to set this at mpfs_rptun_start(), but it's only
@@ -914,7 +923,7 @@ mpfs_rptun_get_resource(struct rptun_dev_s *dev)
up_enable_irq(g_plic_irq);
return &priv->shmem->rsc;
return &priv->shmem->rsc.rsc_tbl_hdr;
}
/****************************************************************************
+24 -6
View File
@@ -117,7 +117,7 @@ struct qemu_rptun_dev_s
****************************************************************************/
static const char *rp_get_cpuname(struct rptun_dev_s *dev);
static struct rptun_rsc_s *rp_get_resource(struct rptun_dev_s *dev);
static struct resource_table *rp_get_resource(struct rptun_dev_s *dev);
static bool rp_is_autostart(struct rptun_dev_s *dev);
static bool rp_is_master(struct rptun_dev_s *dev);
static int rp_start(struct rptun_dev_s *dev);
@@ -201,14 +201,14 @@ static const char *rp_get_cpuname(struct rptun_dev_s *dev)
return priv->peername;
}
static struct rptun_rsc_s *rp_get_resource(struct rptun_dev_s *dev)
static struct resource_table *rp_get_resource(struct rptun_dev_s *dev)
{
struct qemu_rptun_dev_s *priv = as_qemu_rptun_dev(dev);
struct rptun_rsc_s *rsc;
if (priv->shmem != NULL)
{
return &priv->shmem->rsc;
return &priv->shmem->rsc.rsc_tbl_hdr;
}
priv->shmem = SHMEM + CONFIG_QEMU_RPTUN_SHM_SIZE * priv->ndx;
@@ -220,7 +220,7 @@ static struct rptun_rsc_s *rp_get_resource(struct rptun_dev_s *dev)
rsc = &priv->shmem->rsc;
rsc->rsc_tbl_hdr.ver = 1;
rsc->rsc_tbl_hdr.num = 1;
rsc->rsc_tbl_hdr.num = 2;
rsc->rsc_tbl_hdr.reserved[0] = 0;
rsc->rsc_tbl_hdr.reserved[1] = 0;
rsc->offset[0] = offsetof(struct rptun_rsc_s,
@@ -230,7 +230,8 @@ static struct rptun_rsc_s *rp_get_resource(struct rptun_dev_s *dev)
rsc->rpmsg_vdev.id = VIRTIO_ID_RPMSG;
rsc->rpmsg_vdev.dfeatures = 1 << VIRTIO_RPMSG_F_NS
| 1 << VIRTIO_RPMSG_F_ACK
| 1 << VIRTIO_RPMSG_F_BUFSZ;
| 1 << VIRTIO_RPMSG_F_BUFSZ
| 1 << VIRTIO_RPMSG_F_CPUNAME;
rsc->rpmsg_vdev.config_len = sizeof(struct fw_rsc_config);
rsc->rpmsg_vdev.num_of_vrings = VRINGS;
@@ -242,6 +243,23 @@ static struct rptun_rsc_s *rp_get_resource(struct rptun_dev_s *dev)
rsc->rpmsg_vring1.notifyid = VRING1_NOTIFYID;
rsc->config.r2h_buf_size = VRING_SIZE;
rsc->config.h2r_buf_size = VRING_SIZE;
strlcpy((char *)rsc->config.host_cpuname, "master",
VIRTIO_RPMSG_CPUNAME_SIZE);
snprintf((char *)rsc->config.remote_cpuname, VIRTIO_RPMSG_CPUNAME_SIZE,
"remote%d", priv->ndx + 1);
/* Carveout, reserved 512 for vrings descriptors and memory
* management header
*/
rsc->offset[1] = offsetof(struct rptun_rsc_s,
carveout);
rsc->carveout.type = RSC_CARVEOUT;
rsc->carveout.da = (uintptr_t)rsc + ALIGN_UP(sizeof
(struct rptun_rsc_s), VRING_ALIGN);
rsc->carveout.pa = FW_RSC_U32_ADDR_ANY;
rsc->carveout.len = VRING_SIZE * VRING_NR * VRINGS + 512;
memcpy(rsc->carveout.name, "vdev0buffer", 11);
priv->shmem->base = (uintptr_t)priv->shmem;
}
@@ -258,7 +276,7 @@ static struct rptun_rsc_s *rp_get_resource(struct rptun_dev_s *dev)
}
rpinfo("shmem:%p, dev:%p\n", (void *)priv->shmem->base, dev);
return &priv->shmem->rsc;
return &priv->shmem->rsc.rsc_tbl_hdr;
}
static bool rp_is_autostart(struct rptun_dev_s *dev)