[dpdk-dev] [PATCH 00/13] Move PCI away from the EAL
Gaetan Rivet
gaetan.rivet at 6wind.com
Fri Aug 25 11:04:22 CEST 2017
Hi all,
Here is a new version of the PCI bus move out of the EAL.
The EAL PCI implementation is divided in two parts:
- librte_pci: library offering helpers to handle PCI objects
- librte_bus_pci: bus driver for PCI devices
This allows other libraries / tools to use PCI elements (location, mappings,
parsing operations, etc) without forcing a dependency on a bus driver.
The latter should not have to export helpers that others might need. It
is focused on defining the rte_pci_device, rte_pci_driver objects and
their handling.
The cryptodev library has hard dependencies on rte_pci_devices (used by
generic probe function). Other similar libs (ether and eventdev) avoided
the issue by inlining such functions and expecting users to include the
relevant headers once the PCI bus has already been built.
Declan, I proposed a solution that would avoid inlining those functions,
which does not feel right. Let me know what you think of it or if you
think of a better solution. I think it would be best to have cryptodev
completely independent from PCI / vdev as far as the lib in concerned
(the vdev bus will move as well).
TODO:
- Verify that the lib / bus divide is correct.
- Expose additional EAL functions the PCI bus is dependent upon.
The PCI bus is currently dirty. It should be fixed.
- rte_eal_using_phys_addrs is currently linux-only, the symbol will be
exposed on BSD as well (even if not implemented). This remark has
been made already last release, but wasn't properly addressed.
Gaetan Rivet (13):
eal: expose rte_eal_using_phys_addrs
ethdev: remove useless PCI dependency
bus: properly include rte_debug
eal: remove references to PCI
pci: introduce PCI lib and bus
pci: avoid inlining functions
pci: avoid over-complicated macro
pci: deprecate misnamed functions
lib: include rte_bus_pci
drivers: include rte_bus_pci
test: include rte_bus_pci
app/testpmd: include rte_bus_pci
cryptodev: move PCI specific helpers to drivers/crypto
app/test-pmd/testpmd.h | 1 +
config/common_base | 15 +
doc/guides/rel_notes/deprecation.rst | 10 +
drivers/Makefile | 2 +-
drivers/bus/Makefile | 2 +
drivers/bus/pci/Makefile | 60 ++
drivers/bus/pci/bsd/Makefile | 32 +
drivers/bus/pci/bsd/rte_pci.c | 671 +++++++++++++++++++++
drivers/bus/pci/include/rte_bus_pci.h | 387 ++++++++++++
drivers/bus/pci/linux/Makefile | 37 ++
drivers/bus/pci/linux/rte_pci.c | 724 +++++++++++++++++++++++
drivers/bus/pci/linux/rte_pci_init.h | 97 +++
drivers/bus/pci/linux/rte_pci_uio.c | 568 ++++++++++++++++++
drivers/bus/pci/linux/rte_pci_vfio.c | 675 +++++++++++++++++++++
drivers/bus/pci/linux/rte_vfio_mp_sync.c | 425 +++++++++++++
drivers/bus/pci/private.h | 174 ++++++
drivers/bus/pci/rte_bus_pci_version.map | 21 +
drivers/bus/pci/rte_pci_common.c | 543 +++++++++++++++++
drivers/bus/pci/rte_pci_common_uio.c | 235 ++++++++
drivers/crypto/Makefile | 4 +-
drivers/crypto/pci/Makefile | 52 ++
drivers/crypto/pci/rte_cryptodev_pci.c | 128 ++++
drivers/crypto/pci/rte_cryptodev_pci.h | 94 +++
drivers/crypto/pci/rte_cryptodev_pci_version.map | 7 +
drivers/crypto/qat/qat_qp.c | 1 +
drivers/event/octeontx/ssovf_probe.c | 1 +
drivers/net/ark/ark_ethdev.c | 1 +
drivers/net/avp/avp_ethdev.c | 2 +
drivers/net/bnxt/bnxt.h | 1 +
drivers/net/bonding/rte_eth_bond_args.c | 1 +
drivers/net/cxgbe/base/adapter.h | 1 +
drivers/net/cxgbe/cxgbe_ethdev.c | 1 +
drivers/net/e1000/em_ethdev.c | 1 +
drivers/net/e1000/igb_ethdev.c | 1 +
drivers/net/e1000/igb_pf.c | 1 +
drivers/net/ena/ena_ethdev.h | 1 +
drivers/net/enic/base/vnic_dev.h | 4 +-
drivers/net/enic/enic_ethdev.c | 1 +
drivers/net/enic/enic_main.c | 1 +
drivers/net/i40e/i40e_ethdev.c | 1 +
drivers/net/i40e/i40e_ethdev_vf.c | 1 +
drivers/net/ixgbe/ixgbe_ethdev.c | 1 +
drivers/net/ixgbe/ixgbe_ethdev.h | 1 +
drivers/net/mlx5/mlx5.c | 1 +
drivers/net/mlx5/mlx5_ethdev.c | 1 +
drivers/net/sfc/sfc.h | 1 +
drivers/net/sfc/sfc_ethdev.c | 1 +
drivers/net/thunderx/nicvf_ethdev.c | 1 +
drivers/net/virtio/virtio_ethdev.c | 1 +
drivers/net/virtio/virtio_pci.h | 1 +
drivers/net/vmxnet3/vmxnet3_ethdev.c | 1 +
lib/Makefile | 2 +
lib/librte_cryptodev/Makefile | 1 -
lib/librte_cryptodev/rte_cryptodev_pci.h | 92 ---
lib/librte_cryptodev/rte_cryptodev_pmd.c | 94 ---
lib/librte_cryptodev/rte_cryptodev_version.map | 2 -
lib/librte_eal/bsdapp/eal/Makefile | 3 -
lib/librte_eal/bsdapp/eal/eal.c | 1 -
lib/librte_eal/bsdapp/eal/eal_pci.c | 670 ---------------------
lib/librte_eal/common/Makefile | 2 +-
lib/librte_eal/common/eal_common_bus.c | 1 +
lib/librte_eal/common/eal_common_pci.c | 580 ------------------
lib/librte_eal/common/eal_common_pci_uio.c | 233 --------
lib/librte_eal/common/eal_private.h | 143 -----
lib/librte_eal/common/include/rte_pci.h | 598 -------------------
lib/librte_eal/linuxapp/eal/Makefile | 12 +-
lib/librte_eal/linuxapp/eal/eal.c | 1 -
lib/librte_eal/linuxapp/eal/eal_interrupts.c | 1 -
lib/librte_eal/linuxapp/eal/eal_memory.c | 3 +-
lib/librte_eal/linuxapp/eal/eal_pci.c | 722 ----------------------
lib/librte_eal/linuxapp/eal/eal_pci_init.h | 97 ---
lib/librte_eal/linuxapp/eal/eal_pci_uio.c | 567 ------------------
lib/librte_eal/linuxapp/eal/eal_pci_vfio.c | 674 ---------------------
lib/librte_eal/linuxapp/eal/eal_vfio_mp_sync.c | 424 -------------
lib/librte_eal/linuxapp/eal/rte_eal_version.map | 1 +
lib/librte_eal/linuxapp/eal/rte_memory_linux.h | 64 ++
lib/librte_ether/rte_ethdev.c | 1 -
lib/librte_ether/rte_ethdev.h | 2 -
lib/librte_ether/rte_ethdev_pci.h | 1 +
lib/librte_eventdev/rte_eventdev_pmd_pci.h | 1 +
lib/librte_pci/Makefile | 49 ++
lib/librte_pci/include/rte_pci.h | 285 +++++++++
lib/librte_pci/rte_pci.c | 210 +++++++
lib/librte_pci/rte_pci_version.map | 16 +
mk/rte.app.mk | 3 +
test/test/virtual_pmd.c | 1 +
86 files changed, 5631 insertions(+), 4921 deletions(-)
create mode 100644 drivers/bus/pci/Makefile
create mode 100644 drivers/bus/pci/bsd/Makefile
create mode 100644 drivers/bus/pci/bsd/rte_pci.c
create mode 100644 drivers/bus/pci/include/rte_bus_pci.h
create mode 100644 drivers/bus/pci/linux/Makefile
create mode 100644 drivers/bus/pci/linux/rte_pci.c
create mode 100644 drivers/bus/pci/linux/rte_pci_init.h
create mode 100644 drivers/bus/pci/linux/rte_pci_uio.c
create mode 100644 drivers/bus/pci/linux/rte_pci_vfio.c
create mode 100644 drivers/bus/pci/linux/rte_vfio_mp_sync.c
create mode 100644 drivers/bus/pci/private.h
create mode 100644 drivers/bus/pci/rte_bus_pci_version.map
create mode 100644 drivers/bus/pci/rte_pci_common.c
create mode 100644 drivers/bus/pci/rte_pci_common_uio.c
create mode 100644 drivers/crypto/pci/Makefile
create mode 100644 drivers/crypto/pci/rte_cryptodev_pci.c
create mode 100644 drivers/crypto/pci/rte_cryptodev_pci.h
create mode 100644 drivers/crypto/pci/rte_cryptodev_pci_version.map
delete mode 100644 lib/librte_cryptodev/rte_cryptodev_pci.h
delete mode 100644 lib/librte_eal/bsdapp/eal/eal_pci.c
delete mode 100644 lib/librte_eal/common/eal_common_pci.c
delete mode 100644 lib/librte_eal/common/eal_common_pci_uio.c
delete mode 100644 lib/librte_eal/common/include/rte_pci.h
delete mode 100644 lib/librte_eal/linuxapp/eal/eal_pci.c
delete mode 100644 lib/librte_eal/linuxapp/eal/eal_pci_init.h
delete mode 100644 lib/librte_eal/linuxapp/eal/eal_pci_uio.c
delete mode 100644 lib/librte_eal/linuxapp/eal/eal_pci_vfio.c
delete mode 100644 lib/librte_eal/linuxapp/eal/eal_vfio_mp_sync.c
create mode 100644 lib/librte_eal/linuxapp/eal/rte_memory_linux.h
create mode 100644 lib/librte_pci/Makefile
create mode 100644 lib/librte_pci/include/rte_pci.h
create mode 100644 lib/librte_pci/rte_pci.c
create mode 100644 lib/librte_pci/rte_pci_version.map
--
2.1.4
More information about the dev
mailing list