From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f44.google.com (mail-wm0-f44.google.com [74.125.82.44]) by dpdk.org (Postfix) with ESMTP id 98C80237 for ; Thu, 12 Oct 2017 10:17:33 +0200 (CEST) Received: by mail-wm0-f44.google.com with SMTP id u138so10815530wmu.5 for ; Thu, 12 Oct 2017 01:17:33 -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=U9vFVUw9DCmKUY/d1iFhT69KmtRjIZtQYEcj034C/oM=; b=hO6c0WnFshjBHnJiNQK0TqBGgHyYsrZSI09f6hFcxFGQ5i2/bdYlXuu5N3ipY0HE1I 6x8G1jTWjnQ8ZC2Q03Ta4e7LQOFQFcVVwu882yQFFqOHzyD/0JZQ4k9kzs2mtyi0GwRV 8v5av8y7/UibOu8Pk+kiUDrlS5iCSfpGoOiAtwIEsTR7JHFrsmpSYweKVkee4GVdc59e 7g+YtLQo+rwi2ZuzUN6/qfXgBvm728eRRNiAQ8Pc9//3Z1OvlDWQA9lYjW89en3WalgD LU0L6913+/jN7Qd5z0khGLPQBdf+2o2KpUfI45rZpdXsDGfickeG9CPkxNMXQHJYTe+o 8ogg== 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=U9vFVUw9DCmKUY/d1iFhT69KmtRjIZtQYEcj034C/oM=; b=InHFVI2Pth6BQ42m5S+OEilKKF/ytqSwaYW1U7OjzZb/oG3mQjqXi3+NU2mBnUdpPi ZJ6b6CgcroJedXOHjOmV6YkBry80e7qdqvDRDd85H2nZXQ/5jkiJoYLOwCibk0/h3DbQ KIQuoCi8EW70V2zB+5tu6R/FBtD7GrEQ0FBeNGZ4QQ999UACnGgfyLVDURliPfYAe90u OmDBU1BLsXb3Yf8QpXNHALWE6cbQi7Xt7csbxYRmZxNAeIApHp1qe47P8fwEIvEkKRnW aWrpwZMAnYC6fVpIKfpYQPWCxQEsLmXrIxHzaFK9aeaOEMx7Z10xxL00nqh7TGZ0yKgs 5NPA== X-Gm-Message-State: AMCzsaXAPj6OKnuepOVvLq+an3RDl6Glynv8KGL52fSdZ9rB26NnQ2BF aY2FYtub4beaJCINKK/fWTcVYvQE X-Google-Smtp-Source: AOwi7QAZ1LMHLsGtfszUQwvtUPq6UHYD2bnmXGZDNivuJbuw/z1RpVG5DBlg07HlBZA0W4YMXhCD2w== X-Received: by 10.28.211.66 with SMTP id k63mr1080070wmg.33.1507796252621; Thu, 12 Oct 2017 01:17:32 -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 25sm16711227wrv.8.2017.10.12.01.17.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 12 Oct 2017 01:17:31 -0700 (PDT) From: Gaetan Rivet To: dev@dpdk.org Cc: Gaetan Rivet Date: Thu, 12 Oct 2017 10:17:00 +0200 Message-Id: X-Mailer: git-send-email 2.1.4 In-Reply-To: References: Subject: [dpdk-dev] [PATCH v4 00/16] 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: Thu, 12 Oct 2017 08:17:33 -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. After review from Declan, he proposed to submit a patch removing this dependency. Once this patch is submitted, the relevant commit will be dropped from this patchset. 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. v3: + Fixed .map versioning + merged one commit breaking the build into the main commit moving code around. Other such commits are still present, as they only break specific subsystems (lib, drivers, apps, cryptodev). Merging them all within the one main commit does not seem right. As such, build is still broken from * pci: introduce PCI lib and bus until * cryptodev: move PCI specific helpers to drivers/crypto v4: + Rebased unto master, with new PCI functionalities integrated. + Removed the exposition of private EAL functions. While one commit did deal with this for one function, the issue is more widespread and should be fixed in a more generic way. + Introduced new PCI address parsing function, deprecating the old ones. + Fix conflict with bonding PMD regarding pci_addr_cmp function name. Compilation is still broken from * pci: introduce PCI lib and bus until * net/bonding: use local prefix for local function Gaetan Rivet (16): eal: include debug header in bus source ethdev: remove useless PCI dependency pci: introduce PCI lib and bus lib: include PCI bus header drivers: include PCI bus header test: include PCI bus header app/testpmd: include PCI bus header cryptodev: move PCI specific helpers to drivers/crypto net/bonding: use local prefix for local function pci: avoid inlining functions pci: avoid over-complicated macro pci: deprecate misnamed functions pci: introduce PCI address parsing function pci: make specialized parsing functions private bus/pci: use new PCI addr parsing function 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/bus/Makefile | 2 + drivers/bus/pci/Makefile | 59 ++ drivers/bus/pci/bsd/Makefile | 32 + drivers/bus/pci/bsd/pci.c | 681 +++++++++++++++++++ drivers/bus/pci/include/rte_bus_pci.h | 415 ++++++++++++ drivers/bus/pci/linux/Makefile | 37 + drivers/bus/pci/linux/pci.c | 821 +++++++++++++++++++++++ drivers/bus/pci/linux/pci_init.h | 97 +++ drivers/bus/pci/linux/pci_uio.c | 568 ++++++++++++++++ drivers/bus/pci/linux/pci_vfio.c | 757 +++++++++++++++++++++ drivers/bus/pci/linux/vfio_mp_sync.c | 426 ++++++++++++ drivers/bus/pci/pci_common.c | 535 +++++++++++++++ drivers/bus/pci/pci_common_uio.c | 235 +++++++ drivers/bus/pci/private.h | 174 +++++ drivers/bus/pci/rte_bus_pci_version.map | 21 + 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/mempool/octeontx/octeontx_fpavf.c | 2 +- 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 | 5 +- 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/mlx4/mlx4_ethdev.c | 2 +- drivers/net/mlx5/mlx5.c | 1 + drivers/net/mlx5/mlx5_ethdev.c | 1 + drivers/net/nfp/nfp_nfpu.c | 2 +- drivers/net/nfp/nfp_nfpu.h | 2 +- drivers/net/octeontx/base/octeontx_pkivf.c | 2 +- drivers/net/octeontx/base/octeontx_pkovf.c | 2 +- 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 | 680 ------------------- lib/librte_eal/bsdapp/eal/rte_eal_version.map | 15 - lib/librte_eal/common/Makefile | 2 +- lib/librte_eal/common/eal_common_bus.c | 1 + lib/librte_eal/common/eal_common_pci.c | 573 ---------------- lib/librte_eal/common/eal_common_pci_uio.c | 233 ------- lib/librte_eal/common/eal_private.h | 132 ---- lib/librte_eal/common/include/rte_pci.h | 633 ----------------- 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_pci.c | 818 ---------------------- 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 | 756 --------------------- lib/librte_eal/linuxapp/eal/eal_vfio_mp_sync.c | 425 ------------ lib/librte_eal/linuxapp/eal/rte_eal_version.map | 15 - 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 | 279 ++++++++ lib/librte_pci/rte_pci.c | 220 ++++++ lib/librte_pci/rte_pci_version.map | 15 + mk/rte.app.mk | 3 + test/test/test_kni.c | 1 + test/test/virtual_pmd.c | 1 + 92 files changed, 5804 insertions(+), 5163 deletions(-) create mode 100644 drivers/bus/pci/Makefile create mode 100644 drivers/bus/pci/bsd/Makefile create mode 100644 drivers/bus/pci/bsd/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/pci.c create mode 100644 drivers/bus/pci/linux/pci_init.h create mode 100644 drivers/bus/pci/linux/pci_uio.c create mode 100644 drivers/bus/pci/linux/pci_vfio.c create mode 100644 drivers/bus/pci/linux/vfio_mp_sync.c create mode 100644 drivers/bus/pci/pci_common.c create mode 100644 drivers/bus/pci/pci_common_uio.c create mode 100644 drivers/bus/pci/private.h create mode 100644 drivers/bus/pci/rte_bus_pci_version.map 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