[dpdk-dev] Running 32bit secondary with 64bit primary DPDK process

Vijayakumar Muthuvel Manickam mmvijay at gmail.com
Sat Dec 6 08:58:10 CET 2014


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


More information about the dev mailing list