get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 28104,
    "url": "https://patches.dpdk.org/api/patches/28104/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20170831032618.7120-5-santosh.shukla@caviumnetworks.com/",
    "project": {
        "id": 1,
        "url": "https://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": "<20170831032618.7120-5-santosh.shukla@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20170831032618.7120-5-santosh.shukla@caviumnetworks.com",
    "date": "2017-08-31T03:26:13",
    "name": "[dpdk-dev,v7,4/9] bus: get iommu class",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "deed6ad3aab2b4c95414e4f6e46b23a269c64b2a",
    "submitter": {
        "id": 480,
        "url": "https://patches.dpdk.org/api/people/480/?format=api",
        "name": "Santosh Shukla",
        "email": "santosh.shukla@caviumnetworks.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20170831032618.7120-5-santosh.shukla@caviumnetworks.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/28104/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/28104/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 136533257;\n\tThu, 31 Aug 2017 05:27:20 +0200 (CEST)",
            "from NAM02-SN1-obe.outbound.protection.outlook.com\n\t(mail-sn1nam02on0055.outbound.protection.outlook.com [104.47.36.55])\n\tby dpdk.org (Postfix) with ESMTP id E2901374F\n\tfor <dev@dpdk.org>; Thu, 31 Aug 2017 05:27:15 +0200 (CEST)",
            "from localhost.localdomain (111.93.218.67) by\n\tBN6PR07MB3089.namprd07.prod.outlook.com (10.172.105.7) with Microsoft\n\tSMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id\n\t15.1.1385.9; Thu, 31 Aug 2017 03:27:10 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=jGq0Ey1vWfyI31wjUolVfrPHIXDuEUPmczaRz0W4ndE=;\n\tb=QXHdvQDLjZlBhWOTjIT7Tu2HYis29Bg1BRVLT/WiVCS+EWRNhDhIxYnVjCK18DgqMcdfawjgphwXhg7PgoQwb27H47fIe2wkkx6dCAU3lhyl/ulrJJq7cWiY+AbDTqnnPwm6vZzCTCTuFEQVwiNkPoXC42SmGOF+w6R3sXiI5C0=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=Santosh.Shukla@cavium.com; ",
        "From": "Santosh Shukla <santosh.shukla@caviumnetworks.com>",
        "To": "dev@dpdk.org",
        "Cc": "thomas@monjalon.net, jerin.jacob@caviumnetworks.com,\n\themant.agrawal@nxp.com, olivier.matz@6wind.com,\n\tmaxime.coquelin@redhat.com, \n\tsergio.gonzalez.monroy@intel.com, bruce.richardson@intel.com,\n\tshreyansh.jain@nxp.com, gaetan.rivet@6wind.com,\n\tanatoly.burakov@intel.com, \n\tstephen@networkplumber.org, aconole@redhat.com,\n\tSantosh Shukla <santosh.shukla@caviumnetworks.com>",
        "Date": "Thu, 31 Aug 2017 03:26:13 +0000",
        "Message-Id": "<20170831032618.7120-5-santosh.shukla@caviumnetworks.com>",
        "X-Mailer": "git-send-email 2.13.0",
        "In-Reply-To": "<20170831032618.7120-1-santosh.shukla@caviumnetworks.com>",
        "References": "<20170814161059.6684-1-santosh.shukla@caviumnetworks.com>\n\t<20170831032618.7120-1-santosh.shukla@caviumnetworks.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[111.93.218.67]",
        "X-ClientProxiedBy": "PN1PR01CA0118.INDPRD01.PROD.OUTLOOK.COM (10.174.144.34) To\n\tBN6PR07MB3089.namprd07.prod.outlook.com (10.172.105.7)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "80128b89-b005-4436-fde1-08d4f0202cbc",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);\n\tSRVR:BN6PR07MB3089; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; BN6PR07MB3089;\n\t3:Sh7XizwhPSRTo074db1Iko/NVo/oe6eYuqG4hNfPReEY4Bxeq8/yewdINWy87fE4+ssHj3Nf2+KMN4wVrodhN+OrY9uvAfMd6p0Q/xN8NhwFGlnaE7DsbBZkrOdb+xr06B7h7D2+bElTd8T2K9HShAfCf4GErvtKUiL22/1ZZoslxrtVoCNs1gFrnLCatdZmuJo7VwLbV+jsTWTHC5blMojO0zrfLYC6kSxXBM250ztETcG7AL9tzJ0xdx7iLYAE;\n\t25:Ssi7udpXgkBp+K9TnTdyh+To/WN49NQO0i40ibIRqVa1ZYhYnRxiQm04y2RHMmbBzHmBlWO7sWx4t9iZ5I0o5rgDKgmtDdt0b+JjFtCW70miDLaEE1m4a2P/Ho8yzpSg44ngSSEbiAYHzdlHrBP1Z2bemsBwB+knoxJXNJW+SwBSi6TXH3eqGoYprcINiqGwq+1EE8OPEEWpaMXlmFuabwPlen90cCLnGTo+YlwRizMLq6dE6ZKj+cFMZv4v5qcO/Hm+/4RDPWsGmmG9QEKL4nq8axDPAeeNGFDS9ph/KDcwJMPL91RTleZoQt+mGwokIRhnb7kfGwnmfrFTjq2lcw==;\n\t31:YLj92ZgnvaXVQz1T8sX8fVGBbJDfFhXGmNjPGQYgSMgNbRJfgEkPV62sMy9IKhfU9pS2WOQ6RAW56v8Ix3XGbkIeeCfKVKJxyUcSqIRqpjHNl4mIneaY2z0nw6gfYb/yQJK+oGg/vt3iXmJHyHN8Bpv2z9qjvyS5AabC6OIfTXWEZEBYVvnJ5lJAPnBqtMq5+oRhkASTPzjf36eVsNGq48+R3C2Sztkrj+fFz8QTtUw=",
            "1; BN6PR07MB3089;\n\t20:45FwZtitG9gZZsjluUVbQlQz7hr7sWUCA7rcOMDP6TVS+dk2fmejyHBusYDW0ezO7Jm2FysQkQ7LxCyoZAC2Kpdvb3qk7lImUcIxfLVXceIQEPMYV/k7JhTgnRUQkzeyF3vlLqncutU+yWY1+Esn+jpgzG19/OSgBIIFWAWjCKLoia9CQmVdkx34/VM9ci4g+S0JyNdmoXH6bcrDaqvitZD3qepP5HVhU2Fzi/U/pKqVgIPbAEUX0vJfKboTivRvC0OAPu1FMvTQ7z8TQdm/jWUJgk5dyNmqFedvrQUytEv9+KG6+sbu4HI9pLtGwVkajqSsLnKMJN5Ds0zFJsSdWOX13GUOvqfRNI3zhRK5L1wcKWPUY38G+z6UsR8DTgnR4qF0gnVD77SJKn6UKVzgQvQ/e/grDCCig2wWUm069yyA1e6xKZGbK9O6oKp4M1TAve4uJ8A87mDRhzFrK9UMoKtGaGU4EBji52as4nLY+I/0PxLpv41dgmcjhQBXuImQ9HwvC4eEoefJm0Qnx86MpZoP/+pttNcJvdHmq1VcxZI0TWMu4zYBTv6iTXhxQKU1D0HCmja6Oky7h1yQrpV6gfCvNMq9FB5UkJ9+FGoKxOM=;\n\t4:Z9K5GeQNdAN74Y81pzxlrbCjNsEhuN6ewEQ9FeZ5Hc0E7tRL9hRCWpjVCVk1+imzBeSLOOhtRlhUQx7FhI2ZXUNR0uqcC41sWLWXgx2T89ttTyLMdPbIsW8169/Z9lVBCuBS5tXuWHoTWAGVAn7lav99aueulTOB1bULpbwMdQHwe5eO8JJohpxiQaNoLm3fFtAO/u6Ha9zNRcSQ3EtRh8YDU9YbUF5uPekJJeR3PW0BkzeTps6qO8LZ4g0vj10etxCpSJendUVIjpDzsk3TLaC1aBZCbLaukp0p2mckMhw=",
            "=?us-ascii?Q?1; BN6PR07MB3089;\n\t23:PEuBglk3gyxwj0uZA8z+Pzwq2dh7x9VlJmFv06h/q?=\n\t6BxBVbwiSBGpgoTQR/nFtplfAwrkZfe9zlyxTm423yC6n+fvVI6TeCKt+i6CjgaYIpPLStGIVqm60wBQjOxjBQI9S9jOMBhieKSIwjsXKtHqX/yMQ74ohN7OzGlYQjQNaPrAKmkhsQDuXs0iEDftMAQIBLPHZdC0O2+7qXG//2ffRYEulVnpxYNyam7d275NI8LgBgbzSjJDoVwHRx3ZStVnbgTcHQAH/ba+uZmtH/DTNqYo2TcUP2A3kbOgFg4ocSihaxn0owiMrONPfQnLilBqnl4hy/qINb/Jzn8mN6IcxGPdq7xeku8dFvCBEllJqFyjAEuIQn5ZhXS1Ix3It7czpkcQU/efZl+uG8+35w0Ub+49pzFfcCvBzNsedUoWmSQtiDwVfD3HRP5uArAukG0ts0zbdm57lw7Iw97MWc5uXD/snSdZMethro/tv4mXPT1jLzqsjidZiQ0EdvcZ8EgrPLaZxDzfhG+6Wn9ueprVXZfEW48HvDdcDMX3r7iNauxVVZCAbEvnWKjOpzd2Xk3x/h64D3Q8nrKvuc5/W5p1C1lKpNQMLemdOoBSaA63cDTP/sBzLjtByJhJITEWCg3qpNCWpHG0lXan15WMBHgxS/AU/yFs7ZNa5j4IZxPTVFUAl4LiwHg283Hli7e5STfq07cq0yIbjDUzjjApvP7hzD5mEKffDoIH3ozGJEG+taV249VOMiEbDBwiM1AciVcimJlpCGw3ffMxCwxmRq/+99fHDXzw9zXCNkKoVMtzfFTEYV7sI/mlpu/VZ50XjKjRxLovIcf9ymp/+2qYNFqbM2eqSWm1cL/iofOCegSpC+QYRNN8PoU/i98GQv8PCFreAju2x8H5oX+pOx0jaJPHGQemwWHwn6JQ0eji2X4fZRkrthKdBoHxpbQa9Gp35Alo6O8dKqRKzAKWzMaAigyPbc01jJYepdEW1IPbwdIAjfEOERVitZdQ8uw75a7rf7s2WUzwLzBXfK/0uDxKfQnLvxaOabjW8B8q2N8a6WysJf7SGMc7+P3Jx/VuJADIfG2OoFqiytwN6cZjblyV6d3AXkgsomFBr1nUjjJFQSvOEs2yCEt9WB6aeyCEZLQvAe1dO5LsJufmsmsbqIL9+4721qaCHWvpQ/MKvprqO6CBGQyi023AD5LzRWogVJ4QEqGulQ+9uAyF0E0Ny+ZmOXgDVopi+KyiRdiYKTDuKd5AzA=",
            "1; BN6PR07MB3089;\n\t6:jtgV1fNhPf1YG25EUTZuvNZ3eX0q2Y6qsv08Uy27QJaALyNUwC+w+ovIHk9S4qQpcxgZMtPXdw+/lzV8GDatSp5Dgqfx2vhK9tIVV5Jl/bBfpNRfzdU5dhbvjkxm1Paw12sUdHuH1WLQuZdfr+4qgeW3p3hj1VIHUU+EFbTKh3m5VNmHLx9TYLBRJ82qbiRy4uS6UnMG9rayed/Ri6tE6+Nsh768maNd3N16lfyLnpS4NOHrgbT0iSpeRvebMqjjdryxxDQC6Zz8Vny548BZMfHHGI81z3cSNHMiSPu/0zUDyEvuRMiSuWgZ2rEy5DI1Q5YAc/NQe72LPRZ7P6FyOg==;\n\t5:O1GGC38zT3IjYeLHRsHPscz9ggO3dp0HS2JA/O5kMRpnAr2nZhSU0vQscHaG0cDUKrdMGmsa9zm9KPCdKluLCucAfuWcnSQTbmEWgnfgKAQU7E3rbTHTo6qTVMxbOHcangxzNx8lZIXArZlmuGSr4g==;\n\t24:THAnXKzGbnBSTJhQ320SUpa//HdyWzAFUjmi1/vHyvt/5jMpnG1EV2FcQ5NF0Vb2zCkbOe7XiyImwsAlY90d85j8IDbCkBb86F5lHxIHOcw=;\n\t7:BTFnf/HhC1DDDn7+Ytpd/XXlrtaUONiLBkkP68T+I7DhK9965HdXYwq5XBQjm/aW9DjQoPRrV2WLl0Po1nSV9KOOnL7VoLqaip4GglBt+HxXUdqq7jCJ9zAfNGdVgDrif26anie/c5G3+1XmxU+UMIlRawlXxDbdQAT2PO70t7tJVZ4Jb3isYPJqYv+3zkEB0s8bl8vcYFpAbgRpfI1yoaswVf+LF1MunQMBH6pEjo0="
        ],
        "X-MS-TrafficTypeDiagnostic": "BN6PR07MB3089:",
        "X-Exchange-Antispam-Report-Test": "UriScan:(185117386973197);",
        "X-Microsoft-Antispam-PRVS": "<BN6PR07MB308916A8E425F3DEE6725216EA9D0@BN6PR07MB3089.namprd07.prod.outlook.com>",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(100000703101)(100105400095)(93006095)(6041248)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123562025)(20161123555025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:BN6PR07MB3089; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:BN6PR07MB3089; ",
        "X-Forefront-PRVS": "04163EF38A",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(6069001)(6009001)(199003)(189002)(81156014)(8936002)(81166006)(8676002)(7736002)(5003940100001)(305945005)(2950100002)(7416002)(2906002)(6916009)(42882006)(76176999)(50986999)(101416001)(50226002)(5660300001)(6486002)(6506006)(48376002)(50466002)(72206003)(5890100001)(36756003)(97736004)(478600001)(189998001)(42186005)(2361001)(2351001)(33646002)(106356001)(105586002)(110136004)(107886003)(575784001)(5009440100003)(8656003)(6512007)(53936002)(4326008)(68736007)(1076002)(6116002)(3846002)(66066001)(47776003)(25786009);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR07MB3089; H:localhost.localdomain;\n\tFPR:; \n\tSPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; ",
        "Received-SPF": "None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "31 Aug 2017 03:27:10.9594\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "711e4ccf-2e9b-4bcf-a551-4094005b6194",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BN6PR07MB3089",
        "Subject": "[dpdk-dev] [PATCH v7 4/9] bus: get iommu class",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "API(rte_bus_get_iommu_class) helps to automatically detect and select\nappropriate iova mapping scheme for iommu capable device on that bus.\n\nAlgorithm for iova scheme selection for bus:\n0. Iterate through bus_list.\n1. Collect each bus iova mode value and update into 'mode' var.\n2. Mode selection scheme is:\nif mode == 0 then iova mode is _pa,\nif mode == 1 then iova mode is _pa,\nif mode == 2 then iova mode is _va,\nif mode == 3 then iova mode ia _pa.\n\nSo mode !=2  will be default iova mode (_pa).\n\nSigned-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>\nSigned-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>\nReviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>\nAcked-by: Hemant Agrawal <hemant.agrawal@nxp.com>\n---\n lib/librte_eal/bsdapp/eal/rte_eal_version.map   |  1 +\n lib/librte_eal/common/eal_common_bus.c          | 23 +++++++++++++++++++++++\n lib/librte_eal/common/eal_common_pci.c          |  1 +\n lib/librte_eal/common/include/rte_bus.h         | 25 +++++++++++++++++++++++++\n lib/librte_eal/linuxapp/eal/rte_eal_version.map |  1 +\n 5 files changed, 51 insertions(+)",
    "diff": "diff --git a/lib/librte_eal/bsdapp/eal/rte_eal_version.map b/lib/librte_eal/bsdapp/eal/rte_eal_version.map\nindex 1fdcfb460..9942f47aa 100644\n--- a/lib/librte_eal/bsdapp/eal/rte_eal_version.map\n+++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map\n@@ -243,5 +243,6 @@ DPDK_17.11 {\n \n \trte_pci_match;\n \trte_pci_get_iommu_class;\n+\trte_bus_get_iommu_class;\n \n } DPDK_17.08;\ndiff --git a/lib/librte_eal/common/eal_common_bus.c b/lib/librte_eal/common/eal_common_bus.c\nindex 08bec2d93..a30a8982e 100644\n--- a/lib/librte_eal/common/eal_common_bus.c\n+++ b/lib/librte_eal/common/eal_common_bus.c\n@@ -222,3 +222,26 @@ rte_bus_find_by_device_name(const char *str)\n \t\tc[0] = '\\0';\n \treturn rte_bus_find(NULL, bus_can_parse, name);\n }\n+\n+\n+/*\n+ * Get iommu class of devices on the bus.\n+ */\n+enum rte_iova_mode\n+rte_bus_get_iommu_class(void)\n+{\n+\tint mode = RTE_IOVA_DC;\n+\tstruct rte_bus *bus;\n+\n+\tTAILQ_FOREACH(bus, &rte_bus_list, next) {\n+\n+\t\tif (bus->get_iommu_class)\n+\t\t\tmode |= bus->get_iommu_class();\n+\t}\n+\n+\tif (mode != RTE_IOVA_VA) {\n+\t\t/* Use default IOVA mode */\n+\t\tmode = RTE_IOVA_PA;\n+\t}\n+\treturn mode;\n+}\ndiff --git a/lib/librte_eal/common/eal_common_pci.c b/lib/librte_eal/common/eal_common_pci.c\nindex 3b7d0a0ee..0f0e4b93b 100644\n--- a/lib/librte_eal/common/eal_common_pci.c\n+++ b/lib/librte_eal/common/eal_common_pci.c\n@@ -564,6 +564,7 @@ struct rte_pci_bus rte_pci_bus = {\n \t\t.plug = pci_plug,\n \t\t.unplug = pci_unplug,\n \t\t.parse = pci_parse,\n+\t\t.get_iommu_class = rte_pci_get_iommu_class,\n \t},\n \t.device_list = TAILQ_HEAD_INITIALIZER(rte_pci_bus.device_list),\n \t.driver_list = TAILQ_HEAD_INITIALIZER(rte_pci_bus.driver_list),\ndiff --git a/lib/librte_eal/common/include/rte_bus.h b/lib/librte_eal/common/include/rte_bus.h\nindex 9e40687e5..70a291a4d 100644\n--- a/lib/librte_eal/common/include/rte_bus.h\n+++ b/lib/librte_eal/common/include/rte_bus.h\n@@ -178,6 +178,20 @@ 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@@ -191,6 +205,7 @@ struct rte_bus {\n \trte_bus_unplug_t unplug;     /**< Remove single device from driver */\n \trte_bus_parse_t parse;       /**< Parse a device name */\n \tstruct rte_bus_conf conf;    /**< Bus configuration */\n+\trte_bus_get_iommu_class_t get_iommu_class; /**< Get iommu class */\n };\n \n /**\n@@ -290,6 +305,16 @@ struct rte_bus *rte_bus_find_by_device(const struct rte_device *dev);\n  */\n struct rte_bus *rte_bus_find_by_name(const char *busname);\n \n+\n+/**\n+ * Get the common iommu class of devices bound on to buses available in the\n+ * system. The default mode is PA.\n+ *\n+ * @return\n+ *     enum rte_iova_mode value.\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.\ndiff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map\nindex 40420ded3..f35031746 100644\n--- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map\n+++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map\n@@ -248,5 +248,6 @@ DPDK_17.11 {\n \n \trte_pci_match;\n \trte_pci_get_iommu_class;\n+\trte_bus_get_iommu_class;\n \n } DPDK_17.08;\n",
    "prefixes": [
        "dpdk-dev",
        "v7",
        "4/9"
    ]
}