[dpdk-dev] [PATCH v2 00/14] Move PCI away from the EAL
Gaëtan Rivet
gaetan.rivet at 6wind.com
Wed Oct 11 16:32:13 CEST 2017
On Wed, Oct 11, 2017 at 03:19:31PM +0100, Doherty, Declan wrote:
> On 18/09/2017 10:31 AM, Gaetan Rivet wrote:
> >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).
> >
>
>
> Hey Gaetan, apologies for the delay in getting back to you on this, I had
> been looking at this but got sidelined onto other issues before usersapce
> and I'm only getting back to it now. I think that while your solution works
> it just highlights the dependency which probably shouldn't be there between
> the cryptodev library and PCI devices. I've had a look, and the functions in
> the cryptodev which you moved don't really provide that much useful
> functionality. I done some testing and completely removed them and just
> update the QAT PMD which is the only crypto PMD which was using them and it
> seems much cleaner to me. I'll push a patch for this change later today and
> it will allow you to drop the patch "cryptodev: move PCI specific helpers to
> drivers/crypto" from this set.
>
> Regards
> Declan
>
>
>
Hi Declan,
All right, seems good from my PoV. I will rebase onto your patch once
it is sent.
> >v2:
> >
> > + Made rte_eal_using_phys_addrs common to both linux and bsd interfaces.
> > + Added documentation of EAL API changes in release note.
> > + Fixed a few rebase-related mistakes.
> > + Fixed parallel build race condition reported by Luca Boccassi.
> > + Grouped together commits breaking compilation:
> >
> > -> pci: introduce PCI lib and bus
> > -> 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
> >
> > Until all of them have been applied, compilation is broken.
> > I am currently wondering whether merging some of them might
> > be sensible.
> >
> > + Not included in this series:
> >
> > Several filesystem-related functions are currently
> > private to the EAL and directly linked. This is not good,
> > but the solution seems to be to have a new lib offering an FS abstraction.
> > This seems an overreach for this patchset and should probably come in a
> > second step.
> >
> >Gaetan Rivet (14):
> > 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
> > 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
> > pci: avoid inlining functions
> > pci: avoid over-complicated macro
> > pci: deprecate misnamed functions
> > doc: add notes on EAL PCI API update
> >
> > app/test-pmd/testpmd.h | 1 +
> > config/common_base | 10 +
> > doc/guides/rel_notes/deprecation.rst | 10 +
> > doc/guides/rel_notes/release_17_11.rst | 28 +
> > drivers/Makefile | 2 +-
> > drivers/bus/Makefile | 2 +
> > drivers/bus/pci/Makefile | 59 ++
> > 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 | 723 +++++++++++++++++++++++
> > 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_memory.c | 6 +
> > lib/librte_eal/bsdapp/eal/eal_pci.c | 670 ---------------------
> > lib/librte_eal/bsdapp/eal/rte_eal_version.map | 16 +-
> > 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_memory.h | 11 +
> > lib/librte_eal/common/include/rte_pci.h | 598 -------------------
> > lib/librte_eal/linuxapp/eal/Makefile | 10 -
> > 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 | 2 +-
> > 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 | 16 +-
> > 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 | 48 ++
> > 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/test_kni.c | 1 +
> > test/test/virtual_pmd.c | 1 +
> > 90 files changed, 5603 insertions(+), 4951 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_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
> >
>
--
Gaëtan Rivet
6WIND
More information about the dev
mailing list