Linux Driver Interop with DPDK DriverΒΆ
QDMA supports 4 PFs and 252 VFs. Each PF can be binded to a different driver or each VF can be mapped to a VM and user can load the required driver in VM based on the required use case. Xilinx provides two Linux based QDMA reference drivers (Linux Kernel driver and DPDK user space driver). These two drivers are inter-operable in terms of mailbox communication for VF configuration and management. Hence, PFs and VFs can be binded independently to any of these two drivers.
An example use case is depicted in below figure where
- 2 PFs are attached to Linux driver, each PF creating 1 VF
- 2 PFs are attached to DPDK driver, each PF creating 1 VF
- 2 VMs are created where VF created from Linux kernel driver binded PF is attached to DPDK driver and viceversa.
To achieve this setup,
- remove the [Vendor-ID:Device-ID] tuple from pci table for the required functions to be binded with DPDK in linux-kernel/drv/pci_ids.h
- Undefine
ENABLE_INIT_CTXT_MEMORY
inqdma_access.c
for the driver that is loaded last