[dpdk-dev] [PATCH v3 00/20] Add VFIO support to DPDK
Anatoly Burakov
anatoly.burakov at intel.com
Wed May 28 16:37:57 CEST 2014
This patchset adds support for using VFIO instead of IGB_UIO to
map the device BARs.
VFIO is a kernel 3.6+ driver allowing secure DMA from userspace
by means of using IOMMU instead of working directly with physical
memory like igb_uio does.
Short summary:
* Adding support for VFIO in EAL PCI code
* Adding new command-line parameter for VFIO interrupt type
* Adding support for VFIO in setup.sh
* Renaming igb_uio_bind to dpdk_nic_bind and adding support for
VFIO there
* Removing PCI ID list from igb_uio, effectively making it another
generic PCI driver similar to pci_stub, vfio-pci et al
* Adding autotest for VFIO interrupt types
* Making igb_uio and VFIO compilation optional
v3 fixes:
* Fixed various checkpatch.pl issues
* Added MSI interrupt support
* Added an option to automatically determine interrupt type
* Fixed various issues of commit atomicity
Anatoly Burakov (20):
pci: move open() out of pci_map_resource, rename structs
pci: move uio mapping code to a separate file
pci: fixing errors in a previous commit found by checkpatch
pci: distinguish between legitimate failures and non-fatal errors
pci: Rename RTE_PCI_DRV_NEED_IGB_UIO to RTE_PCI_DRV_NEED_MAPPING
igb_uio: make igb_uio compilation optional
igb_uio: Moved interrupt type out of igb_uio
vfio: add support for VFIO in Linuxapp targets
vfio: add VFIO header
interrupts: Add support for VFIO interrupts
eal: remove -Wno-return-type for non-existent eal_hpet.c
vfio: create mapping code for VFIO
vfio: add multiprocess support.
pci: enable VFIO device binding
eal: added support for selecting VFIO interrupt type from EAL
command-line
eal: make --no-huge use mmap instead of malloc
test app: adding unit tests for VFIO EAL command-line parameter
igb_uio: Removed PCI ID table from igb_uio
binding script: Renamed igb_uio_bind to dpdk_nic_bind
setup script: adding support for VFIO to setup.sh
app/test/test_eal_flags.c | 36 +
app/test/test_pci.c | 4 +-
config/defconfig_i686-default-linuxapp-gcc | 2 +
config/defconfig_i686-default-linuxapp-icc | 2 +
config/defconfig_x86_64-default-linuxapp-gcc | 2 +
config/defconfig_x86_64-default-linuxapp-icc | 2 +
lib/librte_eal/bsdapp/eal/eal_pci.c | 2 +-
lib/librte_eal/common/Makefile | 1 +
lib/librte_eal/common/eal_common_pci.c | 16 +-
lib/librte_eal/common/include/rte_pci.h | 5 +-
.../common/include/rte_pci_dev_feature_defs.h | 46 ++
.../common/include/rte_pci_dev_features.h | 44 ++
lib/librte_eal/linuxapp/Makefile | 2 +
lib/librte_eal/linuxapp/eal/Makefile | 5 +-
lib/librte_eal/linuxapp/eal/eal.c | 35 +
lib/librte_eal/linuxapp/eal/eal_interrupts.c | 285 +++++++-
lib/librte_eal/linuxapp/eal/eal_memory.c | 8 +-
lib/librte_eal/linuxapp/eal/eal_pci.c | 473 ++-----------
lib/librte_eal/linuxapp/eal/eal_pci_uio.c | 403 +++++++++++
lib/librte_eal/linuxapp/eal/eal_pci_vfio.c | 781 +++++++++++++++++++++
lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c | 395 +++++++++++
.../linuxapp/eal/include/eal_internal_cfg.h | 3 +
lib/librte_eal/linuxapp/eal/include/eal_pci_init.h | 116 +++
lib/librte_eal/linuxapp/eal/include/eal_vfio.h | 55 ++
.../linuxapp/eal/include/exec-env/rte_interrupts.h | 4 +
lib/librte_eal/linuxapp/igb_uio/igb_uio.c | 69 +-
lib/librte_pmd_e1000/em_ethdev.c | 2 +-
lib/librte_pmd_e1000/igb_ethdev.c | 4 +-
lib/librte_pmd_ixgbe/ixgbe_ethdev.c | 4 +-
lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c | 2 +-
tools/{igb_uio_bind.py => dpdk_nic_bind.py} | 157 +++--
tools/setup.sh | 172 ++++-
32 files changed, 2550 insertions(+), 587 deletions(-)
create mode 100644 lib/librte_eal/common/include/rte_pci_dev_feature_defs.h
create mode 100644 lib/librte_eal/common/include/rte_pci_dev_features.h
create mode 100644 lib/librte_eal/linuxapp/eal/eal_pci_uio.c
create mode 100644 lib/librte_eal/linuxapp/eal/eal_pci_vfio.c
create mode 100644 lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c
create mode 100644 lib/librte_eal/linuxapp/eal/include/eal_pci_init.h
create mode 100644 lib/librte_eal/linuxapp/eal/include/eal_vfio.h
rename tools/{igb_uio_bind.py => dpdk_nic_bind.py} (83%)
--
1.8.1.4
More information about the dev
mailing list