Skip to content

64-bit device address for fw_rsc_vdev_vring #418

Open
@samho5888

Description

@samho5888

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions