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