Open
Description
The device-address is uint32_t in
METAL_PACKED_BEGIN
struct fw_rsc_vdev_vring {
uint32_t da;
uint32_t align;
uint32_t num;
uint32_t notifyid;
uint32_t reserved;
} METAL_PACKED_END;
However, in remoteproc_create_virtio()
for (i = 0; i < num_vrings; i++) {
struct fw_rsc_vdev_vring *vring_rsc;
metal_phys_addr_t da;
unsigned int num_descs, align;
struct metal_io_region *io;
void *va;
size_t size;
int ret;
vring_rsc = &vdev_rsc->vring[i];
notifyid = vring_rsc->notifyid;
da = vring_rsc->da;
num_descs = vring_rsc->num;
align = vring_rsc->align;
size = vring_size(num_descs, align);
va = remoteproc_mmap(rproc, NULL, &da, size, 0, &io);
da is in metal_phys_addr_t type, which typedef as unsigned long
In other words, for 64-bit application,
da
would be constrain for memory usage.
In Linux, it can be fixed by using rproc_mem_entry_init() with callback.
Is it possible to support 64-bits for open-amp?
Thanks.