get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/115861/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 115861,
    "url": "http://patches.dpdk.org/api/patches/115861/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20220905083933.2506819-22-david.marchand@redhat.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20220905083933.2506819-22-david.marchand@redhat.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220905083933.2506819-22-david.marchand@redhat.com",
    "date": "2022-09-05T08:39:27",
    "name": "[v5,21/27] bus: hide bus object",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "d026e32d9a33bb8c218c43d7879a6e8d9175cc8d",
    "submitter": {
        "id": 1173,
        "url": "http://patches.dpdk.org/api/people/1173/?format=api",
        "name": "David Marchand",
        "email": "david.marchand@redhat.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20220905083933.2506819-22-david.marchand@redhat.com/mbox/",
    "series": [
        {
            "id": 24531,
            "url": "http://patches.dpdk.org/api/series/24531/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=24531",
            "date": "2022-09-05T08:39:07",
            "name": "[v5,01/27] devtools: forbid inclusions of driver only headers",
            "version": 5,
            "mbox": "http://patches.dpdk.org/series/24531/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/115861/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/115861/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 43259A054A;\n\tMon,  5 Sep 2022 10:42:08 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 6C47842BA4;\n\tMon,  5 Sep 2022 10:41:22 +0200 (CEST)",
            "from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.133.124])\n by mails.dpdk.org (Postfix) with ESMTP id 0415742825\n for <dev@dpdk.org>; Mon,  5 Sep 2022 10:41:20 +0200 (CEST)",
            "from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com\n [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n us-mta-510-U7wfZW4sP1qQhuahaqhOGg-1; Mon, 05 Sep 2022 04:41:17 -0400",
            "from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com\n [10.11.54.8])\n (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n (No client certificate requested)\n by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 8C947101E9B0;\n Mon,  5 Sep 2022 08:41:16 +0000 (UTC)",
            "from fchome.redhat.com (unknown [10.40.193.251])\n by smtp.corp.redhat.com (Postfix) with ESMTP id 76912C15BB3;\n Mon,  5 Sep 2022 08:41:12 +0000 (UTC)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1662367280;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=CMfxGkuQ7o/unrOWIzTiCMKaApavmc8j/dCrd19Phnc=;\n b=g6bo7lbmbeDATGDZLZrrvZNEKG5N4OaOyP38mQAUGjzezEzjZVWGkXaB/bjqljm0fjapwa\n s4DImPAF6kyCwB7PI/9Wieqm+Nz+bV0A/UKBkWA0YyVf/rE6LBOgXX5bbJGGnJv02nd29v\n zhq7fKb74I1xAYPF6R9ADB5TURwJjtI=",
        "X-MC-Unique": "U7wfZW4sP1qQhuahaqhOGg-1",
        "From": "David Marchand <david.marchand@redhat.com>",
        "To": "dev@dpdk.org",
        "Cc": "thomas@monjalon.net, bruce.richardson@intel.com,\n Ray Kinsella <mdr@ashroe.eu>, Parav Pandit <parav@nvidia.com>,\n Xueming Li <xuemingl@nvidia.com>, Hemant Agrawal <hemant.agrawal@nxp.com>,\n Sachin Saxena <sachin.saxena@oss.nxp.com>, Rosen Xu <rosen.xu@intel.com>,\n Anatoly Burakov <anatoly.burakov@intel.com>,\n Stephen Hemminger <sthemmin@microsoft.com>, Long Li <longli@microsoft.com>,\n Matan Azrad <matan@nvidia.com>,\n Viacheslav Ovsiienko <viacheslavo@nvidia.com>,\n Kevin Laatz <kevin.laatz@intel.com>, Chas Williams <chas3@att.com>,\n \"Min Hu (Connor)\" <humin29@huawei.com>, Gaetan Rivet <grive@u256.net>,\n Maxime Coquelin <maxime.coquelin@redhat.com>,\n Chenbo Xia <chenbo.xia@intel.com>, Ferruh Yigit <ferruh.yigit@xilinx.com>,\n Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,\n Reshma Pattan <reshma.pattan@intel.com>",
        "Subject": "[PATCH v5 21/27] bus: hide bus object",
        "Date": "Mon,  5 Sep 2022 10:39:27 +0200",
        "Message-Id": "<20220905083933.2506819-22-david.marchand@redhat.com>",
        "In-Reply-To": "<20220905083933.2506819-1-david.marchand@redhat.com>",
        "References": "<20220628144643.1213026-1-david.marchand@redhat.com>\n <20220905083933.2506819-1-david.marchand@redhat.com>",
        "MIME-Version": "1.0",
        "X-Scanned-By": "MIMEDefang 2.85 on 10.11.54.8",
        "X-Mimecast-Spam-Score": "0",
        "X-Mimecast-Originator": "redhat.com",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain; charset=\"US-ASCII\"; x-default=true",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "Make rte_bus opaque for non internal users.\nThis will make extending this object possible without breaking the ABI.\n\nIntroduce a new driver header and move rte_bus definition and helpers.\nUpdate drivers and library to use the internal header.\n\nSome applications may have been dereferencing rte_bus objects, mark\nthis object's accessors as stable.\n\nSigned-off-by: David Marchand <david.marchand@redhat.com>\nAcked-by: Bruce Richardson <bruce.richardson@intel.com>\n---\nChanges since RFC v2:\n- updated release notes,\n- marked accessors as stable,\n\nChanges since RFC v1:\n- update all existing users of the public header to use the internal one,\n\n---\n app/test/test_devargs.c                  |   2 +-\n app/test/test_vdev.c                     |   2 +-\n doc/guides/rel_notes/deprecation.rst     |   6 -\n doc/guides/rel_notes/release_22_11.rst   |   6 +\n drivers/bus/auxiliary/auxiliary_common.c |   2 +-\n drivers/bus/auxiliary/auxiliary_params.c |   2 +-\n drivers/bus/auxiliary/private.h          |   2 +-\n drivers/bus/dpaa/dpaa_bus.c              |   2 +-\n drivers/bus/fslmc/fslmc_bus.c            |   2 +-\n drivers/bus/fslmc/private.h              |   2 +-\n drivers/bus/ifpga/ifpga_bus.c            |   2 +-\n drivers/bus/pci/linux/pci_vfio.c         |   2 +-\n drivers/bus/pci/pci_common.c             |   2 +-\n drivers/bus/pci/pci_params.c             |   2 +-\n drivers/bus/pci/private.h                |   2 +-\n drivers/bus/vdev/vdev.c                  |   2 +-\n drivers/bus/vmbus/private.h              |   2 +-\n drivers/common/mlx5/mlx5_common_pci.c    |   2 +-\n drivers/dma/idxd/idxd_bus.c              |   2 +-\n drivers/net/bonding/rte_eth_bond_args.c  |   2 +-\n drivers/net/failsafe/failsafe.c          |   2 +-\n drivers/net/failsafe/failsafe_eal.c      |   2 +-\n drivers/net/mlx5/linux/mlx5_os.c         |   2 +-\n drivers/net/netvsc/hn_ethdev.c           |   2 +-\n drivers/net/vdev_netvsc/vdev_netvsc.c    |   2 +-\n drivers/net/virtio/virtio_pci.c          |   2 +-\n drivers/raw/ioat/idxd_bus.c              |   2 +-\n lib/eal/common/eal_common_bus.c          |   2 +-\n lib/eal/common/eal_common_dev.c          |   2 +-\n lib/eal/common/eal_common_devargs.c      |   2 +-\n lib/eal/common/hotplug_mp.c              |   2 +-\n lib/eal/include/bus_driver.h             | 296 +++++++++++++++++++++++\n lib/eal/include/meson.build              |   4 +\n lib/eal/include/rte_bus.h                | 278 +--------------------\n lib/eal/linux/eal_dev.c                  |   2 +-\n lib/eal/version.map                      |   8 +-\n lib/ethdev/rte_ethdev.c                  |   2 +-\n lib/pcapng/rte_pcapng.c                  |   2 +-\n 38 files changed, 343 insertions(+), 319 deletions(-)\n create mode 100644 lib/eal/include/bus_driver.h",
    "diff": "diff --git a/app/test/test_devargs.c b/app/test/test_devargs.c\nindex ac5bc34c18..0a4c34a1ad 100644\n--- a/app/test/test_devargs.c\n+++ b/app/test/test_devargs.c\n@@ -9,7 +9,7 @@\n #include <rte_common.h>\n #include <rte_devargs.h>\n #include <rte_kvargs.h>\n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_class.h>\n \n #include \"test.h\"\ndiff --git a/app/test/test_vdev.c b/app/test/test_vdev.c\nindex 5eeff3106d..1904e76e44 100644\n--- a/app/test/test_vdev.c\n+++ b/app/test/test_vdev.c\n@@ -8,7 +8,7 @@\n \n #include <rte_common.h>\n #include <rte_kvargs.h>\n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_bus_vdev.h>\n \n #include \"test.h\"\ndiff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst\nindex 5b4ffc992d..98a00da385 100644\n--- a/doc/guides/rel_notes/deprecation.rst\n+++ b/doc/guides/rel_notes/deprecation.rst\n@@ -47,12 +47,6 @@ Deprecation Notices\n * mempool: The mempool API macros ``MEMPOOL_PG_*`` are deprecated and\n   will be removed in DPDK 22.11.\n \n-* bus: The ``rte_bus`` object will be made opaque in DPDK 22.11.\n-  The goal is to remove it from the public ABI and make this object extendable.\n-  As a side effect, registering a bus will be marked as an internal API:\n-  external users may still register their bus using a new driver header\n-  (see ``enable_driver_sdk`` meson option).\n-\n * drivers: As a follow-up of the work on the ``rte_bus`` object,\n   the ``rte_driver`` and ``rte_device`` objects (and as a domino effect,\n   their bus-specific counterparts) will be made opaque in DPDK 22.11.\ndiff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst\nindex e08a548285..36df0ccf93 100644\n--- a/doc/guides/rel_notes/release_22_11.rst\n+++ b/doc/guides/rel_notes/release_22_11.rst\n@@ -88,6 +88,12 @@ API Changes\n   in the future. Applications can use ``devtools/cocci/func_or_ret.cocci``\n   to update their code.\n \n+* bus: Registering a bus has been marked as an internal API.\n+  External users may still register their bus using the ``bus_driver.h``\n+  driver header (see ``enable_driver_sdk`` meson option).\n+  The ``rte_bus`` object is now opaque and must be manipulated through added\n+  accessors.\n+\n * drivers: Registering a driver on the ``auxiliary``, ``ifpga``, ``pci``,\n   ``vdev``, ``vmbus`` buses has been marked as an internal API.\n   External users may still register their driver using the associated driver\ndiff --git a/drivers/bus/auxiliary/auxiliary_common.c b/drivers/bus/auxiliary/auxiliary_common.c\nindex 6cf6c170ec..259ff152c4 100644\n--- a/drivers/bus/auxiliary/auxiliary_common.c\n+++ b/drivers/bus/auxiliary/auxiliary_common.c\n@@ -12,7 +12,7 @@\n #include <rte_errno.h>\n #include <rte_interrupts.h>\n #include <rte_log.h>\n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_per_lcore.h>\n #include <rte_memory.h>\n #include <rte_eal.h>\ndiff --git a/drivers/bus/auxiliary/auxiliary_params.c b/drivers/bus/auxiliary/auxiliary_params.c\nindex 0289777922..a889e392c6 100644\n--- a/drivers/bus/auxiliary/auxiliary_params.c\n+++ b/drivers/bus/auxiliary/auxiliary_params.c\n@@ -4,7 +4,7 @@\n \n #include <string.h>\n \n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_dev.h>\n #include <rte_errno.h>\n #include <rte_kvargs.h>\ndiff --git a/drivers/bus/auxiliary/private.h b/drivers/bus/auxiliary/private.h\nindex 3f49f62493..3dee13e1d1 100644\n--- a/drivers/bus/auxiliary/private.h\n+++ b/drivers/bus/auxiliary/private.h\n@@ -9,7 +9,7 @@\n #include <stdio.h>\n #include <sys/queue.h>\n \n-#include <rte_bus.h>\n+#include <bus_driver.h>\n \n #include \"bus_auxiliary_driver.h\"\n \ndiff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c\nindex 1ac6aa314f..682427ba2c 100644\n--- a/drivers/bus/dpaa/dpaa_bus.c\n+++ b/drivers/bus/dpaa/dpaa_bus.c\n@@ -29,7 +29,7 @@\n #include <ethdev_driver.h>\n #include <rte_malloc.h>\n #include <rte_ring.h>\n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_mbuf_pool_ops.h>\n #include <rte_mbuf_dyn.h>\n \ndiff --git a/drivers/bus/fslmc/fslmc_bus.c b/drivers/bus/fslmc/fslmc_bus.c\nindex b9b0981329..8503004e3d 100644\n--- a/drivers/bus/fslmc/fslmc_bus.c\n+++ b/drivers/bus/fslmc/fslmc_bus.c\n@@ -9,7 +9,7 @@\n #include <stdbool.h>\n \n #include <rte_log.h>\n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_malloc.h>\n #include <rte_devargs.h>\n #include <rte_memcpy.h>\ndiff --git a/drivers/bus/fslmc/private.h b/drivers/bus/fslmc/private.h\nindex 60d68155e1..6f14085d98 100644\n--- a/drivers/bus/fslmc/private.h\n+++ b/drivers/bus/fslmc/private.h\n@@ -5,7 +5,7 @@\n #ifndef BUS_FSLMC_PRIVATE_H\n #define BUS_FSLMC_PRIVATE_H\n \n-#include <rte_bus.h>\n+#include <bus_driver.h>\n \n #include <bus_fslmc_driver.h>\n \ndiff --git a/drivers/bus/ifpga/ifpga_bus.c b/drivers/bus/ifpga/ifpga_bus.c\nindex 27e2de7072..bb943b58b5 100644\n--- a/drivers/bus/ifpga/ifpga_bus.c\n+++ b/drivers/bus/ifpga/ifpga_bus.c\n@@ -14,7 +14,7 @@\n #include <fcntl.h>\n \n #include <rte_errno.h>\n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_per_lcore.h>\n #include <rte_memory.h>\n #include <rte_memzone.h>\ndiff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_vfio.c\nindex cd0d0b1670..fab3483d9f 100644\n--- a/drivers/bus/pci/linux/pci_vfio.c\n+++ b/drivers/bus/pci/linux/pci_vfio.c\n@@ -18,7 +18,7 @@\n #include <rte_malloc.h>\n #include <rte_vfio.h>\n #include <rte_eal.h>\n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_spinlock.h>\n #include <rte_tailq.h>\n \ndiff --git a/drivers/bus/pci/pci_common.c b/drivers/bus/pci/pci_common.c\nindex 0d61d49287..c26aacd364 100644\n--- a/drivers/bus/pci/pci_common.c\n+++ b/drivers/bus/pci/pci_common.c\n@@ -13,7 +13,7 @@\n #include <rte_errno.h>\n #include <rte_interrupts.h>\n #include <rte_log.h>\n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_pci.h>\n #include <rte_bus_pci.h>\n #include <rte_lcore.h>\ndiff --git a/drivers/bus/pci/pci_params.c b/drivers/bus/pci/pci_params.c\nindex 61a868707f..39d702a418 100644\n--- a/drivers/bus/pci/pci_params.c\n+++ b/drivers/bus/pci/pci_params.c\n@@ -4,7 +4,7 @@\n \n #include <sys/queue.h>\n \n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_bus_pci.h>\n #include <rte_dev.h>\n #include <rte_errno.h>\ndiff --git a/drivers/bus/pci/private.h b/drivers/bus/pci/private.h\nindex 4e40a2ed85..fddf49251d 100644\n--- a/drivers/bus/pci/private.h\n+++ b/drivers/bus/pci/private.h\n@@ -8,7 +8,7 @@\n #include <stdbool.h>\n #include <stdio.h>\n \n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <bus_pci_driver.h>\n #include <rte_os_shim.h>\n #include <rte_pci.h>\ndiff --git a/drivers/bus/vdev/vdev.c b/drivers/bus/vdev/vdev.c\nindex 7d78cf93bc..809a8bb08f 100644\n--- a/drivers/bus/vdev/vdev.c\n+++ b/drivers/bus/vdev/vdev.c\n@@ -12,7 +12,7 @@\n \n #include <rte_eal.h>\n #include <rte_dev.h>\n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_common.h>\n #include <rte_devargs.h>\n #include <rte_memory.h>\ndiff --git a/drivers/bus/vmbus/private.h b/drivers/bus/vmbus/private.h\nindex 3d233fa83c..e33424675c 100644\n--- a/drivers/bus/vmbus/private.h\n+++ b/drivers/bus/vmbus/private.h\n@@ -9,7 +9,7 @@\n #include <stdbool.h>\n #include <sys/uio.h>\n \n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <bus_vmbus_driver.h>\n #include <rte_log.h>\n #include <rte_eal_paging.h>\ndiff --git a/drivers/common/mlx5/mlx5_common_pci.c b/drivers/common/mlx5/mlx5_common_pci.c\nindex e82cb881bf..73178ce0f3 100644\n--- a/drivers/common/mlx5/mlx5_common_pci.c\n+++ b/drivers/common/mlx5/mlx5_common_pci.c\n@@ -9,7 +9,7 @@\n #include <rte_errno.h>\n #include <rte_class.h>\n #include <rte_pci.h>\n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <bus_pci_driver.h>\n \n #include \"mlx5_common_log.h\"\ndiff --git a/drivers/dma/idxd/idxd_bus.c b/drivers/dma/idxd/idxd_bus.c\nindex 13cb967f6d..e30dcfc281 100644\n--- a/drivers/dma/idxd/idxd_bus.c\n+++ b/drivers/dma/idxd/idxd_bus.c\n@@ -8,7 +8,7 @@\n #include <sys/mman.h>\n #include <libgen.h>\n \n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_devargs.h>\n #include <rte_eal.h>\n #include <rte_log.h>\ndiff --git a/drivers/net/bonding/rte_eth_bond_args.c b/drivers/net/bonding/rte_eth_bond_args.c\nindex 1a86eb3c00..6553166f5c 100644\n--- a/drivers/net/bonding/rte_eth_bond_args.c\n+++ b/drivers/net/bonding/rte_eth_bond_args.c\n@@ -4,7 +4,7 @@\n \n #include <rte_devargs.h>\n #include <rte_pci.h>\n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <bus_pci_driver.h>\n #include <rte_kvargs.h>\n \ndiff --git a/drivers/net/failsafe/failsafe.c b/drivers/net/failsafe/failsafe.c\nindex 5d4d52c341..32811403b4 100644\n--- a/drivers/net/failsafe/failsafe.c\n+++ b/drivers/net/failsafe/failsafe.c\n@@ -11,7 +11,7 @@\n #include <ethdev_vdev.h>\n #include <rte_devargs.h>\n #include <rte_kvargs.h>\n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <bus_vdev_driver.h>\n \n #include \"failsafe_private.h\"\ndiff --git a/drivers/net/failsafe/failsafe_eal.c b/drivers/net/failsafe/failsafe_eal.c\nindex 130344dce2..d71b512f81 100644\n--- a/drivers/net/failsafe/failsafe_eal.c\n+++ b/drivers/net/failsafe/failsafe_eal.c\n@@ -3,7 +3,7 @@\n  * Copyright 2017 Mellanox Technologies, Ltd\n  */\n \n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_string_fns.h>\n #include <rte_malloc.h>\n \ndiff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c\nindex efb262e368..4f0a6f4d55 100644\n--- a/drivers/net/mlx5/linux/mlx5_os.c\n+++ b/drivers/net/mlx5/linux/mlx5_os.c\n@@ -19,7 +19,7 @@\n #include <ethdev_driver.h>\n #include <ethdev_pci.h>\n #include <rte_pci.h>\n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <bus_pci_driver.h>\n #include <bus_auxiliary_driver.h>\n #include <rte_common.h>\ndiff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c\nindex 188d92ffac..ccc06bdda6 100644\n--- a/drivers/net/netvsc/hn_ethdev.c\n+++ b/drivers/net/netvsc/hn_ethdev.c\n@@ -31,7 +31,7 @@\n #include <rte_memory.h>\n #include <rte_eal.h>\n #include <rte_dev.h>\n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <bus_vmbus_driver.h>\n #include <rte_alarm.h>\n \ndiff --git a/drivers/net/vdev_netvsc/vdev_netvsc.c b/drivers/net/vdev_netvsc/vdev_netvsc.c\nindex 65043a04eb..dc90569df1 100644\n--- a/drivers/net/vdev_netvsc/vdev_netvsc.c\n+++ b/drivers/net/vdev_netvsc/vdev_netvsc.c\n@@ -24,7 +24,7 @@\n #include <unistd.h>\n \n #include <rte_alarm.h>\n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <bus_vdev_driver.h>\n #include <rte_common.h>\n #include <rte_dev.h>\ndiff --git a/drivers/net/virtio/virtio_pci.c b/drivers/net/virtio/virtio_pci.c\nindex 632451dcbe..9cf4d760b4 100644\n--- a/drivers/net/virtio/virtio_pci.c\n+++ b/drivers/net/virtio/virtio_pci.c\n@@ -9,7 +9,7 @@\n #endif\n \n #include <rte_io.h>\n-#include <rte_bus.h>\n+#include <bus_driver.h>\n \n #include \"virtio_pci.h\"\n #include \"virtio_logs.h\"\ndiff --git a/drivers/raw/ioat/idxd_bus.c b/drivers/raw/ioat/idxd_bus.c\nindex 539f51b1b1..f32d811055 100644\n--- a/drivers/raw/ioat/idxd_bus.c\n+++ b/drivers/raw/ioat/idxd_bus.c\n@@ -10,7 +10,7 @@\n #include <fcntl.h>\n #include <sys/mman.h>\n \n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_log.h>\n #include <rte_string_fns.h>\n #include \"ioat_private.h\"\ndiff --git a/lib/eal/common/eal_common_bus.c b/lib/eal/common/eal_common_bus.c\nindex cbf382f967..be64d31b0f 100644\n--- a/lib/eal/common/eal_common_bus.c\n+++ b/lib/eal/common/eal_common_bus.c\n@@ -6,7 +6,7 @@\n #include <string.h>\n #include <sys/queue.h>\n \n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_debug.h>\n #include <rte_string_fns.h>\n #include <rte_errno.h>\ndiff --git a/lib/eal/common/eal_common_dev.c b/lib/eal/common/eal_common_dev.c\nindex b6f0392f30..62a598957c 100644\n--- a/lib/eal/common/eal_common_dev.c\n+++ b/lib/eal/common/eal_common_dev.c\n@@ -7,7 +7,7 @@\n #include <string.h>\n #include <sys/queue.h>\n \n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_class.h>\n #include <rte_dev.h>\n #include <rte_devargs.h>\ndiff --git a/lib/eal/common/eal_common_devargs.c b/lib/eal/common/eal_common_devargs.c\nindex d5833af373..03e6e59baf 100644\n--- a/lib/eal/common/eal_common_devargs.c\n+++ b/lib/eal/common/eal_common_devargs.c\n@@ -10,7 +10,7 @@\n #include <string.h>\n #include <stdarg.h>\n \n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_class.h>\n #include <rte_dev.h>\n #include <rte_devargs.h>\ndiff --git a/lib/eal/common/hotplug_mp.c b/lib/eal/common/hotplug_mp.c\nindex 1614a57752..5202bd5658 100644\n--- a/lib/eal/common/hotplug_mp.c\n+++ b/lib/eal/common/hotplug_mp.c\n@@ -3,7 +3,7 @@\n  */\n #include <string.h>\n \n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_eal.h>\n #include <rte_errno.h>\n #include <rte_alarm.h>\ndiff --git a/lib/eal/include/bus_driver.h b/lib/eal/include/bus_driver.h\nnew file mode 100644\nindex 0000000000..d2e615a736\n--- /dev/null\n+++ b/lib/eal/include/bus_driver.h\n@@ -0,0 +1,296 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright (c) 2022 Red Hat, Inc.\n+ */\n+\n+#ifndef BUS_DRIVER_H\n+#define BUS_DRIVER_H\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+#include <rte_bus.h>\n+#include <rte_compat.h>\n+#include <rte_dev.h>\n+#include <rte_eal.h>\n+#include <rte_tailq.h>\n+\n+struct rte_devargs;\n+struct rte_device;\n+\n+/** Double linked list of buses */\n+RTE_TAILQ_HEAD(rte_bus_list, rte_bus);\n+\n+/**\n+ * Bus specific scan for devices attached on the bus.\n+ * For each bus object, the scan would be responsible for finding devices and\n+ * adding them to its private device list.\n+ *\n+ * A bus should mandatorily implement this method.\n+ *\n+ * @return\n+ *\t0 for successful scan\n+ *\t<0 for unsuccessful scan with error value\n+ */\n+typedef int (*rte_bus_scan_t)(void);\n+\n+/**\n+ * Implementation specific probe function which is responsible for linking\n+ * devices on that bus with applicable drivers.\n+ *\n+ * This is called while iterating over each registered bus.\n+ *\n+ * @return\n+ *\t0 for successful probe\n+ *\t!0 for any error while probing\n+ */\n+typedef int (*rte_bus_probe_t)(void);\n+\n+/**\n+ * Device iterator to find a device on a bus.\n+ *\n+ * This function returns an rte_device if one of those held by the bus\n+ * matches the data passed as parameter.\n+ *\n+ * If the comparison function returns zero this function should stop iterating\n+ * over any more devices. To continue a search the device of a previous search\n+ * can be passed via the start parameter.\n+ *\n+ * @param cmp\n+ *\tComparison function.\n+ *\n+ * @param data\n+ *\tData to compare each device against.\n+ *\n+ * @param start\n+ *\tstarting point for the iteration\n+ *\n+ * @return\n+ *\tThe first device matching the data, NULL if none exists.\n+ */\n+typedef struct rte_device *\n+(*rte_bus_find_device_t)(const struct rte_device *start, rte_dev_cmp_t cmp,\n+\t\t\t const void *data);\n+\n+/**\n+ * Implementation specific probe function which is responsible for linking\n+ * devices on that bus with applicable drivers.\n+ *\n+ * @param dev\n+ *\tDevice pointer that was returned by a previous call to find_device.\n+ *\n+ * @return\n+ *\t0 on success.\n+ *\t!0 on error.\n+ */\n+typedef int (*rte_bus_plug_t)(struct rte_device *dev);\n+\n+/**\n+ * Implementation specific remove function which is responsible for unlinking\n+ * devices on that bus from assigned driver.\n+ *\n+ * @param dev\n+ *\tDevice pointer that was returned by a previous call to find_device.\n+ *\n+ * @return\n+ *\t0 on success.\n+ *\t!0 on error.\n+ */\n+typedef int (*rte_bus_unplug_t)(struct rte_device *dev);\n+\n+/**\n+ * Bus specific parsing function.\n+ * Validates the syntax used in the textual representation of a device,\n+ * If the syntax is valid and ``addr`` is not NULL, writes the bus-specific\n+ * device representation to ``addr``.\n+ *\n+ * @param[in] name\n+ *\tdevice textual description\n+ *\n+ * @param[out] addr\n+ *\tdevice information location address, into which parsed info\n+ *\tshould be written. If NULL, nothing should be written, which\n+ *\tis not an error.\n+ *\n+ * @return\n+ *\t0 if parsing was successful.\n+ *\t!0 for any error.\n+ */\n+typedef int (*rte_bus_parse_t)(const char *name, void *addr);\n+\n+/**\n+ * Parse bus part of the device arguments.\n+ *\n+ * The field name of the struct rte_devargs will be set.\n+ *\n+ * @param da\n+ *\tPointer to the devargs to parse.\n+ *\n+ * @return\n+ *\t0 on successful parsing, otherwise rte_errno is set.\n+ *\t-EINVAL: on parsing error.\n+ *\t-ENODEV: if no key matching a device argument is specified.\n+ *\t-E2BIG: device name is too long.\n+ */\n+typedef int (*rte_bus_devargs_parse_t)(struct rte_devargs *da);\n+\n+/**\n+ * Device level DMA map function.\n+ * After a successful call, the memory segment will be mapped to the\n+ * given device.\n+ *\n+ * @param dev\n+ *\tDevice pointer.\n+ * @param addr\n+ *\tVirtual address to map.\n+ * @param iova\n+ *\tIOVA address to map.\n+ * @param len\n+ *\tLength of the memory segment being mapped.\n+ *\n+ * @return\n+ *\t0 if mapping was successful.\n+ *\tNegative value and rte_errno is set otherwise.\n+ */\n+typedef int (*rte_dev_dma_map_t)(struct rte_device *dev, void *addr,\n+\t\t\t\t  uint64_t iova, size_t len);\n+\n+/**\n+ * Device level DMA unmap function.\n+ * After a successful call, the memory segment will no longer be\n+ * accessible by the given device.\n+ *\n+ * @param dev\n+ *\tDevice pointer.\n+ * @param addr\n+ *\tVirtual address to unmap.\n+ * @param iova\n+ *\tIOVA address to unmap.\n+ * @param len\n+ *\tLength of the memory segment being mapped.\n+ *\n+ * @return\n+ *\t0 if un-mapping was successful.\n+ *\tNegative value and rte_errno is set otherwise.\n+ */\n+typedef int (*rte_dev_dma_unmap_t)(struct rte_device *dev, void *addr,\n+\t\t\t\t   uint64_t iova, size_t len);\n+\n+/**\n+ * Implement a specific hot-unplug handler, which is responsible for\n+ * handle the failure when device be hot-unplugged. When the event of\n+ * hot-unplug be detected, it could call this function to handle\n+ * the hot-unplug failure and avoid app crash.\n+ * @param dev\n+ *\tPointer of the device structure.\n+ *\n+ * @return\n+ *\t0 on success.\n+ *\t!0 on error.\n+ */\n+typedef int (*rte_bus_hot_unplug_handler_t)(struct rte_device *dev);\n+\n+/**\n+ * Implement a specific sigbus handler, which is responsible for handling\n+ * the sigbus error which is either original memory error, or specific memory\n+ * error that caused of device be hot-unplugged. When sigbus error be captured,\n+ * it could call this function to handle sigbus error.\n+ * @param failure_addr\n+ *\tPointer of the fault address of the sigbus error.\n+ *\n+ * @return\n+ *\t0 for success handle the sigbus for hot-unplug.\n+ *\t1 for not process it, because it is a generic sigbus error.\n+ *\t-1 for failed to handle the sigbus for hot-unplug.\n+ */\n+typedef int (*rte_bus_sigbus_handler_t)(const void *failure_addr);\n+\n+/**\n+ * Bus scan policies\n+ */\n+enum rte_bus_scan_mode {\n+\tRTE_BUS_SCAN_UNDEFINED,\n+\tRTE_BUS_SCAN_ALLOWLIST,\n+\tRTE_BUS_SCAN_BLOCKLIST,\n+};\n+\n+/**\n+ * A structure used to configure bus operations.\n+ */\n+struct rte_bus_conf {\n+\tenum rte_bus_scan_mode scan_mode; /**< Scan policy. */\n+};\n+\n+\n+/**\n+ * Get common iommu class of the all the devices on the bus. The bus may\n+ * check that those devices are attached to iommu driver.\n+ * If no devices are attached to the bus. The bus may return with don't care\n+ * (_DC) value.\n+ * Otherwise, The bus will return appropriate _pa or _va iova mode.\n+ *\n+ * @return\n+ *      enum rte_iova_mode value.\n+ */\n+typedef enum rte_iova_mode (*rte_bus_get_iommu_class_t)(void);\n+\n+/**\n+ * A structure describing a generic bus.\n+ */\n+struct rte_bus {\n+\tRTE_TAILQ_ENTRY(rte_bus) next; /**< Next bus object in linked list */\n+\tconst char *name;            /**< Name of the bus */\n+\trte_bus_scan_t scan;         /**< Scan for devices attached to bus */\n+\trte_bus_probe_t probe;       /**< Probe devices on bus */\n+\trte_bus_find_device_t find_device; /**< Find a device on the bus */\n+\trte_bus_plug_t plug;         /**< Probe single device for drivers */\n+\trte_bus_unplug_t unplug;     /**< Remove single device from driver */\n+\trte_bus_parse_t parse;       /**< Parse a device name */\n+\trte_bus_devargs_parse_t devargs_parse; /**< Parse bus devargs */\n+\trte_dev_dma_map_t dma_map;   /**< DMA map for device in the bus */\n+\trte_dev_dma_unmap_t dma_unmap; /**< DMA unmap for device in the bus */\n+\tstruct rte_bus_conf conf;    /**< Bus configuration */\n+\trte_bus_get_iommu_class_t get_iommu_class; /**< Get iommu class */\n+\trte_dev_iterate_t dev_iterate; /**< Device iterator. */\n+\trte_bus_hot_unplug_handler_t hot_unplug_handler;\n+\t\t\t\t/**< handle hot-unplug failure on the bus */\n+\trte_bus_sigbus_handler_t sigbus_handler;\n+\t\t\t\t\t/**< handle sigbus error on the bus */\n+};\n+\n+/**\n+ * Register a Bus handler.\n+ *\n+ * @param bus\n+ *   A pointer to a rte_bus structure describing the bus\n+ *   to be registered.\n+ */\n+__rte_internal\n+void rte_bus_register(struct rte_bus *bus);\n+\n+/**\n+ * Helper for Bus registration.\n+ * The constructor has higher priority than PMD constructors.\n+ */\n+#define RTE_REGISTER_BUS(nm, bus) \\\n+RTE_INIT_PRIO(businitfn_ ##nm, BUS) \\\n+{\\\n+\t(bus).name = RTE_STR(nm);\\\n+\trte_bus_register(&bus); \\\n+}\n+\n+/**\n+ * Unregister a Bus handler.\n+ *\n+ * @param bus\n+ *   A pointer to a rte_bus structure describing the bus\n+ *   to be unregistered.\n+ */\n+__rte_internal\n+void rte_bus_unregister(struct rte_bus *bus);\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* BUS_DRIVER_H */\ndiff --git a/lib/eal/include/meson.build b/lib/eal/include/meson.build\nindex fd6e844224..77d8621a51 100644\n--- a/lib/eal/include/meson.build\n+++ b/lib/eal/include/meson.build\n@@ -55,6 +55,10 @@ headers += files(\n         'rte_vfio.h',\n )\n \n+driver_sdk_headers = files(\n+        'bus_driver.h',\n+)\n+\n # special case install the generic headers, since they go in a subdir\n generic_headers = files(\n         'generic/rte_atomic.h',\ndiff --git a/lib/eal/include/rte_bus.h b/lib/eal/include/rte_bus.h\nindex 3848b44db0..dfe756fb11 100644\n--- a/lib/eal/include/rte_bus.h\n+++ b/lib/eal/include/rte_bus.h\n@@ -20,284 +20,21 @@ extern \"C\" {\n \n #include <stdio.h>\n \n-#include <rte_dev.h>\n #include <rte_eal.h>\n-#include <rte_log.h>\n \n-/** Double linked list of buses */\n-RTE_TAILQ_HEAD(rte_bus_list, rte_bus);\n-\n-/**\n- * Bus specific scan for devices attached on the bus.\n- * For each bus object, the scan would be responsible for finding devices and\n- * adding them to its private device list.\n- *\n- * A bus should mandatorily implement this method.\n- *\n- * @return\n- *\t0 for successful scan\n- *\t<0 for unsuccessful scan with error value\n- */\n-typedef int (*rte_bus_scan_t)(void);\n-\n-/**\n- * Implementation specific probe function which is responsible for linking\n- * devices on that bus with applicable drivers.\n- *\n- * This is called while iterating over each registered bus.\n- *\n- * @return\n- *\t0 for successful probe\n- *\t!0 for any error while probing\n- */\n-typedef int (*rte_bus_probe_t)(void);\n-\n-/**\n- * Device iterator to find a device on a bus.\n- *\n- * This function returns an rte_device if one of those held by the bus\n- * matches the data passed as parameter.\n- *\n- * If the comparison function returns zero this function should stop iterating\n- * over any more devices. To continue a search the device of a previous search\n- * can be passed via the start parameter.\n- *\n- * @param cmp\n- *\tComparison function.\n- *\n- * @param data\n- *\tData to compare each device against.\n- *\n- * @param start\n- *\tstarting point for the iteration\n- *\n- * @return\n- *\tThe first device matching the data, NULL if none exists.\n- */\n-typedef struct rte_device *\n-(*rte_bus_find_device_t)(const struct rte_device *start, rte_dev_cmp_t cmp,\n-\t\t\t const void *data);\n-\n-/**\n- * Implementation specific probe function which is responsible for linking\n- * devices on that bus with applicable drivers.\n- *\n- * @param dev\n- *\tDevice pointer that was returned by a previous call to find_device.\n- *\n- * @return\n- *\t0 on success.\n- *\t!0 on error.\n- */\n-typedef int (*rte_bus_plug_t)(struct rte_device *dev);\n-\n-/**\n- * Implementation specific remove function which is responsible for unlinking\n- * devices on that bus from assigned driver.\n- *\n- * @param dev\n- *\tDevice pointer that was returned by a previous call to find_device.\n- *\n- * @return\n- *\t0 on success.\n- *\t!0 on error.\n- */\n-typedef int (*rte_bus_unplug_t)(struct rte_device *dev);\n-\n-/**\n- * Bus specific parsing function.\n- * Validates the syntax used in the textual representation of a device,\n- * If the syntax is valid and ``addr`` is not NULL, writes the bus-specific\n- * device representation to ``addr``.\n- *\n- * @param[in] name\n- *\tdevice textual description\n- *\n- * @param[out] addr\n- *\tdevice information location address, into which parsed info\n- *\tshould be written. If NULL, nothing should be written, which\n- *\tis not an error.\n- *\n- * @return\n- *\t0 if parsing was successful.\n- *\t!0 for any error.\n- */\n-typedef int (*rte_bus_parse_t)(const char *name, void *addr);\n-\n-/**\n- * Parse bus part of the device arguments.\n- *\n- * The field name of the struct rte_devargs will be set.\n- *\n- * @param da\n- *\tPointer to the devargs to parse.\n- *\n- * @return\n- *\t0 on successful parsing, otherwise rte_errno is set.\n- *\t-EINVAL: on parsing error.\n- *\t-ENODEV: if no key matching a device argument is specified.\n- *\t-E2BIG: device name is too long.\n- */\n-typedef int (*rte_bus_devargs_parse_t)(struct rte_devargs *da);\n-\n-/**\n- * Device level DMA map function.\n- * After a successful call, the memory segment will be mapped to the\n- * given device.\n- *\n- * @param dev\n- *\tDevice pointer.\n- * @param addr\n- *\tVirtual address to map.\n- * @param iova\n- *\tIOVA address to map.\n- * @param len\n- *\tLength of the memory segment being mapped.\n- *\n- * @return\n- *\t0 if mapping was successful.\n- *\tNegative value and rte_errno is set otherwise.\n- */\n-typedef int (*rte_dev_dma_map_t)(struct rte_device *dev, void *addr,\n-\t\t\t\t  uint64_t iova, size_t len);\n-\n-/**\n- * Device level DMA unmap function.\n- * After a successful call, the memory segment will no longer be\n- * accessible by the given device.\n- *\n- * @param dev\n- *\tDevice pointer.\n- * @param addr\n- *\tVirtual address to unmap.\n- * @param iova\n- *\tIOVA address to unmap.\n- * @param len\n- *\tLength of the memory segment being mapped.\n- *\n- * @return\n- *\t0 if un-mapping was successful.\n- *\tNegative value and rte_errno is set otherwise.\n- */\n-typedef int (*rte_dev_dma_unmap_t)(struct rte_device *dev, void *addr,\n-\t\t\t\t   uint64_t iova, size_t len);\n-\n-/**\n- * Implement a specific hot-unplug handler, which is responsible for\n- * handle the failure when device be hot-unplugged. When the event of\n- * hot-unplug be detected, it could call this function to handle\n- * the hot-unplug failure and avoid app crash.\n- * @param dev\n- *\tPointer of the device structure.\n- *\n- * @return\n- *\t0 on success.\n- *\t!0 on error.\n- */\n-typedef int (*rte_bus_hot_unplug_handler_t)(struct rte_device *dev);\n-\n-/**\n- * Implement a specific sigbus handler, which is responsible for handling\n- * the sigbus error which is either original memory error, or specific memory\n- * error that caused of device be hot-unplugged. When sigbus error be captured,\n- * it could call this function to handle sigbus error.\n- * @param failure_addr\n- *\tPointer of the fault address of the sigbus error.\n- *\n- * @return\n- *\t0 for success handle the sigbus for hot-unplug.\n- *\t1 for not process it, because it is a generic sigbus error.\n- *\t-1 for failed to handle the sigbus for hot-unplug.\n- */\n-typedef int (*rte_bus_sigbus_handler_t)(const void *failure_addr);\n-\n-/**\n- * Bus scan policies\n- */\n-enum rte_bus_scan_mode {\n-\tRTE_BUS_SCAN_UNDEFINED,\n-\tRTE_BUS_SCAN_ALLOWLIST,\n-\tRTE_BUS_SCAN_BLOCKLIST,\n-};\n-\n-/**\n- * A structure used to configure bus operations.\n- */\n-struct rte_bus_conf {\n-\tenum rte_bus_scan_mode scan_mode; /**< Scan policy. */\n-};\n-\n-\n-/**\n- * Get common iommu class of the all the devices on the bus. The bus may\n- * check that those devices are attached to iommu driver.\n- * If no devices are attached to the bus. The bus may return with don't care\n- * (_DC) value.\n- * Otherwise, The bus will return appropriate _pa or _va iova mode.\n- *\n- * @return\n- *      enum rte_iova_mode value.\n- */\n-typedef enum rte_iova_mode (*rte_bus_get_iommu_class_t)(void);\n-\n-\n-/**\n- * A structure describing a generic bus.\n- */\n-struct rte_bus {\n-\tRTE_TAILQ_ENTRY(rte_bus) next; /**< Next bus object in linked list */\n-\tconst char *name;            /**< Name of the bus */\n-\trte_bus_scan_t scan;         /**< Scan for devices attached to bus */\n-\trte_bus_probe_t probe;       /**< Probe devices on bus */\n-\trte_bus_find_device_t find_device; /**< Find a device on the bus */\n-\trte_bus_plug_t plug;         /**< Probe single device for drivers */\n-\trte_bus_unplug_t unplug;     /**< Remove single device from driver */\n-\trte_bus_parse_t parse;       /**< Parse a device name */\n-\trte_bus_devargs_parse_t devargs_parse; /**< Parse bus devargs */\n-\trte_dev_dma_map_t dma_map;   /**< DMA map for device in the bus */\n-\trte_dev_dma_unmap_t dma_unmap; /**< DMA unmap for device in the bus */\n-\tstruct rte_bus_conf conf;    /**< Bus configuration */\n-\trte_bus_get_iommu_class_t get_iommu_class; /**< Get iommu class */\n-\trte_dev_iterate_t dev_iterate; /**< Device iterator. */\n-\trte_bus_hot_unplug_handler_t hot_unplug_handler;\n-\t\t\t\t/**< handle hot-unplug failure on the bus */\n-\trte_bus_sigbus_handler_t sigbus_handler;\n-\t\t\t\t\t/**< handle sigbus error on the bus */\n-\n-};\n+struct rte_bus;\n+struct rte_device;\n \n /**\n  * Retrieve a bus name.\n  *\n- * @warning\n- * @b EXPERIMENTAL: this API may change without prior notice\n- *\n  * @param bus\n  *   A pointer to a rte_bus structure.\n  * @return\n  *   A pointer to the bus name string.\n  */\n-__rte_experimental\n const char *rte_bus_name(const struct rte_bus *bus);\n \n-/**\n- * Register a Bus handler.\n- *\n- * @param bus\n- *   A pointer to a rte_bus structure describing the bus\n- *   to be registered.\n- */\n-void rte_bus_register(struct rte_bus *bus);\n-\n-/**\n- * Unregister a Bus handler.\n- *\n- * @param bus\n- *   A pointer to a rte_bus structure describing the bus\n- *   to be unregistered.\n- */\n-void rte_bus_unregister(struct rte_bus *bus);\n-\n /**\n  * Scan all the buses.\n  *\n@@ -387,17 +124,6 @@ struct rte_bus *rte_bus_find_by_name(const char *busname);\n  */\n enum rte_iova_mode rte_bus_get_iommu_class(void);\n \n-/**\n- * Helper for Bus registration.\n- * The constructor has higher priority than PMD constructors.\n- */\n-#define RTE_REGISTER_BUS(nm, bus) \\\n-RTE_INIT_PRIO(businitfn_ ##nm, BUS) \\\n-{\\\n-\t(bus).name = RTE_STR(nm);\\\n-\trte_bus_register(&bus); \\\n-}\n-\n #ifdef __cplusplus\n }\n #endif\ndiff --git a/lib/eal/linux/eal_dev.c b/lib/eal/linux/eal_dev.c\nindex 02ae1cde29..098a2c3076 100644\n--- a/lib/eal/linux/eal_dev.c\n+++ b/lib/eal/linux/eal_dev.c\n@@ -13,7 +13,7 @@\n #include <rte_dev.h>\n #include <rte_interrupts.h>\n #include <rte_alarm.h>\n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_spinlock.h>\n #include <rte_errno.h>\n \ndiff --git a/lib/eal/version.map b/lib/eal/version.map\nindex aa53064db1..6ec15f1147 100644\n--- a/lib/eal/version.map\n+++ b/lib/eal/version.map\n@@ -12,10 +12,9 @@ DPDK_23 {\n \trte_bus_find_by_device;\n \trte_bus_find_by_name;\n \trte_bus_get_iommu_class;\n+\trte_bus_name;\n \trte_bus_probe;\n-\trte_bus_register;\n \trte_bus_scan;\n-\trte_bus_unregister;\n \trte_calloc;\n \trte_calloc_socket;\n \trte_cpu_get_flag_enabled;\n@@ -424,14 +423,13 @@ EXPERIMENTAL {\n \trte_thread_self;\n \trte_thread_set_affinity_by_id;\n \trte_thread_set_priority;\n-\n-\t# added in 22.11\n-\trte_bus_name;\n };\n \n INTERNAL {\n \tglobal:\n \n+\trte_bus_register;\n+\trte_bus_unregister;\n \trte_eal_get_baseaddr;\n \trte_firmware_read;\n \trte_intr_allow_others;\ndiff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c\nindex 9e358d187a..0c2c1088c0 100644\n--- a/lib/ethdev/rte_ethdev.c\n+++ b/lib/ethdev/rte_ethdev.c\n@@ -11,7 +11,7 @@\n #include <string.h>\n #include <sys/queue.h>\n \n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_log.h>\n #include <rte_interrupts.h>\n #include <rte_memcpy.h>\ndiff --git a/lib/pcapng/rte_pcapng.c b/lib/pcapng/rte_pcapng.c\nindex 5b079cd14a..72aabd4dd0 100644\n--- a/lib/pcapng/rte_pcapng.c\n+++ b/lib/pcapng/rte_pcapng.c\n@@ -11,7 +11,7 @@\n #include <time.h>\n #include <unistd.h>\n \n-#include <rte_bus.h>\n+#include <bus_driver.h>\n #include <rte_common.h>\n #include <rte_cycles.h>\n #include <rte_dev.h>\n",
    "prefixes": [
        "v5",
        "21/27"
    ]
}