Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions arch/arm/src/mx8mp/mx8mp_rptun.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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;
Expand All @@ -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;
}

/****************************************************************************
Expand Down
18 changes: 16 additions & 2 deletions arch/arm/src/mx8mp/mx8mp_rsctable.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@

#include "mx8mp_rsctable.h"
#include <string.h>
#include <nuttx/nuttx.h>

/****************************************************************************
* Pre-processor Definitions
Expand All @@ -38,7 +39,7 @@
#define RESOURCE_TABLE_BASE 0x550FF000
#define VRING_SIZE 0x8000

#define NO_RESOURCE_ENTRIES (1)
#define NO_RESOURCE_ENTRIES (2)
#define RSC_VDEV_FEATURE_NS (1) /* Support name service announcement */
#define MX8MP_RSC_TABLE_VERSION (1)

Expand Down Expand Up @@ -67,7 +68,8 @@ const struct rptun_rsc_s g_mx8mp_rsc_table =

.offset =
{
offsetof(struct rptun_rsc_s, rpmsg_vdev)
offsetof(struct rptun_rsc_s, rpmsg_vdev),
offsetof(struct rptun_rsc_s, carveout)
},

.log_trace =
Expand Down Expand Up @@ -111,6 +113,18 @@ const struct rptun_rsc_s g_mx8mp_rsc_table =
.config =
{
0
},

.carveout =
{
RSC_CARVEOUT,
(uintptr_t)&g_mx8mp_rsc_table + ALIGN_UP(sizeof(struct rptun_rsc_s),
VRING_ALIGN),
FW_RSC_U32_ADDR_ANY,
VRING_SIZE * RL_BUFFER_COUNT * NUM_VRINGS + 0x1000,
0,
0,
"rpmsg_shm"
}
};

Expand Down
22 changes: 17 additions & 5 deletions arch/arm/src/nrf53/nrf53_rptun.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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,
Expand All @@ -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
Expand All @@ -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,
Expand All @@ -216,6 +216,18 @@ 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;

/* Carveout, reserved 0x1000 for vrings 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 +
0x1000;
memcpy(rsc->carveout.name, "rpmsg_shm", 10);
}
else
{
Expand All @@ -227,7 +239,7 @@ nrf53_rptun_get_resource(struct rptun_dev_s *dev)
}
}

return &priv->shmem->rsc;
return &priv->shmem->rsc.rsc_tbl_hdr;
}

/****************************************************************************
Expand Down
22 changes: 17 additions & 5 deletions arch/arm/src/stm32h7/stm32_rptun.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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,
Expand All @@ -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
Expand All @@ -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,
Expand All @@ -220,6 +220,18 @@ stm32_rptun_get_resource(struct rptun_dev_s *dev)
rsc->config.r2h_buf_size = VRING_SIZE;
rsc->config.h2r_buf_size = VRING_SIZE;

/* Carveout, reserved 0x1000 for vrings 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 +
0x1000;
memcpy(rsc->carveout.name, "rpmsg_shm", 10);

priv->shmem->base = (uintptr_t)priv->shmem;
}
else
Expand All @@ -232,7 +244,7 @@ stm32_rptun_get_resource(struct rptun_dev_s *dev)
}
}

return &priv->shmem->rsc;
return &priv->shmem->rsc.rsc_tbl_hdr;
}

/****************************************************************************
Expand Down
22 changes: 17 additions & 5 deletions arch/risc-v/src/k230/k230_rptun.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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;
Expand All @@ -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,
Expand All @@ -215,6 +215,18 @@ static struct rptun_rsc_s *rp_get_resource(struct rptun_dev_s *dev)
rsc->config.r2h_buf_size = VRING_SIZE;
rsc->config.h2r_buf_size = VRING_SIZE;

/* Carveout, reserved 0x1000 for vrings 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 +
0x1000;
memcpy(rsc->carveout.name, "rpmsg_shm", 10);

priv->shmem->base = (uintptr_t)priv->shmem;

rpinfo("shmem:%lx, dev:%p\n", priv->shmem->base, dev);
Expand All @@ -232,7 +244,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)
Expand Down
22 changes: 17 additions & 5 deletions arch/risc-v/src/qemu-rv/qemu_rv_rptun.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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;
Expand All @@ -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,
Expand All @@ -243,6 +243,18 @@ static struct rptun_rsc_s *rp_get_resource(struct rptun_dev_s *dev)
rsc->config.r2h_buf_size = VRING_SIZE;
rsc->config.h2r_buf_size = VRING_SIZE;

/* Carveout, reserved 0x1000 for vrings 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 +
0x1000;
memcpy(rsc->carveout.name, "rpmsg_shm", 10);

priv->shmem->base = (uintptr_t)priv->shmem;
}
else
Expand All @@ -258,7 +270,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)
Expand Down
9 changes: 9 additions & 0 deletions arch/sim/src/sim/posix/sim_hostmisc.c
Original file line number Diff line number Diff line change
Expand Up @@ -232,3 +232,12 @@ int host_waitpid(pid_t pid)
pid = host_uninterruptible_errno(waitpid, pid, &status, 0);
return pid < 0 ? pid : status;
}

/****************************************************************************
* Name: host_kill
****************************************************************************/

int host_kill(pid_t pid, int sig)
{
return host_uninterruptible_errno(kill, pid, sig);
}
1 change: 1 addition & 0 deletions arch/sim/src/sim/sim_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,7 @@ void host_init_cwd(void);
pid_t host_posix_spawn(const char *path,
char *const argv[], char *const envp[]);
int host_waitpid(pid_t pid);
int host_kill(pid_t pid, int sig);

/* sim_hostmemory.c *********************************************************/

Expand Down
4 changes: 0 additions & 4 deletions arch/sim/src/sim/sim_rpmsg_virtio.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,6 @@ sim_rpmsg_virtio_get_resource(struct rpmsg_virtio_lite_s *dev)
struct sim_rpmsg_virtio_dev_s *priv =
container_of(dev, struct sim_rpmsg_virtio_dev_s, dev);
struct rpmsg_virtio_lite_rsc_s *rsc;
struct rpmsg_virtio_lite_cmd_s *cmd;

priv->shmem = host_allocshmem(priv->shmemname, sizeof(*priv->shmem));
if (!priv->shmem)
Expand All @@ -100,7 +99,6 @@ sim_rpmsg_virtio_get_resource(struct rpmsg_virtio_lite_s *dev)
}

rsc = &priv->shmem->rsc;
cmd = RPMSG_VIRTIO_LITE_RSC2CMD(rsc);

if (priv->master)
{
Expand All @@ -118,7 +116,6 @@ sim_rpmsg_virtio_get_resource(struct rpmsg_virtio_lite_s *dev)
rsc->rpmsg_vring1.num = 8;
rsc->config.r2h_buf_size = 2048;
rsc->config.h2r_buf_size = 2048;
cmd->cmd_slave = 0;

priv->shmem->base = (uintptr_t)priv->shmem;
}
Expand All @@ -131,7 +128,6 @@ sim_rpmsg_virtio_get_resource(struct rpmsg_virtio_lite_s *dev)
usleep(1000);
}

cmd->cmd_master = 0;
priv->addrenv[0].va = (uintptr_t)priv->shmem;
priv->addrenv[0].pa = priv->shmem->base;
priv->addrenv[0].size = sizeof(*priv->shmem);
Expand Down
Loading
Loading