From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gaetan.rivet@6wind.com>
Received: from mail-wr0-f169.google.com (mail-wr0-f169.google.com
 [209.85.128.169]) by dpdk.org (Postfix) with ESMTP id 06F8B7CFC
 for <dev@dpdk.org>; Fri, 25 Aug 2017 11:04:50 +0200 (CEST)
Received: by mail-wr0-f169.google.com with SMTP id k46so1128911wre.0
 for <dev@dpdk.org>; Fri, 25 Aug 2017 02:04:50 -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;
 bh=/sbfOtcWltXv9RxRWopjVkzRPcUK5I3Kl3uSVxJtdV4=;
 b=yOnTpSmBUKtZAz2hL5qjNk41zGD/ZoCwutW1Q2bM4ybbar1wWpwP3voq9ViUORYZ5r
 RHgnyIcA5e8VWaAYsHirFZOy9nD/nK+JnhAx3vk4qNE87nEyCKwOLHBOlXFJ6b5imsoF
 VuH2f0nfs1m+LlSEH1/gKxIIioJWGPYQ7SxQW6HGmNZ7PhcREfO87RvlEje7wsanDgvK
 vGF+7ybx1Ikjo6nCK40rZaQ8ahRe8zt36yqkKXT8DH5x1j3NyO6aVvIjZHheVQS6XAE4
 x5PXZXhQuNF4c0QAuOYhDpKPTOhzqaQHgUkjek6DuXyXwyrzB1+Nn7vHQmEn6DW1G+HK
 l+NQ==
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;
 bh=/sbfOtcWltXv9RxRWopjVkzRPcUK5I3Kl3uSVxJtdV4=;
 b=KDkkHlbCGDg3VdkHFTtPyNNSbUda31B7/mLf0VDt7a3lRitMTstykkRJ1dH6qsk2uv
 W44hY4sDDNB/fKeP3sE7lWWnYmqmZrULzER8qLxSmIKs5YD02PTkKl4YMpb/7iF9Rexk
 T7J2E1t17+qKey/yKcIEvNfIIDNs16AXUtHNFviNNpWWJKacQccCn5tqC26ec21iwIpm
 Wn2DVjlu17GGyzOeTp7AJfgh03SA0MZNtgkzyMx7kxpLvFAjghkEhdinCYL93GpwdB/q
 nRrBgDibroIBLcF2SCXhi6FLAZUnbwPWGPnadgpTUluM+N2leXTwtEtgrUEoQiOm6smf
 Mozg==
X-Gm-Message-State: AHYfb5gmGckSA6JVn/zdzB3U6e373bKnJx5AVA3JQPn7xAYlFkZQYINF
 JXdYI3shPvqqNWrUW98=
X-Received: by 10.223.158.200 with SMTP id b8mr5726998wrf.234.1503651890167;
 Fri, 25 Aug 2017 02:04:50 -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 q141sm782350wmb.11.2017.08.25.02.04.49
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);
 Fri, 25 Aug 2017 02:04:49 -0700 (PDT)
From: Gaetan Rivet <gaetan.rivet@6wind.com>
To: dev@dpdk.org
Cc: Gaetan Rivet <gaetan.rivet@6wind.com>
Date: Fri, 25 Aug 2017 11:04:22 +0200
Message-Id: <cover.1503651392.git.gaetan.rivet@6wind.com>
X-Mailer: git-send-email 2.1.4
Subject: [dpdk-dev] [PATCH 00/13] 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 <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Fri, 25 Aug 2017 09:04:51 -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).

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