From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-f181.google.com (mail-wr0-f181.google.com [209.85.128.181]) by dpdk.org (Postfix) with ESMTP id 396D47CE2 for ; Mon, 18 Sep 2017 11:32:04 +0200 (CEST) Received: by mail-wr0-f181.google.com with SMTP id g29so5677750wrg.11 for ; Mon, 18 Sep 2017 02:32:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=FahGGOhmlm38qrFevJCiRxA2ahdCcSKE3AH1ASK+pEY=; b=jaRCP+AeKbEjh30YssW5wmZH+Gsnb2Rol8K5OKe4BDMuNT9WE4r7ITLABnEQf/LOHj ngnDBZAwPW2Zt7S5NQdxbrCHJ7N3jh8bThxCMCELqdtl4ZLiLIrkMgJpNGRsrg6rkf/u ffP8nqiq7M3jfazcFRKmjEW2bv/W1XNLqfIeLi14dBz89kYqc1MH62kgdfyWKilhVaIH B5qAYM5O2NvIizg2CF1mWmqn8XuI+GDRJwcYsU/JFVooEiddVBHXJF4SLDrprU2Yzu3g GzjQE0z1UTOLvWZ/GeiNyramUzZ7doBRJ//tCOf7QPhQI11r/+KHJ/eCZd2zhBWH6/Ds lkbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=FahGGOhmlm38qrFevJCiRxA2ahdCcSKE3AH1ASK+pEY=; b=KwBlSm4lz+8ACjbQEGMthxk4tyCwOGDmVQ1kKSTgg/Nl3Upss4hTjvNCAse79DdwbJ ynxQTrM78dWIUyXQCTINAd9EOhaxZsaCj3aTYSGhxc4zQcuJR7XjkYDtQ1A0G9RIi3xV CRaKKIvFnIyXDkhekUJ4+9uh0CtAmntU3X7pRvRw6ehNM5nHvEyPjFF2f0d2PdztN18P jQWPh7iUZQxUNCo+gy2JjUsHkIbX87ghNRjF0laL1hVK8WpMfrb6vAjC1Y/octqMcbbj x7886ibp1b3MXTRQvNZHVpBTY5mrbNPvOJBIXfQmeWL2PU3cvkzWTRyGe/SFd8QDOl0E H00g== X-Gm-Message-State: AHPjjUjcMVUJ6mgUCexsUBzbkg0jg/KQ7UK53qY0Xlwm8PJf6PsbL0/V 1z50lpFPF1XX/slN1h8= X-Google-Smtp-Source: ADKCNb7kLwzvadkcucute1vRHjl4XR7UAq1TAz9Zm0yCbds1cqbEj/659+9jllCs5e/8PNxlItllXA== X-Received: by 10.223.182.166 with SMTP id j38mr30154600wre.55.1505727123109; Mon, 18 Sep 2017 02:32:03 -0700 (PDT) Received: from bidouze.dev.6wind.com (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id f89sm6416859wmh.18.2017.09.18.02.32.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 18 Sep 2017 02:32:02 -0700 (PDT) From: Gaetan Rivet To: dev@dpdk.org Cc: Gaetan Rivet , Declan Doherty Date: Mon, 18 Sep 2017 11:31:34 +0200 Message-Id: X-Mailer: git-send-email 2.1.4 In-Reply-To: References: Subject: [dpdk-dev] [PATCH v2 00/14] Move PCI away from the EAL X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Sep 2017 09:32:04 -0000 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). 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 -- 2.1.4