Hi, I have a patch that enables 32bit secondary DPDK processes to attach with 64bit primary DPDK process and share the mempool and ring datastructures. I developed this patch to enable our product(from Brocade) which uses a 32bit userspace network stack to be able to work with PMDs like ivshmem and some proprietary PMDs that are available only for 64bit version of the primary process.
To achieve this, 1) I changed the mmap() of hugepages in primary process to use MAP_32BIT flag so that all hugepages are mapped within the 4GB virtual address limit and 2) Added a dummy pad_pointer member variable next to each pointer member within the shared datastructures like struct rte_ring, struct rte_mempool, struct rte_pktmbuf, TAILQ_HEAD, struct hugepage_file that both primary and secondary share. I have been able to successfully run a 64bit primary process with multiple 32bit secondary processes doing packet processing with the pipeline model. I would like to know if this compatibility support is of interest to the community and if so I can submit my patch. Thanks, Vijay