get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 113870,
    "url": "http://patches.dpdk.org/api/patches/113870/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20220709082644.664675-14-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": "<20220709082644.664675-14-david.marchand@redhat.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220709082644.664675-14-david.marchand@redhat.com",
    "date": "2022-07-09T08:26:28",
    "name": "[RFC,v2,v2,13/29] bus: hide bus object",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "9766afa5f37f48a68c42b126f283538be04db540",
    "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/20220709082644.664675-14-david.marchand@redhat.com/mbox/",
    "series": [
        {
            "id": 23949,
            "url": "http://patches.dpdk.org/api/series/23949/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=23949",
            "date": "2022-07-09T08:26:16",
            "name": "Bus and device cleanup for 22.11",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/23949/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/113870/comments/",
    "check": "pending",
    "checks": "http://patches.dpdk.org/api/patches/113870/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 47C81A00C5;\n\tSat,  9 Jul 2022 10:28:35 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id DB5FE42B79;\n\tSat,  9 Jul 2022 10:28:22 +0200 (CEST)",
            "from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.129.124])\n by mails.dpdk.org (Postfix) with ESMTP id 4779E40A81\n for <dev@dpdk.org>; Sat,  9 Jul 2022 10:28:20 +0200 (CEST)",
            "from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com\n [66.187.233.73]) 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-629-FlpuYBd1PZiMoDDjzLxGNA-1; Sat, 09 Jul 2022 04:28:14 -0400",
            "from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com\n [10.11.54.4])\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 2485B3806720;\n Sat,  9 Jul 2022 08:28:13 +0000 (UTC)",
            "from localhost.localdomain (unknown [10.40.192.194])\n by smtp.corp.redhat.com (Postfix) with ESMTP id 20D9E2026D64;\n Sat,  9 Jul 2022 08:28:08 +0000 (UTC)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1657355299;\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=bmPfDQqCkCJPKiD2X/f2rx0TOL01v0mC1PfqymYRBMs=;\n b=O8K2JQyV+8SIk/VY1HWO2Q4f5A8a70hzUeqtGYfFRxiQoKXVQK1+KP6qp6p/gr5bRHW6wS\n BDs4/nqjfc4DFY2GcY/R7laIRbgEyo175kgDnHkXKZ5JLZjudH5Fwi6jHLbMwRoniKLFHw\n A/FwvKvssoR9jGjb/Am/hFwwTplugyA=",
        "X-MC-Unique": "FlpuYBd1PZiMoDDjzLxGNA-1",
        "From": "David Marchand <david.marchand@redhat.com>",
        "To": "dev@dpdk.org",
        "Cc": "Parav Pandit <parav@nvidia.com>, Xueming Li <xuemingl@nvidia.com>,\n 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 Bruce Richardson <bruce.richardson@intel.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>, Ray Kinsella <mdr@ashroe.eu>,\n Thomas Monjalon <thomas@monjalon.net>,\n Ferruh Yigit <ferruh.yigit@xilinx.com>,\n Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,\n Reshma Pattan <reshma.pattan@intel.com>",
        "Subject": "[RFC v2 v2 13/29] bus: hide bus object",
        "Date": "Sat,  9 Jul 2022 10:26:28 +0200",
        "Message-Id": "<20220709082644.664675-14-david.marchand@redhat.com>",
        "In-Reply-To": "<20220709082644.664675-1-david.marchand@redhat.com>",
        "References": "<20220628144643.1213026-1-david.marchand@redhat.com>\n <20220709082644.664675-1-david.marchand@redhat.com>",
        "MIME-Version": "1.0",
        "X-Scanned-By": "MIMEDefang 2.78 on 10.11.54.4",
        "Authentication-Results": "relay.mimecast.com;\n auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=david.marchand@redhat.com",
        "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\nSigned-off-by: David Marchand <david.marchand@redhat.com>\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 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              |   4 +-\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                | 275 +--------------------\n lib/eal/linux/eal_dev.c                  |   2 +-\n lib/eal/version.map                      |   4 +-\n lib/ethdev/rte_ethdev.c                  |   2 +-\n lib/pcapng/rte_pcapng.c                  |   2 +-\n 36 files changed, 338 insertions(+), 307 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..14a0b11fbe 100644\n--- a/app/test/test_devargs.c\n+++ b/app/test/test_devargs.c\n@@ -6,10 +6,10 @@\n #include <stdio.h>\n #include <string.h>\n \n+#include <bus_driver.h>\n #include <rte_common.h>\n #include <rte_devargs.h>\n #include <rte_kvargs.h>\n-#include <rte_bus.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..9e39993e90 100644\n--- a/app/test/test_vdev.c\n+++ b/app/test/test_vdev.c\n@@ -6,9 +6,9 @@\n #include <stdio.h>\n #include <string.h>\n \n+#include <bus_driver.h>\n #include <rte_common.h>\n #include <rte_kvargs.h>\n-#include <rte_bus.h>\n #include <rte_bus_vdev.h>\n \n #include \"test.h\"\ndiff --git a/drivers/bus/auxiliary/auxiliary_common.c b/drivers/bus/auxiliary/auxiliary_common.c\nindex 0b212f2d64..38d722e653 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 9017118b36..542083dc89 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 d97e8c694e..1e0e584039 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 \"rte_bus_auxiliary.h\"\n \ndiff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c\nindex ad4ea156a6..ed3036a642 100644\n--- a/drivers/bus/dpaa/dpaa_bus.c\n+++ b/drivers/bus/dpaa/dpaa_bus.c\n@@ -14,6 +14,8 @@\n #include <sys/types.h>\n #include <sys/eventfd.h>\n \n+#include <bus_driver.h>\n+#include <ethdev_driver.h>\n #include <rte_byteorder.h>\n #include <rte_common.h>\n #include <rte_interrupts.h>\n@@ -26,10 +28,8 @@\n #include <rte_eal.h>\n #include <rte_alarm.h>\n #include <rte_ether.h>\n-#include <ethdev_driver.h>\n #include <rte_malloc.h>\n #include <rte_ring.h>\n-#include <rte_bus.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 8498f5321a..0b52c8e46c 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 80d4673ca8..f08dc7716b 100644\n--- a/drivers/bus/fslmc/private.h\n+++ b/drivers/bus/fslmc/private.h\n@@ -5,7 +5,7 @@\n #ifndef __PRIVATE_H__\n #define __PRIVATE_H__\n \n-#include <rte_bus.h>\n+#include <bus_driver.h>\n \n #include <rte_fslmc.h>\n \ndiff --git a/drivers/bus/ifpga/ifpga_bus.c b/drivers/bus/ifpga/ifpga_bus.c\nindex 5353dbdb01..d962fb8362 100644\n--- a/drivers/bus/ifpga/ifpga_bus.c\n+++ b/drivers/bus/ifpga/ifpga_bus.c\n@@ -13,8 +13,8 @@\n #include <unistd.h>\n #include <fcntl.h>\n \n+#include <bus_driver.h>\n #include <rte_errno.h>\n-#include <rte_bus.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 6ccec15655..0cefed5edf 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 <rte_os_shim.h>\n #include <rte_pci.h>\n \ndiff --git a/drivers/bus/vdev/vdev.c b/drivers/bus/vdev/vdev.c\nindex 804486d3ba..ee569fcdf2 100644\n--- a/drivers/bus/vdev/vdev.c\n+++ b/drivers/bus/vdev/vdev.c\n@@ -10,9 +10,9 @@\n #include <stdbool.h>\n #include <sys/queue.h>\n \n+#include <bus_driver.h>\n #include <rte_eal.h>\n #include <rte_dev.h>\n-#include <rte_bus.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 597ba18df9..600530c4f6 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 <rte_log.h>\n #include <rte_eal_paging.h>\n #include <rte_vmbus_reg.h>\ndiff --git a/drivers/common/mlx5/mlx5_common_pci.c b/drivers/common/mlx5/mlx5_common_pci.c\nindex e708e23a7f..838b62b81c 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 <rte_bus_pci.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 b90757756a..cc3805baba 100644\n--- a/drivers/net/bonding/rte_eth_bond_args.c\n+++ b/drivers/net/bonding/rte_eth_bond_args.c\n@@ -2,9 +2,9 @@\n  * Copyright(c) 2010-2014 Intel Corporation\n  */\n \n+#include <bus_driver.h>\n #include <rte_devargs.h>\n #include <rte_pci.h>\n-#include <rte_bus.h>\n #include <rte_bus_pci.h>\n #include <rte_kvargs.h>\n \ndiff --git a/drivers/net/failsafe/failsafe.c b/drivers/net/failsafe/failsafe.c\nindex 3eb7d32b76..7fe77cfe8e 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 <rte_bus_vdev.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 04b9614f5c..6899f430cb 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 <rte_bus_pci.h>\n #include <rte_bus_auxiliary.h>\n #include <rte_common.h>\ndiff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c\nindex 308936ad9f..0aedecd358 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 <rte_bus_vmbus.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 2587195168..9d65f75048 100644\n--- a/drivers/net/vdev_netvsc/vdev_netvsc.c\n+++ b/drivers/net/vdev_netvsc/vdev_netvsc.c\n@@ -23,8 +23,8 @@\n #include <sys/socket.h>\n #include <unistd.h>\n \n+#include <bus_driver.h>\n #include <rte_alarm.h>\n-#include <rte_bus.h>\n #include <rte_bus_vdev.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 2775e1ac66..902a6c7c59 100644\n--- a/lib/eal/include/rte_bus.h\n+++ b/lib/eal/include/rte_bus.h\n@@ -20,251 +20,11 @@ extern \"C\" {\n \n #include <stdio.h>\n \n-#include <rte_dev.h>\n+#include <rte_compat.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  * @warning\n@@ -278,24 +38,6 @@ struct rte_bus {\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@@ -385,17 +127,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..b5eab93fbf 100644\n--- a/lib/eal/linux/eal_dev.c\n+++ b/lib/eal/linux/eal_dev.c\n@@ -8,12 +8,12 @@\n #include <sys/socket.h>\n #include <linux/netlink.h>\n \n+#include <bus_driver.h>\n #include <rte_string_fns.h>\n #include <rte_log.h>\n #include <rte_dev.h>\n #include <rte_interrupts.h>\n #include <rte_alarm.h>\n-#include <rte_bus.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 6f713c987d..48c8a2f511 100644\n--- a/lib/eal/version.map\n+++ b/lib/eal/version.map\n@@ -13,9 +13,7 @@ DPDK_22 {\n \trte_bus_find_by_name;\n \trte_bus_get_iommu_class;\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@@ -432,6 +430,8 @@ EXPERIMENTAL {\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 ebbe8cca3d..9eba97f2d2 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": [
        "RFC",
        "v2",
        "v2",
        "13/29"
    ]
}