From: David Marchand <david.marchand@redhat.com>
To: dev@dpdk.org
Cc: 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>,
Bruce Richardson <bruce.richardson@intel.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>,
Thomas Monjalon <thomas@monjalon.net>,
Ferruh Yigit <ferruh.yigit@xilinx.com>,
Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,
Reshma Pattan <reshma.pattan@intel.com>
Subject: [RFC v3 21/26] bus: hide bus object
Date: Thu, 28 Jul 2022 17:26:35 +0200 [thread overview]
Message-ID: <20220728152640.547725-22-david.marchand@redhat.com> (raw)
In-Reply-To: <20220728152640.547725-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>
---
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 dba252067c..3512f01539 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -43,12 +43,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 c55ee19bc2..46bb35ad09 100644
--- a/doc/guides/rel_notes/release_22_11.rst
+++ b/doc/guides/rel_notes/release_22_11.rst
@@ -84,6 +84,12 @@ API Changes
Also, make sure to start the actual text at the margin.
=======================================================
+* 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 ebbe8cca3d..9eba97f2d2 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.36.1
next prev parent reply other threads:[~2022-07-28 15:29 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 ` David Marchand [this message]
2022-07-28 16:56 ` [RFC v3 21/26] bus: hide bus object 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 ` [PATCH v4 21/27] bus: hide bus object David Marchand
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=20220728152640.547725-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).