DPDK patches and discussions
 help / color / mirror / Atom feed
From: David Marchand <david.marchand@redhat.com>
To: dev@dpdk.org
Cc: thomas@monjalon.net, bruce.richardson@intel.com,
	Ray Kinsella <mdr@ashroe.eu>, Parav Pandit <parav@nvidia.com>,
	Xueming Li <xuemingl@nvidia.com>,
	Hemant Agrawal <hemant.agrawal@nxp.com>,
	Sachin Saxena <sachin.saxena@oss.nxp.com>,
	Rosen Xu <rosen.xu@intel.com>,
	Anatoly Burakov <anatoly.burakov@intel.com>,
	Stephen Hemminger <sthemmin@microsoft.com>,
	Long Li <longli@microsoft.com>, Matan Azrad <matan@nvidia.com>,
	Viacheslav Ovsiienko <viacheslavo@nvidia.com>,
	Kevin Laatz <kevin.laatz@intel.com>,
	Chas Williams <chas3@att.com>,
	"Min Hu (Connor)" <humin29@huawei.com>,
	Gaetan Rivet <grive@u256.net>,
	Maxime Coquelin <maxime.coquelin@redhat.com>,
	Chenbo Xia <chenbo.xia@intel.com>,
	Ferruh Yigit <ferruh.yigit@xilinx.com>,
	Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,
	Reshma Pattan <reshma.pattan@intel.com>
Subject: [PATCH v4 21/27] bus: hide bus object
Date: Fri, 26 Aug 2022 14:42:02 +0200	[thread overview]
Message-ID: <20220826124208.671400-22-david.marchand@redhat.com> (raw)
In-Reply-To: <20220826124208.671400-1-david.marchand@redhat.com>

Make rte_bus opaque for non internal users.
This will make extending this object possible without breaking the ABI.

Introduce a new driver header and move rte_bus definition and helpers.
Update drivers and library to use the internal header.

Some applications may have been dereferencing rte_bus objects, mark
this object's accessors as stable.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
Changes since RFC v2:
- updated release notes,
- marked accessors as stable,

Changes since RFC v1:
- update all existing users of the public header to use the internal one,

---
 app/test/test_devargs.c                  |   2 +-
 app/test/test_vdev.c                     |   2 +-
 doc/guides/rel_notes/deprecation.rst     |   6 -
 doc/guides/rel_notes/release_22_11.rst   |   6 +
 drivers/bus/auxiliary/auxiliary_common.c |   2 +-
 drivers/bus/auxiliary/auxiliary_params.c |   2 +-
 drivers/bus/auxiliary/private.h          |   2 +-
 drivers/bus/dpaa/dpaa_bus.c              |   2 +-
 drivers/bus/fslmc/fslmc_bus.c            |   2 +-
 drivers/bus/fslmc/private.h              |   2 +-
 drivers/bus/ifpga/ifpga_bus.c            |   2 +-
 drivers/bus/pci/linux/pci_vfio.c         |   2 +-
 drivers/bus/pci/pci_common.c             |   2 +-
 drivers/bus/pci/pci_params.c             |   2 +-
 drivers/bus/pci/private.h                |   2 +-
 drivers/bus/vdev/vdev.c                  |   2 +-
 drivers/bus/vmbus/private.h              |   2 +-
 drivers/common/mlx5/mlx5_common_pci.c    |   2 +-
 drivers/dma/idxd/idxd_bus.c              |   2 +-
 drivers/net/bonding/rte_eth_bond_args.c  |   2 +-
 drivers/net/failsafe/failsafe.c          |   2 +-
 drivers/net/failsafe/failsafe_eal.c      |   2 +-
 drivers/net/mlx5/linux/mlx5_os.c         |   2 +-
 drivers/net/netvsc/hn_ethdev.c           |   2 +-
 drivers/net/vdev_netvsc/vdev_netvsc.c    |   2 +-
 drivers/net/virtio/virtio_pci.c          |   2 +-
 drivers/raw/ioat/idxd_bus.c              |   2 +-
 lib/eal/common/eal_common_bus.c          |   2 +-
 lib/eal/common/eal_common_dev.c          |   2 +-
 lib/eal/common/eal_common_devargs.c      |   2 +-
 lib/eal/common/hotplug_mp.c              |   2 +-
 lib/eal/include/bus_driver.h             | 296 +++++++++++++++++++++++
 lib/eal/include/meson.build              |   4 +
 lib/eal/include/rte_bus.h                | 278 +--------------------
 lib/eal/linux/eal_dev.c                  |   2 +-
 lib/eal/version.map                      |   8 +-
 lib/ethdev/rte_ethdev.c                  |   2 +-
 lib/pcapng/rte_pcapng.c                  |   2 +-
 38 files changed, 343 insertions(+), 319 deletions(-)
 create mode 100644 lib/eal/include/bus_driver.h

diff --git a/app/test/test_devargs.c b/app/test/test_devargs.c
index ac5bc34c18..0a4c34a1ad 100644
--- a/app/test/test_devargs.c
+++ b/app/test/test_devargs.c
@@ -9,7 +9,7 @@
 #include <rte_common.h>
 #include <rte_devargs.h>
 #include <rte_kvargs.h>
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <rte_class.h>
 
 #include "test.h"
diff --git a/app/test/test_vdev.c b/app/test/test_vdev.c
index 3cc3abe70b..c3a8ad64bb 100644
--- a/app/test/test_vdev.c
+++ b/app/test/test_vdev.c
@@ -8,7 +8,7 @@
 
 #include <rte_common.h>
 #include <rte_kvargs.h>
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <bus_vdev_driver.h>
 
 #include "test.h"
diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index 5b4ffc992d..98a00da385 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -47,12 +47,6 @@ Deprecation Notices
 * mempool: The mempool API macros ``MEMPOOL_PG_*`` are deprecated and
   will be removed in DPDK 22.11.
 
-* bus: The ``rte_bus`` object will be made opaque in DPDK 22.11.
-  The goal is to remove it from the public ABI and make this object extendable.
-  As a side effect, registering a bus will be marked as an internal API:
-  external users may still register their bus using a new driver header
-  (see ``enable_driver_sdk`` meson option).
-
 * drivers: As a follow-up of the work on the ``rte_bus`` object,
   the ``rte_driver`` and ``rte_device`` objects (and as a domino effect,
   their bus-specific counterparts) will be made opaque in DPDK 22.11.
diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst
index e08a548285..36df0ccf93 100644
--- a/doc/guides/rel_notes/release_22_11.rst
+++ b/doc/guides/rel_notes/release_22_11.rst
@@ -88,6 +88,12 @@ API Changes
   in the future. Applications can use ``devtools/cocci/func_or_ret.cocci``
   to update their code.
 
+* bus: Registering a bus has been marked as an internal API.
+  External users may still register their bus using the ``bus_driver.h``
+  driver header (see ``enable_driver_sdk`` meson option).
+  The ``rte_bus`` object is now opaque and must be manipulated through added
+  accessors.
+
 * drivers: Registering a driver on the ``auxiliary``, ``ifpga``, ``pci``,
   ``vdev``, ``vmbus`` buses has been marked as an internal API.
   External users may still register their driver using the associated driver
diff --git a/drivers/bus/auxiliary/auxiliary_common.c b/drivers/bus/auxiliary/auxiliary_common.c
index 6cf6c170ec..259ff152c4 100644
--- a/drivers/bus/auxiliary/auxiliary_common.c
+++ b/drivers/bus/auxiliary/auxiliary_common.c
@@ -12,7 +12,7 @@
 #include <rte_errno.h>
 #include <rte_interrupts.h>
 #include <rte_log.h>
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <rte_per_lcore.h>
 #include <rte_memory.h>
 #include <rte_eal.h>
diff --git a/drivers/bus/auxiliary/auxiliary_params.c b/drivers/bus/auxiliary/auxiliary_params.c
index 0289777922..a889e392c6 100644
--- a/drivers/bus/auxiliary/auxiliary_params.c
+++ b/drivers/bus/auxiliary/auxiliary_params.c
@@ -4,7 +4,7 @@
 
 #include <string.h>
 
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <rte_dev.h>
 #include <rte_errno.h>
 #include <rte_kvargs.h>
diff --git a/drivers/bus/auxiliary/private.h b/drivers/bus/auxiliary/private.h
index 3f49f62493..3dee13e1d1 100644
--- a/drivers/bus/auxiliary/private.h
+++ b/drivers/bus/auxiliary/private.h
@@ -9,7 +9,7 @@
 #include <stdio.h>
 #include <sys/queue.h>
 
-#include <rte_bus.h>
+#include <bus_driver.h>
 
 #include "bus_auxiliary_driver.h"
 
diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c
index 1ac6aa314f..682427ba2c 100644
--- a/drivers/bus/dpaa/dpaa_bus.c
+++ b/drivers/bus/dpaa/dpaa_bus.c
@@ -29,7 +29,7 @@
 #include <ethdev_driver.h>
 #include <rte_malloc.h>
 #include <rte_ring.h>
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <rte_mbuf_pool_ops.h>
 #include <rte_mbuf_dyn.h>
 
diff --git a/drivers/bus/fslmc/fslmc_bus.c b/drivers/bus/fslmc/fslmc_bus.c
index b9b0981329..8503004e3d 100644
--- a/drivers/bus/fslmc/fslmc_bus.c
+++ b/drivers/bus/fslmc/fslmc_bus.c
@@ -9,7 +9,7 @@
 #include <stdbool.h>
 
 #include <rte_log.h>
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <rte_malloc.h>
 #include <rte_devargs.h>
 #include <rte_memcpy.h>
diff --git a/drivers/bus/fslmc/private.h b/drivers/bus/fslmc/private.h
index 60d68155e1..6f14085d98 100644
--- a/drivers/bus/fslmc/private.h
+++ b/drivers/bus/fslmc/private.h
@@ -5,7 +5,7 @@
 #ifndef BUS_FSLMC_PRIVATE_H
 #define BUS_FSLMC_PRIVATE_H
 
-#include <rte_bus.h>
+#include <bus_driver.h>
 
 #include <bus_fslmc_driver.h>
 
diff --git a/drivers/bus/ifpga/ifpga_bus.c b/drivers/bus/ifpga/ifpga_bus.c
index 27e2de7072..bb943b58b5 100644
--- a/drivers/bus/ifpga/ifpga_bus.c
+++ b/drivers/bus/ifpga/ifpga_bus.c
@@ -14,7 +14,7 @@
 #include <fcntl.h>
 
 #include <rte_errno.h>
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <rte_per_lcore.h>
 #include <rte_memory.h>
 #include <rte_memzone.h>
diff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_vfio.c
index cd0d0b1670..fab3483d9f 100644
--- a/drivers/bus/pci/linux/pci_vfio.c
+++ b/drivers/bus/pci/linux/pci_vfio.c
@@ -18,7 +18,7 @@
 #include <rte_malloc.h>
 #include <rte_vfio.h>
 #include <rte_eal.h>
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <rte_spinlock.h>
 #include <rte_tailq.h>
 
diff --git a/drivers/bus/pci/pci_common.c b/drivers/bus/pci/pci_common.c
index 0d61d49287..c26aacd364 100644
--- a/drivers/bus/pci/pci_common.c
+++ b/drivers/bus/pci/pci_common.c
@@ -13,7 +13,7 @@
 #include <rte_errno.h>
 #include <rte_interrupts.h>
 #include <rte_log.h>
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <rte_pci.h>
 #include <rte_bus_pci.h>
 #include <rte_lcore.h>
diff --git a/drivers/bus/pci/pci_params.c b/drivers/bus/pci/pci_params.c
index 61a868707f..39d702a418 100644
--- a/drivers/bus/pci/pci_params.c
+++ b/drivers/bus/pci/pci_params.c
@@ -4,7 +4,7 @@
 
 #include <sys/queue.h>
 
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <rte_bus_pci.h>
 #include <rte_dev.h>
 #include <rte_errno.h>
diff --git a/drivers/bus/pci/private.h b/drivers/bus/pci/private.h
index 4e40a2ed85..fddf49251d 100644
--- a/drivers/bus/pci/private.h
+++ b/drivers/bus/pci/private.h
@@ -8,7 +8,7 @@
 #include <stdbool.h>
 #include <stdio.h>
 
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <bus_pci_driver.h>
 #include <rte_os_shim.h>
 #include <rte_pci.h>
diff --git a/drivers/bus/vdev/vdev.c b/drivers/bus/vdev/vdev.c
index 7d78cf93bc..809a8bb08f 100644
--- a/drivers/bus/vdev/vdev.c
+++ b/drivers/bus/vdev/vdev.c
@@ -12,7 +12,7 @@
 
 #include <rte_eal.h>
 #include <rte_dev.h>
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <rte_common.h>
 #include <rte_devargs.h>
 #include <rte_memory.h>
diff --git a/drivers/bus/vmbus/private.h b/drivers/bus/vmbus/private.h
index 3d233fa83c..e33424675c 100644
--- a/drivers/bus/vmbus/private.h
+++ b/drivers/bus/vmbus/private.h
@@ -9,7 +9,7 @@
 #include <stdbool.h>
 #include <sys/uio.h>
 
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <bus_vmbus_driver.h>
 #include <rte_log.h>
 #include <rte_eal_paging.h>
diff --git a/drivers/common/mlx5/mlx5_common_pci.c b/drivers/common/mlx5/mlx5_common_pci.c
index e82cb881bf..73178ce0f3 100644
--- a/drivers/common/mlx5/mlx5_common_pci.c
+++ b/drivers/common/mlx5/mlx5_common_pci.c
@@ -9,7 +9,7 @@
 #include <rte_errno.h>
 #include <rte_class.h>
 #include <rte_pci.h>
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <bus_pci_driver.h>
 
 #include "mlx5_common_log.h"
diff --git a/drivers/dma/idxd/idxd_bus.c b/drivers/dma/idxd/idxd_bus.c
index 13cb967f6d..e30dcfc281 100644
--- a/drivers/dma/idxd/idxd_bus.c
+++ b/drivers/dma/idxd/idxd_bus.c
@@ -8,7 +8,7 @@
 #include <sys/mman.h>
 #include <libgen.h>
 
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <rte_devargs.h>
 #include <rte_eal.h>
 #include <rte_log.h>
diff --git a/drivers/net/bonding/rte_eth_bond_args.c b/drivers/net/bonding/rte_eth_bond_args.c
index 1a86eb3c00..6553166f5c 100644
--- a/drivers/net/bonding/rte_eth_bond_args.c
+++ b/drivers/net/bonding/rte_eth_bond_args.c
@@ -4,7 +4,7 @@
 
 #include <rte_devargs.h>
 #include <rte_pci.h>
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <bus_pci_driver.h>
 #include <rte_kvargs.h>
 
diff --git a/drivers/net/failsafe/failsafe.c b/drivers/net/failsafe/failsafe.c
index 5d4d52c341..32811403b4 100644
--- a/drivers/net/failsafe/failsafe.c
+++ b/drivers/net/failsafe/failsafe.c
@@ -11,7 +11,7 @@
 #include <ethdev_vdev.h>
 #include <rte_devargs.h>
 #include <rte_kvargs.h>
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <bus_vdev_driver.h>
 
 #include "failsafe_private.h"
diff --git a/drivers/net/failsafe/failsafe_eal.c b/drivers/net/failsafe/failsafe_eal.c
index 130344dce2..d71b512f81 100644
--- a/drivers/net/failsafe/failsafe_eal.c
+++ b/drivers/net/failsafe/failsafe_eal.c
@@ -3,7 +3,7 @@
  * Copyright 2017 Mellanox Technologies, Ltd
  */
 
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <rte_string_fns.h>
 #include <rte_malloc.h>
 
diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c
index efb262e368..4f0a6f4d55 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -19,7 +19,7 @@
 #include <ethdev_driver.h>
 #include <ethdev_pci.h>
 #include <rte_pci.h>
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <bus_pci_driver.h>
 #include <bus_auxiliary_driver.h>
 #include <rte_common.h>
diff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c
index 188d92ffac..ccc06bdda6 100644
--- a/drivers/net/netvsc/hn_ethdev.c
+++ b/drivers/net/netvsc/hn_ethdev.c
@@ -31,7 +31,7 @@
 #include <rte_memory.h>
 #include <rte_eal.h>
 #include <rte_dev.h>
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <bus_vmbus_driver.h>
 #include <rte_alarm.h>
 
diff --git a/drivers/net/vdev_netvsc/vdev_netvsc.c b/drivers/net/vdev_netvsc/vdev_netvsc.c
index 65043a04eb..dc90569df1 100644
--- a/drivers/net/vdev_netvsc/vdev_netvsc.c
+++ b/drivers/net/vdev_netvsc/vdev_netvsc.c
@@ -24,7 +24,7 @@
 #include <unistd.h>
 
 #include <rte_alarm.h>
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <bus_vdev_driver.h>
 #include <rte_common.h>
 #include <rte_dev.h>
diff --git a/drivers/net/virtio/virtio_pci.c b/drivers/net/virtio/virtio_pci.c
index 632451dcbe..9cf4d760b4 100644
--- a/drivers/net/virtio/virtio_pci.c
+++ b/drivers/net/virtio/virtio_pci.c
@@ -9,7 +9,7 @@
 #endif
 
 #include <rte_io.h>
-#include <rte_bus.h>
+#include <bus_driver.h>
 
 #include "virtio_pci.h"
 #include "virtio_logs.h"
diff --git a/drivers/raw/ioat/idxd_bus.c b/drivers/raw/ioat/idxd_bus.c
index 539f51b1b1..f32d811055 100644
--- a/drivers/raw/ioat/idxd_bus.c
+++ b/drivers/raw/ioat/idxd_bus.c
@@ -10,7 +10,7 @@
 #include <fcntl.h>
 #include <sys/mman.h>
 
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <rte_log.h>
 #include <rte_string_fns.h>
 #include "ioat_private.h"
diff --git a/lib/eal/common/eal_common_bus.c b/lib/eal/common/eal_common_bus.c
index cbf382f967..be64d31b0f 100644
--- a/lib/eal/common/eal_common_bus.c
+++ b/lib/eal/common/eal_common_bus.c
@@ -6,7 +6,7 @@
 #include <string.h>
 #include <sys/queue.h>
 
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <rte_debug.h>
 #include <rte_string_fns.h>
 #include <rte_errno.h>
diff --git a/lib/eal/common/eal_common_dev.c b/lib/eal/common/eal_common_dev.c
index b6f0392f30..62a598957c 100644
--- a/lib/eal/common/eal_common_dev.c
+++ b/lib/eal/common/eal_common_dev.c
@@ -7,7 +7,7 @@
 #include <string.h>
 #include <sys/queue.h>
 
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <rte_class.h>
 #include <rte_dev.h>
 #include <rte_devargs.h>
diff --git a/lib/eal/common/eal_common_devargs.c b/lib/eal/common/eal_common_devargs.c
index d5833af373..03e6e59baf 100644
--- a/lib/eal/common/eal_common_devargs.c
+++ b/lib/eal/common/eal_common_devargs.c
@@ -10,7 +10,7 @@
 #include <string.h>
 #include <stdarg.h>
 
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <rte_class.h>
 #include <rte_dev.h>
 #include <rte_devargs.h>
diff --git a/lib/eal/common/hotplug_mp.c b/lib/eal/common/hotplug_mp.c
index 1614a57752..5202bd5658 100644
--- a/lib/eal/common/hotplug_mp.c
+++ b/lib/eal/common/hotplug_mp.c
@@ -3,7 +3,7 @@
  */
 #include <string.h>
 
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <rte_eal.h>
 #include <rte_errno.h>
 #include <rte_alarm.h>
diff --git a/lib/eal/include/bus_driver.h b/lib/eal/include/bus_driver.h
new file mode 100644
index 0000000000..d2e615a736
--- /dev/null
+++ b/lib/eal/include/bus_driver.h
@@ -0,0 +1,296 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright (c) 2022 Red Hat, Inc.
+ */
+
+#ifndef BUS_DRIVER_H
+#define BUS_DRIVER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <rte_bus.h>
+#include <rte_compat.h>
+#include <rte_dev.h>
+#include <rte_eal.h>
+#include <rte_tailq.h>
+
+struct rte_devargs;
+struct rte_device;
+
+/** Double linked list of buses */
+RTE_TAILQ_HEAD(rte_bus_list, rte_bus);
+
+/**
+ * Bus specific scan for devices attached on the bus.
+ * For each bus object, the scan would be responsible for finding devices and
+ * adding them to its private device list.
+ *
+ * A bus should mandatorily implement this method.
+ *
+ * @return
+ *	0 for successful scan
+ *	<0 for unsuccessful scan with error value
+ */
+typedef int (*rte_bus_scan_t)(void);
+
+/**
+ * Implementation specific probe function which is responsible for linking
+ * devices on that bus with applicable drivers.
+ *
+ * This is called while iterating over each registered bus.
+ *
+ * @return
+ *	0 for successful probe
+ *	!0 for any error while probing
+ */
+typedef int (*rte_bus_probe_t)(void);
+
+/**
+ * Device iterator to find a device on a bus.
+ *
+ * This function returns an rte_device if one of those held by the bus
+ * matches the data passed as parameter.
+ *
+ * If the comparison function returns zero this function should stop iterating
+ * over any more devices. To continue a search the device of a previous search
+ * can be passed via the start parameter.
+ *
+ * @param cmp
+ *	Comparison function.
+ *
+ * @param data
+ *	Data to compare each device against.
+ *
+ * @param start
+ *	starting point for the iteration
+ *
+ * @return
+ *	The first device matching the data, NULL if none exists.
+ */
+typedef struct rte_device *
+(*rte_bus_find_device_t)(const struct rte_device *start, rte_dev_cmp_t cmp,
+			 const void *data);
+
+/**
+ * Implementation specific probe function which is responsible for linking
+ * devices on that bus with applicable drivers.
+ *
+ * @param dev
+ *	Device pointer that was returned by a previous call to find_device.
+ *
+ * @return
+ *	0 on success.
+ *	!0 on error.
+ */
+typedef int (*rte_bus_plug_t)(struct rte_device *dev);
+
+/**
+ * Implementation specific remove function which is responsible for unlinking
+ * devices on that bus from assigned driver.
+ *
+ * @param dev
+ *	Device pointer that was returned by a previous call to find_device.
+ *
+ * @return
+ *	0 on success.
+ *	!0 on error.
+ */
+typedef int (*rte_bus_unplug_t)(struct rte_device *dev);
+
+/**
+ * Bus specific parsing function.
+ * Validates the syntax used in the textual representation of a device,
+ * If the syntax is valid and ``addr`` is not NULL, writes the bus-specific
+ * device representation to ``addr``.
+ *
+ * @param[in] name
+ *	device textual description
+ *
+ * @param[out] addr
+ *	device information location address, into which parsed info
+ *	should be written. If NULL, nothing should be written, which
+ *	is not an error.
+ *
+ * @return
+ *	0 if parsing was successful.
+ *	!0 for any error.
+ */
+typedef int (*rte_bus_parse_t)(const char *name, void *addr);
+
+/**
+ * Parse bus part of the device arguments.
+ *
+ * The field name of the struct rte_devargs will be set.
+ *
+ * @param da
+ *	Pointer to the devargs to parse.
+ *
+ * @return
+ *	0 on successful parsing, otherwise rte_errno is set.
+ *	-EINVAL: on parsing error.
+ *	-ENODEV: if no key matching a device argument is specified.
+ *	-E2BIG: device name is too long.
+ */
+typedef int (*rte_bus_devargs_parse_t)(struct rte_devargs *da);
+
+/**
+ * Device level DMA map function.
+ * After a successful call, the memory segment will be mapped to the
+ * given device.
+ *
+ * @param dev
+ *	Device pointer.
+ * @param addr
+ *	Virtual address to map.
+ * @param iova
+ *	IOVA address to map.
+ * @param len
+ *	Length of the memory segment being mapped.
+ *
+ * @return
+ *	0 if mapping was successful.
+ *	Negative value and rte_errno is set otherwise.
+ */
+typedef int (*rte_dev_dma_map_t)(struct rte_device *dev, void *addr,
+				  uint64_t iova, size_t len);
+
+/**
+ * Device level DMA unmap function.
+ * After a successful call, the memory segment will no longer be
+ * accessible by the given device.
+ *
+ * @param dev
+ *	Device pointer.
+ * @param addr
+ *	Virtual address to unmap.
+ * @param iova
+ *	IOVA address to unmap.
+ * @param len
+ *	Length of the memory segment being mapped.
+ *
+ * @return
+ *	0 if un-mapping was successful.
+ *	Negative value and rte_errno is set otherwise.
+ */
+typedef int (*rte_dev_dma_unmap_t)(struct rte_device *dev, void *addr,
+				   uint64_t iova, size_t len);
+
+/**
+ * Implement a specific hot-unplug handler, which is responsible for
+ * handle the failure when device be hot-unplugged. When the event of
+ * hot-unplug be detected, it could call this function to handle
+ * the hot-unplug failure and avoid app crash.
+ * @param dev
+ *	Pointer of the device structure.
+ *
+ * @return
+ *	0 on success.
+ *	!0 on error.
+ */
+typedef int (*rte_bus_hot_unplug_handler_t)(struct rte_device *dev);
+
+/**
+ * Implement a specific sigbus handler, which is responsible for handling
+ * the sigbus error which is either original memory error, or specific memory
+ * error that caused of device be hot-unplugged. When sigbus error be captured,
+ * it could call this function to handle sigbus error.
+ * @param failure_addr
+ *	Pointer of the fault address of the sigbus error.
+ *
+ * @return
+ *	0 for success handle the sigbus for hot-unplug.
+ *	1 for not process it, because it is a generic sigbus error.
+ *	-1 for failed to handle the sigbus for hot-unplug.
+ */
+typedef int (*rte_bus_sigbus_handler_t)(const void *failure_addr);
+
+/**
+ * Bus scan policies
+ */
+enum rte_bus_scan_mode {
+	RTE_BUS_SCAN_UNDEFINED,
+	RTE_BUS_SCAN_ALLOWLIST,
+	RTE_BUS_SCAN_BLOCKLIST,
+};
+
+/**
+ * A structure used to configure bus operations.
+ */
+struct rte_bus_conf {
+	enum rte_bus_scan_mode scan_mode; /**< Scan policy. */
+};
+
+
+/**
+ * Get common iommu class of the all the devices on the bus. The bus may
+ * check that those devices are attached to iommu driver.
+ * If no devices are attached to the bus. The bus may return with don't care
+ * (_DC) value.
+ * Otherwise, The bus will return appropriate _pa or _va iova mode.
+ *
+ * @return
+ *      enum rte_iova_mode value.
+ */
+typedef enum rte_iova_mode (*rte_bus_get_iommu_class_t)(void);
+
+/**
+ * A structure describing a generic bus.
+ */
+struct rte_bus {
+	RTE_TAILQ_ENTRY(rte_bus) next; /**< Next bus object in linked list */
+	const char *name;            /**< Name of the bus */
+	rte_bus_scan_t scan;         /**< Scan for devices attached to bus */
+	rte_bus_probe_t probe;       /**< Probe devices on bus */
+	rte_bus_find_device_t find_device; /**< Find a device on the bus */
+	rte_bus_plug_t plug;         /**< Probe single device for drivers */
+	rte_bus_unplug_t unplug;     /**< Remove single device from driver */
+	rte_bus_parse_t parse;       /**< Parse a device name */
+	rte_bus_devargs_parse_t devargs_parse; /**< Parse bus devargs */
+	rte_dev_dma_map_t dma_map;   /**< DMA map for device in the bus */
+	rte_dev_dma_unmap_t dma_unmap; /**< DMA unmap for device in the bus */
+	struct rte_bus_conf conf;    /**< Bus configuration */
+	rte_bus_get_iommu_class_t get_iommu_class; /**< Get iommu class */
+	rte_dev_iterate_t dev_iterate; /**< Device iterator. */
+	rte_bus_hot_unplug_handler_t hot_unplug_handler;
+				/**< handle hot-unplug failure on the bus */
+	rte_bus_sigbus_handler_t sigbus_handler;
+					/**< handle sigbus error on the bus */
+};
+
+/**
+ * Register a Bus handler.
+ *
+ * @param bus
+ *   A pointer to a rte_bus structure describing the bus
+ *   to be registered.
+ */
+__rte_internal
+void rte_bus_register(struct rte_bus *bus);
+
+/**
+ * Helper for Bus registration.
+ * The constructor has higher priority than PMD constructors.
+ */
+#define RTE_REGISTER_BUS(nm, bus) \
+RTE_INIT_PRIO(businitfn_ ##nm, BUS) \
+{\
+	(bus).name = RTE_STR(nm);\
+	rte_bus_register(&bus); \
+}
+
+/**
+ * Unregister a Bus handler.
+ *
+ * @param bus
+ *   A pointer to a rte_bus structure describing the bus
+ *   to be unregistered.
+ */
+__rte_internal
+void rte_bus_unregister(struct rte_bus *bus);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* BUS_DRIVER_H */
diff --git a/lib/eal/include/meson.build b/lib/eal/include/meson.build
index fd6e844224..77d8621a51 100644
--- a/lib/eal/include/meson.build
+++ b/lib/eal/include/meson.build
@@ -55,6 +55,10 @@ headers += files(
         'rte_vfio.h',
 )
 
+driver_sdk_headers = files(
+        'bus_driver.h',
+)
+
 # special case install the generic headers, since they go in a subdir
 generic_headers = files(
         'generic/rte_atomic.h',
diff --git a/lib/eal/include/rte_bus.h b/lib/eal/include/rte_bus.h
index 3848b44db0..dfe756fb11 100644
--- a/lib/eal/include/rte_bus.h
+++ b/lib/eal/include/rte_bus.h
@@ -20,284 +20,21 @@ extern "C" {
 
 #include <stdio.h>
 
-#include <rte_dev.h>
 #include <rte_eal.h>
-#include <rte_log.h>
 
-/** Double linked list of buses */
-RTE_TAILQ_HEAD(rte_bus_list, rte_bus);
-
-/**
- * Bus specific scan for devices attached on the bus.
- * For each bus object, the scan would be responsible for finding devices and
- * adding them to its private device list.
- *
- * A bus should mandatorily implement this method.
- *
- * @return
- *	0 for successful scan
- *	<0 for unsuccessful scan with error value
- */
-typedef int (*rte_bus_scan_t)(void);
-
-/**
- * Implementation specific probe function which is responsible for linking
- * devices on that bus with applicable drivers.
- *
- * This is called while iterating over each registered bus.
- *
- * @return
- *	0 for successful probe
- *	!0 for any error while probing
- */
-typedef int (*rte_bus_probe_t)(void);
-
-/**
- * Device iterator to find a device on a bus.
- *
- * This function returns an rte_device if one of those held by the bus
- * matches the data passed as parameter.
- *
- * If the comparison function returns zero this function should stop iterating
- * over any more devices. To continue a search the device of a previous search
- * can be passed via the start parameter.
- *
- * @param cmp
- *	Comparison function.
- *
- * @param data
- *	Data to compare each device against.
- *
- * @param start
- *	starting point for the iteration
- *
- * @return
- *	The first device matching the data, NULL if none exists.
- */
-typedef struct rte_device *
-(*rte_bus_find_device_t)(const struct rte_device *start, rte_dev_cmp_t cmp,
-			 const void *data);
-
-/**
- * Implementation specific probe function which is responsible for linking
- * devices on that bus with applicable drivers.
- *
- * @param dev
- *	Device pointer that was returned by a previous call to find_device.
- *
- * @return
- *	0 on success.
- *	!0 on error.
- */
-typedef int (*rte_bus_plug_t)(struct rte_device *dev);
-
-/**
- * Implementation specific remove function which is responsible for unlinking
- * devices on that bus from assigned driver.
- *
- * @param dev
- *	Device pointer that was returned by a previous call to find_device.
- *
- * @return
- *	0 on success.
- *	!0 on error.
- */
-typedef int (*rte_bus_unplug_t)(struct rte_device *dev);
-
-/**
- * Bus specific parsing function.
- * Validates the syntax used in the textual representation of a device,
- * If the syntax is valid and ``addr`` is not NULL, writes the bus-specific
- * device representation to ``addr``.
- *
- * @param[in] name
- *	device textual description
- *
- * @param[out] addr
- *	device information location address, into which parsed info
- *	should be written. If NULL, nothing should be written, which
- *	is not an error.
- *
- * @return
- *	0 if parsing was successful.
- *	!0 for any error.
- */
-typedef int (*rte_bus_parse_t)(const char *name, void *addr);
-
-/**
- * Parse bus part of the device arguments.
- *
- * The field name of the struct rte_devargs will be set.
- *
- * @param da
- *	Pointer to the devargs to parse.
- *
- * @return
- *	0 on successful parsing, otherwise rte_errno is set.
- *	-EINVAL: on parsing error.
- *	-ENODEV: if no key matching a device argument is specified.
- *	-E2BIG: device name is too long.
- */
-typedef int (*rte_bus_devargs_parse_t)(struct rte_devargs *da);
-
-/**
- * Device level DMA map function.
- * After a successful call, the memory segment will be mapped to the
- * given device.
- *
- * @param dev
- *	Device pointer.
- * @param addr
- *	Virtual address to map.
- * @param iova
- *	IOVA address to map.
- * @param len
- *	Length of the memory segment being mapped.
- *
- * @return
- *	0 if mapping was successful.
- *	Negative value and rte_errno is set otherwise.
- */
-typedef int (*rte_dev_dma_map_t)(struct rte_device *dev, void *addr,
-				  uint64_t iova, size_t len);
-
-/**
- * Device level DMA unmap function.
- * After a successful call, the memory segment will no longer be
- * accessible by the given device.
- *
- * @param dev
- *	Device pointer.
- * @param addr
- *	Virtual address to unmap.
- * @param iova
- *	IOVA address to unmap.
- * @param len
- *	Length of the memory segment being mapped.
- *
- * @return
- *	0 if un-mapping was successful.
- *	Negative value and rte_errno is set otherwise.
- */
-typedef int (*rte_dev_dma_unmap_t)(struct rte_device *dev, void *addr,
-				   uint64_t iova, size_t len);
-
-/**
- * Implement a specific hot-unplug handler, which is responsible for
- * handle the failure when device be hot-unplugged. When the event of
- * hot-unplug be detected, it could call this function to handle
- * the hot-unplug failure and avoid app crash.
- * @param dev
- *	Pointer of the device structure.
- *
- * @return
- *	0 on success.
- *	!0 on error.
- */
-typedef int (*rte_bus_hot_unplug_handler_t)(struct rte_device *dev);
-
-/**
- * Implement a specific sigbus handler, which is responsible for handling
- * the sigbus error which is either original memory error, or specific memory
- * error that caused of device be hot-unplugged. When sigbus error be captured,
- * it could call this function to handle sigbus error.
- * @param failure_addr
- *	Pointer of the fault address of the sigbus error.
- *
- * @return
- *	0 for success handle the sigbus for hot-unplug.
- *	1 for not process it, because it is a generic sigbus error.
- *	-1 for failed to handle the sigbus for hot-unplug.
- */
-typedef int (*rte_bus_sigbus_handler_t)(const void *failure_addr);
-
-/**
- * Bus scan policies
- */
-enum rte_bus_scan_mode {
-	RTE_BUS_SCAN_UNDEFINED,
-	RTE_BUS_SCAN_ALLOWLIST,
-	RTE_BUS_SCAN_BLOCKLIST,
-};
-
-/**
- * A structure used to configure bus operations.
- */
-struct rte_bus_conf {
-	enum rte_bus_scan_mode scan_mode; /**< Scan policy. */
-};
-
-
-/**
- * Get common iommu class of the all the devices on the bus. The bus may
- * check that those devices are attached to iommu driver.
- * If no devices are attached to the bus. The bus may return with don't care
- * (_DC) value.
- * Otherwise, The bus will return appropriate _pa or _va iova mode.
- *
- * @return
- *      enum rte_iova_mode value.
- */
-typedef enum rte_iova_mode (*rte_bus_get_iommu_class_t)(void);
-
-
-/**
- * A structure describing a generic bus.
- */
-struct rte_bus {
-	RTE_TAILQ_ENTRY(rte_bus) next; /**< Next bus object in linked list */
-	const char *name;            /**< Name of the bus */
-	rte_bus_scan_t scan;         /**< Scan for devices attached to bus */
-	rte_bus_probe_t probe;       /**< Probe devices on bus */
-	rte_bus_find_device_t find_device; /**< Find a device on the bus */
-	rte_bus_plug_t plug;         /**< Probe single device for drivers */
-	rte_bus_unplug_t unplug;     /**< Remove single device from driver */
-	rte_bus_parse_t parse;       /**< Parse a device name */
-	rte_bus_devargs_parse_t devargs_parse; /**< Parse bus devargs */
-	rte_dev_dma_map_t dma_map;   /**< DMA map for device in the bus */
-	rte_dev_dma_unmap_t dma_unmap; /**< DMA unmap for device in the bus */
-	struct rte_bus_conf conf;    /**< Bus configuration */
-	rte_bus_get_iommu_class_t get_iommu_class; /**< Get iommu class */
-	rte_dev_iterate_t dev_iterate; /**< Device iterator. */
-	rte_bus_hot_unplug_handler_t hot_unplug_handler;
-				/**< handle hot-unplug failure on the bus */
-	rte_bus_sigbus_handler_t sigbus_handler;
-					/**< handle sigbus error on the bus */
-
-};
+struct rte_bus;
+struct rte_device;
 
 /**
  * Retrieve a bus name.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * @param bus
  *   A pointer to a rte_bus structure.
  * @return
  *   A pointer to the bus name string.
  */
-__rte_experimental
 const char *rte_bus_name(const struct rte_bus *bus);
 
-/**
- * Register a Bus handler.
- *
- * @param bus
- *   A pointer to a rte_bus structure describing the bus
- *   to be registered.
- */
-void rte_bus_register(struct rte_bus *bus);
-
-/**
- * Unregister a Bus handler.
- *
- * @param bus
- *   A pointer to a rte_bus structure describing the bus
- *   to be unregistered.
- */
-void rte_bus_unregister(struct rte_bus *bus);
-
 /**
  * Scan all the buses.
  *
@@ -387,17 +124,6 @@ struct rte_bus *rte_bus_find_by_name(const char *busname);
  */
 enum rte_iova_mode rte_bus_get_iommu_class(void);
 
-/**
- * Helper for Bus registration.
- * The constructor has higher priority than PMD constructors.
- */
-#define RTE_REGISTER_BUS(nm, bus) \
-RTE_INIT_PRIO(businitfn_ ##nm, BUS) \
-{\
-	(bus).name = RTE_STR(nm);\
-	rte_bus_register(&bus); \
-}
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/lib/eal/linux/eal_dev.c b/lib/eal/linux/eal_dev.c
index 02ae1cde29..098a2c3076 100644
--- a/lib/eal/linux/eal_dev.c
+++ b/lib/eal/linux/eal_dev.c
@@ -13,7 +13,7 @@
 #include <rte_dev.h>
 #include <rte_interrupts.h>
 #include <rte_alarm.h>
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <rte_spinlock.h>
 #include <rte_errno.h>
 
diff --git a/lib/eal/version.map b/lib/eal/version.map
index aa53064db1..6ec15f1147 100644
--- a/lib/eal/version.map
+++ b/lib/eal/version.map
@@ -12,10 +12,9 @@ DPDK_23 {
 	rte_bus_find_by_device;
 	rte_bus_find_by_name;
 	rte_bus_get_iommu_class;
+	rte_bus_name;
 	rte_bus_probe;
-	rte_bus_register;
 	rte_bus_scan;
-	rte_bus_unregister;
 	rte_calloc;
 	rte_calloc_socket;
 	rte_cpu_get_flag_enabled;
@@ -424,14 +423,13 @@ EXPERIMENTAL {
 	rte_thread_self;
 	rte_thread_set_affinity_by_id;
 	rte_thread_set_priority;
-
-	# added in 22.11
-	rte_bus_name;
 };
 
 INTERNAL {
 	global:
 
+	rte_bus_register;
+	rte_bus_unregister;
 	rte_eal_get_baseaddr;
 	rte_firmware_read;
 	rte_intr_allow_others;
diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c
index 9e358d187a..0c2c1088c0 100644
--- a/lib/ethdev/rte_ethdev.c
+++ b/lib/ethdev/rte_ethdev.c
@@ -11,7 +11,7 @@
 #include <string.h>
 #include <sys/queue.h>
 
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <rte_log.h>
 #include <rte_interrupts.h>
 #include <rte_memcpy.h>
diff --git a/lib/pcapng/rte_pcapng.c b/lib/pcapng/rte_pcapng.c
index 5b079cd14a..72aabd4dd0 100644
--- a/lib/pcapng/rte_pcapng.c
+++ b/lib/pcapng/rte_pcapng.c
@@ -11,7 +11,7 @@
 #include <time.h>
 #include <unistd.h>
 
-#include <rte_bus.h>
+#include <bus_driver.h>
 #include <rte_common.h>
 #include <rte_cycles.h>
 #include <rte_dev.h>
-- 
2.37.2


  parent reply	other threads:[~2022-08-26 12:44 UTC|newest]

Thread overview: 231+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-28 14:46 [RFC PATCH 00/11] Bus cleanup for 22.11 David Marchand
2022-06-28 14:46 ` [RFC PATCH 01/11] common/mlx5: rework check on driver registration David Marchand
2022-06-28 14:46 ` [RFC PATCH 02/11] raw/ifpga: remove PCI bus accessor David Marchand
2022-06-28 14:46 ` [RFC PATCH 03/11] dev: hide debug messages in device iterator David Marchand
2022-06-28 14:46 ` [RFC PATCH 04/11] dev: move unrelated macros from header David Marchand
2022-06-28 14:46 ` [RFC PATCH 05/11] devargs: remove dependency on bus header David Marchand
2022-06-28 14:46 ` [RFC PATCH 06/11] bus: remove unneeded inclusion of " David Marchand
2022-06-28 14:46 ` [RFC PATCH 07/11] bus: move IOVA definition from header David Marchand
2022-06-28 14:46 ` [RFC PATCH 08/11] drivers/bus: remove back reference to bus objects David Marchand
2022-06-28 14:46 ` [RFC PATCH 09/11] drivers/bus: hide specific structures David Marchand
2022-06-28 14:46 ` [RFC PATCH 10/11] bus: introduce accessors David Marchand
2022-06-28 14:46 ` [RFC PATCH 11/11] bus: hide bus object David Marchand
2022-06-28 16:22   ` Tyler Retzlaff
2022-06-28 16:24     ` Tyler Retzlaff
2022-06-28 16:29     ` Stephen Hemminger
2022-06-28 17:07       ` Tyler Retzlaff
2022-06-28 17:38         ` Stephen Hemminger
2022-06-28 18:23           ` Tyler Retzlaff
2022-07-09  8:16             ` David Marchand
2022-07-09 16:28               ` Stephen Hemminger
2022-09-23  8:49                 ` David Marchand
2022-09-23  8:57                   ` Thomas Monjalon
2022-07-09  8:26 ` [RFC v2 v2 00/29] Bus and device cleanup for 22.11 David Marchand
2022-07-09  8:26   ` [RFC v2 v2 01/29] common/mlx5: rework check on driver registration David Marchand
2022-07-09  8:26   ` [RFC v2 v2 02/29] raw/ifpga: remove PCI bus accessor David Marchand
2022-07-09  8:26   ` [RFC v2 v2 03/29] kni: stop populating PCI info in examples David Marchand
2022-07-09  8:26   ` [RFC v2 v2 04/29] examples/ethtool: prefer device name David Marchand
2022-07-09  8:26   ` [RFC v2 v2 05/29] dev: hide debug messages in device iterator David Marchand
2022-07-09  8:26   ` [RFC v2 v2 06/29] dev: move unrelated macros from header David Marchand
2022-07-09  8:26   ` [RFC v2 v2 07/29] devargs: remove dependency on bus header David Marchand
2022-07-09  8:26   ` [RFC v2 v2 08/29] bus: remove unneeded inclusion of " David Marchand
2022-07-09  8:26   ` [RFC v2 v2 09/29] bus: move IOVA definition from header David Marchand
2022-07-09  8:26   ` [RFC v2 v2 10/29] drivers/bus: remove back reference to bus objects David Marchand
2022-07-09  8:26   ` [RFC v2 v2 11/29] drivers/bus: hide specific structures David Marchand
2022-07-09  8:26   ` [RFC v2 v2 12/29] bus: introduce accessors David Marchand
2022-07-09  8:26   ` [RFC v2 v2 13/29] bus: hide bus object David Marchand
2022-07-09  8:26   ` [RFC v2 v2 14/29] bbdev: mark driver header David Marchand
2022-07-09  8:26   ` [RFC v2 v2 15/29] ethdev: mark some headers as driver only David Marchand
2022-07-09  8:26   ` [RFC v2 v2 16/29] rawdev: mark driver header David Marchand
2022-07-09  8:26   ` [RFC v2 v2 17/29] drivers: export drivers headers David Marchand
2022-07-09  8:26   ` [RFC v2 v2 18/29] bus/auxiliary: make driver-only headers private David Marchand
2022-07-09  8:26   ` [RFC v2 v2 19/29] bus/dpaa: " David Marchand
2022-07-09  8:26   ` [RFC v2 v2 20/29] bus/fslmc: " David Marchand
2022-07-09  8:26   ` [RFC v2 v2 21/29] bus/ifpga: cleanup exported symbols David Marchand
2022-07-09  8:26   ` [RFC v2 v2 22/29] bus/ifpga: make driver-only headers private David Marchand
2022-07-09  8:26   ` [RFC v2 v2 23/29] bus/pci: " David Marchand
2022-07-09  8:26   ` [RFC v2 v2 24/29] bus/vdev: " David Marchand
2022-07-09  8:26   ` [RFC v2 v2 25/29] bus/vmbus: " David Marchand
2022-07-09  8:26   ` [RFC v2 v2 26/29] dev: introduce driver name David Marchand
2022-07-09  8:26   ` [RFC v2 v2 27/29] dev: hide driver object David Marchand
2022-07-09  8:26   ` [RFC v2 v2 28/29] dev: introduce device accessors David Marchand
2022-07-09  8:26   ` [RFC v2 v2 29/29] dev: hide device object David Marchand
2022-07-09 16:30   ` [RFC v2 v2 00/29] Bus and device cleanup for 22.11 Stephen Hemminger
2022-07-11  8:38   ` Bruce Richardson
2022-07-28 15:26 ` [RFC v3 00/26] " David Marchand
2022-07-28 15:26   ` [RFC v3 01/26] devtools: forbid inclusions of driver only headers David Marchand
2022-07-28 16:23     ` Bruce Richardson
2022-07-28 15:26   ` [RFC v3 02/26] common/mlx5: rework check on driver registration David Marchand
2022-07-28 15:26   ` [RFC v3 03/26] raw/ifpga: remove PCI bus accessor David Marchand
2022-07-29  2:36     ` Xu, Rosen
2022-07-28 15:26   ` [RFC v3 04/26] app/testpmd: drop PCI register commands David Marchand
2022-07-28 16:26     ` Bruce Richardson
2022-07-28 15:26   ` [RFC v3 05/26] kni: stop populating PCI info in examples David Marchand
2022-07-28 16:30     ` Bruce Richardson
2022-07-28 15:26   ` [RFC v3 06/26] examples/ethtool: prefer device name David Marchand
2022-07-28 16:32     ` Bruce Richardson
2022-07-28 19:27       ` David Marchand
2022-07-28 15:26   ` [RFC v3 07/26] dev: hide debug messages in device iterator David Marchand
2022-07-28 16:33     ` Bruce Richardson
2022-07-28 15:26   ` [RFC v3 08/26] dev: move unrelated macros from header David Marchand
2022-07-28 16:38     ` Bruce Richardson
2022-07-28 19:32       ` David Marchand
2022-07-29  9:58         ` Bruce Richardson
2022-07-29 13:22           ` David Marchand
2022-08-24  6:50             ` David Marchand
2022-08-24  7:39               ` Thomas Monjalon
2022-08-24 11:52                 ` Morten Brørup
2022-08-24 12:53                   ` Thomas Monjalon
2022-07-28 15:26   ` [RFC v3 09/26] devargs: remove dependency on bus header David Marchand
2022-07-28 16:40     ` Bruce Richardson
2022-07-28 15:26   ` [RFC v3 10/26] build: export drivers headers David Marchand
2022-07-28 16:41     ` Bruce Richardson
2022-07-28 15:26   ` [RFC v3 11/26] bus/auxiliary: make driver-only headers private David Marchand
2022-07-28 15:26   ` [RFC v3 12/26] bus/dpaa: " David Marchand
2022-07-28 15:26   ` [RFC v3 13/26] bus/fslmc: " David Marchand
2022-07-28 15:26   ` [RFC v3 14/26] bus/ifpga: cleanup exported symbols David Marchand
2022-07-29  2:36     ` Xu, Rosen
2022-07-28 15:26   ` [RFC v3 15/26] bus/ifpga: make driver-only headers private David Marchand
2022-07-29  2:37     ` Xu, Rosen
2022-07-28 15:26   ` [RFC v3 16/26] bus/pci: " David Marchand
2022-07-28 16:46     ` Bruce Richardson
2022-07-28 16:52       ` Ajit Khaparde
2022-07-29  2:41     ` Xu, Rosen
2022-07-28 15:26   ` [RFC v3 17/26] bus/vdev: " David Marchand
2022-07-29  2:38     ` Xu, Rosen
2022-07-28 15:26   ` [RFC v3 18/26] bus/vmbus: " David Marchand
2022-07-28 15:26   ` [RFC v3 19/26] bus: move IOVA definition from header David Marchand
2022-07-28 16:48     ` Bruce Richardson
2022-07-28 15:26   ` [RFC v3 20/26] bus: introduce accessors David Marchand
2022-07-28 16:51     ` Bruce Richardson
2022-07-28 15:26   ` [RFC v3 21/26] bus: hide bus object David Marchand
2022-07-28 16:56     ` Bruce Richardson
2022-07-28 19:26       ` David Marchand
2022-07-29 10:01         ` Bruce Richardson
2022-07-29 11:14           ` David Marchand
2022-07-28 15:26   ` [RFC v3 22/26] dev: introduce driver accessors David Marchand
2022-07-28 16:59     ` Bruce Richardson
2022-07-28 15:26   ` [RFC v3 23/26] dev: hide driver object David Marchand
2022-07-28 17:00     ` Bruce Richardson
2022-08-01 17:18       ` Ajit Khaparde
2022-08-01  7:06     ` Jayatheerthan, Jay
2022-07-28 15:26   ` [RFC v3 24/26] dev: introduce device accessors David Marchand
2022-07-28 17:01     ` Bruce Richardson
2022-07-28 15:26   ` [RFC v3 25/26] dev: provide Bus specific information David Marchand
2022-07-28 17:03     ` Bruce Richardson
2022-07-28 19:45       ` David Marchand
2022-07-28 15:26   ` [RFC v3 26/26] dev: hide device object David Marchand
2022-07-28 17:04     ` Bruce Richardson
2022-08-04 23:19   ` [RFC v3 00/26] Bus and device cleanup for 22.11 Harris, James R
2022-08-25  9:31     ` David Marchand
2022-08-29 17:12       ` Walker, Benjamin
2022-08-30 15:09         ` David Marchand
2022-09-21 22:29           ` Harris, James R
2022-09-23  7:13             ` David Marchand
2022-09-23 21:56               ` Harris, James R
2022-08-26 12:41 ` [PATCH v4 00/27] " David Marchand
2022-08-26 12:41   ` [PATCH v4 01/27] devtools: forbid inclusions of driver only headers David Marchand
2022-08-26 12:41   ` [PATCH v4 02/27] common/mlx5: rework check on driver registration David Marchand
2022-08-26 12:41   ` [PATCH v4 03/27] raw/ifpga: remove PCI bus accessor David Marchand
2022-08-26 12:41   ` [PATCH v4 04/27] app/testpmd: drop PCI register commands David Marchand
2022-08-26 12:41   ` [PATCH v4 05/27] kni: stop populating PCI info in examples David Marchand
2022-08-26 12:41   ` [PATCH v4 06/27] examples/ethtool: prefer device name David Marchand
2022-08-26 12:41   ` [PATCH v4 07/27] dev: hide debug messages in device iterator David Marchand
2022-08-26 12:41   ` [PATCH v4 08/27] eal: deprecate RTE_FUNC_PTR_* macros David Marchand
2022-08-26 12:41   ` [PATCH v4 09/27] devargs: remove dependency on bus header David Marchand
2022-08-26 12:41   ` [PATCH v4 10/27] build: export drivers headers David Marchand
2022-08-26 12:41   ` [PATCH v4 11/27] bus/auxiliary: make driver-only headers private David Marchand
2022-08-26 12:41   ` [PATCH v4 12/27] bus/dpaa: " David Marchand
2022-08-30  4:50     ` Hemant Agrawal
2022-08-26 12:41   ` [PATCH v4 13/27] bus/fslmc: " David Marchand
2022-08-30  4:49     ` Hemant Agrawal
2022-08-26 12:41   ` [PATCH v4 14/27] bus/ifpga: cleanup exported symbols David Marchand
2022-08-26 12:41   ` [PATCH v4 15/27] bus/ifpga: make driver-only headers private David Marchand
2022-08-26 12:41   ` [PATCH v4 16/27] bus/pci: " David Marchand
2022-08-26 12:41   ` [PATCH v4 17/27] bus/vdev: " David Marchand
2022-08-29  7:17     ` Ruifeng Wang
2022-08-29  8:12       ` David Marchand
2022-08-26 12:41   ` [PATCH v4 18/27] bus/vmbus: " David Marchand
2022-08-26 12:42   ` [PATCH v4 19/27] bus: move IOVA definition from header David Marchand
2022-08-26 12:42   ` [PATCH v4 20/27] bus: introduce accessors David Marchand
2022-08-26 12:42   ` David Marchand [this message]
2022-08-26 12:42   ` [PATCH v4 22/27] dev: introduce driver accessors David Marchand
2022-08-26 12:42   ` [PATCH v4 23/27] dev: hide driver object David Marchand
2022-08-26 12:42   ` [PATCH v4 24/27] dev: introduce device accessors David Marchand
2022-08-26 12:42   ` [PATCH v4 25/27] dev: provide bus specific information David Marchand
2022-08-26 12:42   ` [PATCH v4 26/27] bus/pci: fill " David Marchand
2022-08-26 12:42   ` [PATCH v4 27/27] dev: hide device object David Marchand
2022-09-05  8:35 ` [PATCH v5 00/27] Bus and device cleanup for 22.11 David Marchand
2022-09-05  8:35   ` [PATCH v5 01/27] devtools: forbid inclusions of driver only headers David Marchand
2022-09-05  8:35   ` [PATCH v5 02/27] common/mlx5: rework check on driver registration David Marchand
2022-09-05  8:35   ` [PATCH v5 03/27] raw/ifpga: remove PCI bus accessor David Marchand
2022-09-05  8:35   ` [PATCH v5 04/27] app/testpmd: drop PCI register commands David Marchand
2022-09-05  8:35   ` [PATCH v5 05/27] kni: stop populating PCI info in examples David Marchand
2022-09-05  8:35   ` [PATCH v5 06/27] examples/ethtool: prefer device name David Marchand
2022-09-05  8:35   ` [PATCH v5 07/27] dev: hide debug messages in device iterator David Marchand
2022-09-05  8:35   ` [PATCH v5 08/27] eal: deprecate RTE_FUNC_PTR_* macros David Marchand
2022-09-06  8:24     ` Jayatheerthan, Jay
2022-09-05  8:39   ` [PATCH v5 00/27] Bus and device cleanup for 22.11 David Marchand
2022-09-05  8:39 ` David Marchand
2022-09-05  8:39   ` [PATCH v5 01/27] devtools: forbid inclusions of driver only headers David Marchand
2022-09-05  8:39   ` [PATCH v5 02/27] common/mlx5: rework check on driver registration David Marchand
2022-09-05  8:39   ` [PATCH v5 03/27] raw/ifpga: remove PCI bus accessor David Marchand
2022-09-05  8:39   ` [PATCH v5 04/27] app/testpmd: drop PCI register commands David Marchand
2022-09-05  8:39   ` [PATCH v5 05/27] kni: stop populating PCI info in examples David Marchand
2022-09-05  8:39   ` [PATCH v5 06/27] examples/ethtool: prefer device name David Marchand
2022-09-05  8:39   ` [PATCH v5 07/27] dev: hide debug messages in device iterator David Marchand
2022-09-05  8:39   ` [PATCH v5 08/27] eal: deprecate RTE_FUNC_PTR_* macros David Marchand
2022-09-06  6:11     ` [EXT] " Akhil Goyal
2022-09-05  8:39   ` [PATCH v5 09/27] devargs: remove dependency on bus header David Marchand
2022-09-05  8:39   ` [PATCH v5 10/27] build: export drivers headers David Marchand
2022-09-05  8:39   ` [PATCH v5 11/27] bus/auxiliary: make driver-only headers private David Marchand
2022-09-05  8:39   ` [PATCH v5 12/27] bus/dpaa: " David Marchand
2022-09-05  8:39   ` [PATCH v5 13/27] bus/fslmc: " David Marchand
2022-09-05  8:39   ` [PATCH v5 14/27] bus/ifpga: cleanup exported symbols David Marchand
2022-09-05  8:39   ` [PATCH v5 15/27] bus/ifpga: make driver-only headers private David Marchand
2022-09-05  8:39   ` [PATCH v5 16/27] bus/pci: " David Marchand
2022-09-05  8:39   ` [PATCH v5 17/27] bus/vdev: " David Marchand
2022-09-05  8:39   ` [PATCH v5 18/27] bus/vmbus: " David Marchand
2022-09-05  8:39   ` [PATCH v5 19/27] bus: move IOVA definition from header David Marchand
2022-09-05  8:39   ` [PATCH v5 20/27] bus: introduce accessors David Marchand
2022-09-05  8:39   ` [PATCH v5 21/27] bus: hide bus object David Marchand
2022-09-05  8:39   ` [PATCH v5 22/27] dev: introduce driver accessors David Marchand
2022-09-05  8:39   ` [PATCH v5 23/27] dev: hide driver object David Marchand
2022-09-06  6:05     ` [EXT] " Akhil Goyal
2022-09-06  6:46     ` Gujjar, Abhinandan S
2022-09-05  8:39   ` [PATCH v5 24/27] dev: introduce device accessors David Marchand
2022-09-05  8:39   ` [PATCH v5 25/27] dev: provide bus specific information David Marchand
2022-09-05  8:39   ` [PATCH v5 26/27] bus/pci: fill " David Marchand
2022-09-05  8:39   ` [PATCH v5 27/27] dev: hide device object David Marchand
2022-09-14  7:58 ` [PATCH v6 00/27] Bus and device cleanup for 22.11 David Marchand
2022-09-14  7:58   ` [PATCH v6 01/27] devtools: forbid inclusions of driver only headers David Marchand
2022-09-14  7:58   ` [PATCH v6 02/27] common/mlx5: rework check on driver registration David Marchand
2022-09-14  7:58   ` [PATCH v6 03/27] raw/ifpga: remove PCI bus accessor David Marchand
2022-09-14  7:58   ` [PATCH v6 04/27] app/testpmd: drop PCI register commands David Marchand
2022-09-14  7:58   ` [PATCH v6 05/27] kni: stop populating PCI info in examples David Marchand
2022-09-14  7:58   ` [PATCH v6 06/27] examples/ethtool: prefer device name David Marchand
2022-09-14  7:58   ` [PATCH v6 07/27] dev: hide debug messages in device iterator David Marchand
2022-09-14  7:58   ` [PATCH v6 08/27] eal: deprecate RTE_FUNC_PTR_* macros David Marchand
2022-10-26  9:04     ` Morten Brørup
2022-10-26  9:21       ` David Marchand
2022-10-26 10:30         ` Morten Brørup
2022-09-14  7:58   ` [PATCH v6 09/27] devargs: remove dependency on bus header David Marchand
2022-09-14  7:58   ` [PATCH v6 10/27] build: export drivers headers David Marchand
2022-09-14  7:58   ` [PATCH v6 11/27] bus/auxiliary: make driver-only headers private David Marchand
2022-09-14  7:58   ` [PATCH v6 12/27] bus/dpaa: " David Marchand
2022-09-14  7:58   ` [PATCH v6 13/27] bus/fslmc: " David Marchand
2022-09-14  7:58   ` [PATCH v6 14/27] bus/ifpga: cleanup exported symbols David Marchand
2022-09-14  7:58   ` [PATCH v6 15/27] bus/ifpga: make driver-only headers private David Marchand
2022-09-14  7:58   ` [PATCH v6 16/27] bus/pci: " David Marchand
2022-09-14  7:58   ` [PATCH v6 17/27] bus/vdev: " David Marchand
2022-09-14  7:58   ` [PATCH v6 18/27] bus/vmbus: " David Marchand
2022-09-14  7:58   ` [PATCH v6 19/27] bus: move IOVA definition from header David Marchand
2022-09-14  7:58   ` [PATCH v6 20/27] bus: introduce accessors David Marchand
2022-09-14  7:58   ` [PATCH v6 21/27] bus: hide bus object David Marchand
2022-09-14  7:58   ` [PATCH v6 22/27] dev: introduce driver accessors David Marchand
2022-09-14  7:58   ` [PATCH v6 23/27] dev: hide driver object David Marchand
2022-09-14  7:58   ` [PATCH v6 24/27] dev: introduce device accessors David Marchand
2022-09-14  7:58   ` [PATCH v6 25/27] dev: provide bus specific information David Marchand
2022-09-14  7:58   ` [PATCH v6 26/27] bus/pci: fill " David Marchand
2022-09-14  7:58   ` [PATCH v6 27/27] dev: hide device object David Marchand
2022-09-24  7:14   ` [PATCH v6 00/27] Bus and device cleanup for 22.11 David Marchand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220826124208.671400-22-david.marchand@redhat.com \
    --to=david.marchand@redhat.com \
    --cc=anatoly.burakov@intel.com \
    --cc=andrew.rybchenko@oktetlabs.ru \
    --cc=bruce.richardson@intel.com \
    --cc=chas3@att.com \
    --cc=chenbo.xia@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@xilinx.com \
    --cc=grive@u256.net \
    --cc=hemant.agrawal@nxp.com \
    --cc=humin29@huawei.com \
    --cc=kevin.laatz@intel.com \
    --cc=longli@microsoft.com \
    --cc=matan@nvidia.com \
    --cc=maxime.coquelin@redhat.com \
    --cc=mdr@ashroe.eu \
    --cc=parav@nvidia.com \
    --cc=reshma.pattan@intel.com \
    --cc=rosen.xu@intel.com \
    --cc=sachin.saxena@oss.nxp.com \
    --cc=sthemmin@microsoft.com \
    --cc=thomas@monjalon.net \
    --cc=viacheslavo@nvidia.com \
    --cc=xuemingl@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).