get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 27124,
    "url": "http://patches.dpdk.org/api/patches/27124/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20170724084004.25542-7-santosh.shukla@caviumnetworks.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": "<20170724084004.25542-7-santosh.shukla@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20170724084004.25542-7-santosh.shukla@caviumnetworks.com",
    "date": "2017-07-24T08:39:58",
    "name": "[dpdk-dev,v5,06/12] bus: get iommu class",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "deed6ad3aab2b4c95414e4f6e46b23a269c64b2a",
    "submitter": {
        "id": 480,
        "url": "http://patches.dpdk.org/api/people/480/?format=api",
        "name": "Santosh Shukla",
        "email": "santosh.shukla@caviumnetworks.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20170724084004.25542-7-santosh.shukla@caviumnetworks.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/27124/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/27124/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 C6A7B7CB8;\n\tMon, 24 Jul 2017 10:42:39 +0200 (CEST)",
            "from NAM02-SN1-obe.outbound.protection.outlook.com\n\t(mail-sn1nam02on0080.outbound.protection.outlook.com [104.47.36.80])\n\tby dpdk.org (Postfix) with ESMTP id 9139A7CC9\n\tfor <dev@dpdk.org>; Mon, 24 Jul 2017 10:42:31 +0200 (CEST)",
            "from localhost.localdomain (223.180.24.9) by\n\tDM5PR07MB3097.namprd07.prod.outlook.com (10.172.85.7) with Microsoft\n\tSMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id\n\t15.1.1282.10; Mon, 24 Jul 2017 08:42:26 +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=7OHqgLfYLAqPP6HIe5vfKcWEM3YXCQSSUk5GRR6x8EI=;\n\tb=WyMHz7VKqGfUgDeu/4oReB5Ujp2AKyXpDT2cbxgH4Bw8cFmSe/cVOz0CRt8X1VgzzKug8klKT6oyVxkN4aBg4jO325cQRmD58Kl6Shrp8mTAXK0Bm6AjKyPVW8qljasrQ3l8mUF8ZdnjOhmMHMxyidOPmGJVCZ8sQW1CHoRpmVA=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=Santosh.Shukla@cavium.com; ",
        "From": "Santosh Shukla <santosh.shukla@caviumnetworks.com>",
        "To": "thomas@monjalon.net,\n\tdev@dpdk.org",
        "Cc": "hemant.agrawal@nxp.com, bruce.richardson@intel.com,\n\tjerin.jacob@caviumnetworks.com, shreyansh.jain@nxp.com,\n\tgaetan.rivet@6wind.com, sergio.gonzalez.monroy@intel.com,\n\tanatoly.burakov@intel.com, stephen@networkplumber.org,\n\tmaxime.coquelin@redhat.com, olivier.matz@6wind.com,\n\tSantosh Shukla <santosh.shukla@caviumnetworks.com>",
        "Date": "Mon, 24 Jul 2017 14:09:58 +0530",
        "Message-Id": "<20170724084004.25542-7-santosh.shukla@caviumnetworks.com>",
        "X-Mailer": "git-send-email 2.11.0",
        "In-Reply-To": "<20170724084004.25542-1-santosh.shukla@caviumnetworks.com>",
        "References": "<20170718055950.10208-1-santosh.shukla@caviumnetworks.com>\n\t<20170724084004.25542-1-santosh.shukla@caviumnetworks.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[223.180.24.9]",
        "X-ClientProxiedBy": "SG2PR06CA0085.apcprd06.prod.outlook.com (10.170.138.11) To\n\tDM5PR07MB3097.namprd07.prod.outlook.com (10.172.85.7)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "0dff9db0-253a-4229-4635-08d4d26fec1b",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);\n\tSRVR:DM5PR07MB3097; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; DM5PR07MB3097;\n\t3:ita9KyBHSHw0Smm3prMmfa/TmdU6CTiRvOsEJNxRs6DnSJx3IA4Gb9fVDE1rMKz91jL5FaCnloX9DEweMZjKZ/qiKh9Z1snWlyG6AEPStXG7EIR4ikZ60GwBbLdQ+OVeYf82ne7sh8jwiDbu7b5prs2jb+9te/PpmPpL6+L9HI1xnExnnnFA48NDbKNWP7383opX5fc7QY79MQUXq3TaE9FcBpeQaqrObWklleDup/1qr/xFu4BRNR6JF+kAh3fH983enmF1InkY+67FULUz9rAkJ1rxdMxDIWoIELJQZ7BKXTWmEkYyo3QndCPnY4aDP9NzW5fFK0+kdMM1V1+XCeHPm6AlwnGItvTevQ7OKTVoTvT7zWGYrTtk5OGehPPm7ITdvioDR9HCcQ4KDWGKX5ZmM8nvijoFkorgv8RlYX3hQMqBqudHPALruR3aaVh1JkzLK5nUQfXGGE8slhE0784CifsoIUOeVvzQmYRdPBKtyQPSERBCkEhNSZx7O7lwGaRWTwFELIiwelsIiMRE8IeKDUplZ8G4A66yJyC70TVEUlYfwEHnVUzE1H4YuNqj6XhU3sXBNRs/K7K64yNTj8vx2riw5MSMkzRXuEJkB6cRT2nXw2+2Z0aQhCQh5lJ7KPTkZcWIuptCUJg4lqDNHEoX5Hyho6tXi3YBsGhiv12dUQvrEuZbJrVOtzSHZPjd2KQSVocQ5lZnwiYJdk4l531Tk81VfGF/Tk7MTY6XjAw=",
            "1; DM5PR07MB3097;\n\t25:C+hmDkbJ5qFdLho+j0mO8M87SheLTWE4ZTagciOASzn8mBWep0PdKXViIeJwCIGWc+65nEaca565XDE5Qsk9ryqdiMB/5pX9USIWdceR7d14L+XzD/nXWqT8LJqVcF9LhBzIVfDNGh+ijV2IMVUnPO+eYznjSyGz6+SPVaO4RaMXzjRKlclfy6QjqnTYB3E2+g8GiDWRkSxHV/8VCQVwsPTphLffnjyh7x9SJQD12UPO8/W4P8VrYTp+OQGZJ3GFu9pV1uNWoeSbha4iGe7xbwfwly/wvHzqaFr2r5XiyzV/UaLPbnWWC/YQ9G684aGwGnq3QoOhMvFCfappWiIpXNqkUuGp5L5RtAS4cvDDz2Os7CxCQ9shSHz8WVLNLByE81ij+tpm//504iRAhnEw7fK3EAxjYclHefAg0u9DLhwRCPX0lEs9neprJRpXdhC9Zd2Y10wVZZY17wC17FUoUNyW3YqEqSJilJPeh1VuyfMvx2twThGEpnaD7Z5ziSCtQax+mf/AaoKWUXQWxYukpBkQ/i463PSrprAqJ7LkLVoV8PyHvxJx1M1nXy9CE1tTsJDv7NdDaJi8qT4iTr4MxuietjVk3ajFticdhvvgO6w2A3HFHuK8IFBgwUD0J5RjDsHMNYk11shK8u0+oMjllSvaOQUUjuL1oHrDb5K++t/JIDAzxtwjs7sLxvz/iRWmyymR3JRPHWLixwJdpUIQNYPssg/A/jBZGu5+RQibGWOha3PpTKGQIorxjbtTzISovpHQ4sjMXGNv7+6/FeN29W93eO5rsiwLDjMbyw8W32gVhhWAmbyTx3bvMwdVB04HUCUSnUTUPBqccLZHgMiZZmQKIUoVxT7GFTXZJEuH0zgo8JdslJon55zE3CHJoumcj94mTEGDteXcvpOl6FjUiT2kXRlERD3O6LDH3FOuwoM=",
            "1; DM5PR07MB3097;\n\t31:nKs3m8jw9neaNk2eGjuyMxaa0TeVGgyTa2ELcn1v1PUV6M3ZkHcxjkZTkE0nYFzE7g8b1RjB7/i6OPLBoLUvVQKYuCoxevfpJ0fsMepiaFif8ddN2XCzP6DL1XYj1Dwd23uY0MvKqfsiFPPcWM07R54Aj9lGKr9kNt58cCpiq2mhaY9wVg/17GS3r2ZqkkYAH9mBwjc9ppNTrV0lljKj1AxCp202uT1fNqKTY/4g8ji7aNrehrWv31zePFtRNL9i29D7Qn88/cm1ACv+TutyowrRyFBLfrXQY3Neu58Ea893CgS/QoPEE4uM0Pyqi7Q0anj1ON1+chs+/Q0hV15D16YqxmNlJpbhM0rNsWJ4M+Xe77lZp4To2kpryc+998UTB8kWABWN3is8W3xB57WNH7QE1v/a6k3M6AJZ4a2mVyMrN1WvzV4nP3xD0lcPWfeLCY+WLjBKET2RDBIx17y100boYdyb4uVmhlKqSdDqjJE37V9vVFwAaLwPPPNoHWUXRgFOoV4RJRzfd4CefVwwF21p0+w8lXRZPUQ/sJECci2pCcUijw80yiIavNmc4/QXAX2Mebr7mqDI5e+Z2Zt2Jcl3bfnebaKpReL4hMTgXZyQ2rC9hDA7eTzvMdRLlv/mlGfN1Lcbh897MZ3vgylynv1BI0Cs3y4nsSGcU+s0NiI=",
            "1; DM5PR07MB3097;\n\t20:cf3/09VfuNI6exM1WZBOE/SGJCoTsycA3d+BQ1oFodnSZBttZPwE4YzQvksO0mwtpunOu+8fqVn1FqL2lUYiHqrvahHEfTZFLBJUuM11vTeovbJmdC9FveHsN8ncsqCRtvCtglVWmNNMN/m2oWOU+xyaiRG5JFX8e+tPMT3VZPNoEZZxR/4LcXcTJOX9hY+aKVjUbgu3LAlg6TzIUrYM30xMd6+zRLB91BJX4thbOVTom/oN1yUMtkm4blwJWfVgjY27myZVFzpzlo9Jl+U1cPKGkoLfw/c6mqeAusalSfdmXUwpXiP9/cQeLVcoZrj4pN4tQDS3vr5z/jAxsfsIOXUO7HGrrazP4eNaRAPy9+m1vqsw3ZQD4eapk7rlyJ2Oxt6o6DuEWhTPW6jMHS5zG8uUxb6E+5g8WNg6tOLC89HEPqof2T1ZBZl1gO67jwqAFBMzrp5R/trLKpB9/V/aA8DO3IHLcvtdBw5ehHx3A6pXBvSIxFjZ6OmcZy/4Rl+I1I7yCht6x/mojwS8q2AUzHIgdu7WB1p0aV0bwXO73lXvDbwV8yUmacCwnoUJmxiz/NGS6Z902zu75G0yYduYuNL2jx9J4kbnwB0wUVGhK5w=",
            "=?us-ascii?Q?1; DM5PR07MB3097;\n\t4:NdjJQ6Fb159BGgUOJd/ZzXqVF4CiLzQRmtmIc4FutS?=\n\tvEQJKmoHQ5uUkMXLJLGVrsITQOxA15YCbMUZMG7EEwwy5oo0TlEnU3LhCqwl+iB9T43L0Irz5rVMeVgDV3KsNuSs8s4oDMqxdhRuGuhhVe/8iZxFF2x2PRfbQxbkwCuQikNVLZkokUuQmWrWmdu2cyHDZ3Aq5Um4D8djs5jMAnq4GcKlUh/LXTGugBGIl7bU/u59ok/bQER5hTrkwDDQN0rz+9MPsapFgfVJdWogG5azwyhxiUJBcMv46AUW68ax9MSNFCo4Eu4W29tfwkaMR6+5Mcs9vVSplyzWtTLYfdcRmHs5Tsg3tJ+AXnqz6tb5puV+J5Nj9+thPpFi2R76LwlKWP28SQKHEy7qTZDhxGroHom4NswKgLgEtuonImOZYPPi2jBY9nsZjlzS55sJhV+bC4Eb+/TZGmPTcdsqCsKdAukjTqXWVP3iOuQ26tLhLVK/rHKO4TV8Ep8gLKv169e2X0VX2C3oHVZjIZZnHuom8TZ5ghpOfC2AYGB5ss+gY6Jt4ZqIl4MjOIWcP9SdZm3oHMMBgV4hXfwqaK2yUNQwy45jfhRNuaoOWQnoAF90ruVE4UJq7rY2l7WKq7ixKmaH8zX8JLNRArQuQBydGmlouozvNs/aFkH1WfstUsUJLUYlzr8JPexg7wx2zRksYILcIG+rrnouAz6/fhg+NY78msCvDkf5yYr859e4ooewZ24jpq1s+WgMl6CE/RrCyTqVDNrGbXGaXgL/ioUrrwCb1EeHtc+V+Cau1RNtPQ1koUTLSbe+8kJm+y0rXPJ11Vu3MhEbj7c//48P5FNf8uMx/ff9XZnwIwvWNxWMfLBs0DojvV+mpl4N267vHZgaKJJUKFmSXpfa/Me/fkBmYfQ2EyYueYPi/hfAwk9gco5NObEmPe0VFUuYb2+WqC+JKc/B4jaxYPd1zhn7q1Uz4babxAVy5ObbQBVp6I2YWa96RVE4Rmx2qB3tPsRqm73+SeC5SyfbD4tjXCdi9D2/vr/9SovcVusapF2FM8QRnMOFIO2n+0/ogdgdAFki5hB2IdCsFgXtY+uCl5AUul5UDMCpnHnkmjmtXPm9uloaAWo3twhF42cLIyqP+vaT8FyMAUWfTLLl5oP7sQjXTnLu8YuA==",
            "=?us-ascii?Q?1; DM5PR07MB3097;\n\t23:g0ZAJVR2h++VwQJZS3tTkx/6KS2dVAjRnvreeymBt?=\n\t92WpNfE0iwXubacd9VynWJ8pvMqMbt0NGQaCXBLuqeLfInI4EzFTHGSNMte13BKkEvoseJAdkEiH6N1bKt2z6N5SUul4MJ4nHVq8WuyBj5rQS9a8IB0RDWJ/6gIvlfuSVb1h/qhEVR+CYuVvvIpWUF1QQSE9EgJwJqPniM6NQDkqdUTzUUedbQCzgUv0UyrpaTVptIYRYWdZiRTvVsQxz3CwSHEQLIW5Aug+tdDgH6DZdlPz+nl3mfZjpUSvP6WYniVXtUD6oVQh/hDv/+Q7Ft/KXfN9SmR18SzXlRSIADfQ1qYXiC7Tdxr56l0SWqAqKjvx0gnGL5aIbS+c/3LxbEqi2bpJGkjol56oy8Ocyp0dOE98QiQpkGrzB1jUGJGcRrp4r1/1pWScqOFoCxwzI9c4XMG/iMVMmbfXSeS9Jrgs7USIFIDC+ZT7pZT9kzjBrgCsL9BAEz7RfvvYQ16Uu0BogS1PEmpuVFJF7h51gPzcbPEeQBfPeTuGhB4YCfmTJ+tUlys0+eWff5I5bzhYdy+H+4tdL+fQCt3qvmW1D5dCplTO1dONWNYBBUquXG59kqwKFMayDEd+aIrt6saFT9wKTlK3aPBm5nW/O6REmwAG9amfMlpFERfXcNAN9Mg73qaVPYx8ChEyXNG6ENrjJPf8qevP+g+1OfVDGrO2rimJ4JpYSEEKfS4oCeUTLu7EE/l0vygW2b9snbyFTbls+FezyxnaSGuEI3ZEo3CGCoOeGDxPkxSmxa5ALlZVdyakaLx5as1Fv6Ix8Jsqyz6MFzKwjZ7bV9D1nqAaX39qoUzCbUZnsde3MwI5WhyxeqCfSjllYeKjAj9UdXScsoGVdiN4ynRTZ1N2nML3PqziN6QRD73o1hE3uHdZw8mphqLOXlwkW85Qg+X2Ve0v6Fop2kiiVRX3gtOVTZnPEm+VNDcXkLwAO2rpA2Vq9sLyw7RyaB2LUNPgKwWmCLNy1ImS66eCA9a68Sm25dDuvwkXctsSdgut/7E0I/u7zwKNDSd/Wa4SIMwAMGot+xRz68jq2OZRJDiKZ3WkkAzdQAmNDQnXUmXDMAvaR5UgzR4MGrWH2QSjJjm/x+m/PMlg/dP9TgWYGv2pxZXututpsTr+my50PulLtdg0jQJXMAORB8flU8M5LkDbGHqQ0JrF0CDJy2sCozazdNebfvRjo8fnvtGpeaQczldbx5lNN39xFduTxqVhH1mjLnrdFROPVMjF2oDPmhFpD9oPCq5h0ZE/gPTJ9aw28hLDC7y8aasLoG4JMTc9fiISWHRAoARtLK/xbFNOG1Gb9o/VnO+Bbsd4OUSoRldN0/J0czfL63NqU7t3lDQC/XRYFhpjCw8UrYgl6LT",
            "=?us-ascii?Q?1; DM5PR07MB3097;\n\t6:Z3NV/IkzqC74ICoXMkryKvpqj9M+OoNTKJGHjiITPZ?=\n\ttuwWGQjPmrCkgSdR7TyGI3lKzpigPLKRXhjU/vYZqwReS8UHKnfgrt1yxyMOSlc43vN6Vg4G74Arn/u9yY+f87V6e76CwadYTOcfRyJz5RK73qmIy7dhEbhQdxe+8MKCT8kJ7FXBXBibLClsju3JEX/5nZWthL0lqnQECyY7dob8xbmKzweY8pFiVLan+lHJR51Kh2QByyu9aemFJjwGlUR78cS29Yrr9SNO/0drpdRM17JLLPourw1YCrdgHI859u4KYl0UoYtNV2xzlSLMA5YiDJgKkEKUobf2uSuh0gYFBjYv0Iv67ya0jFLX8LCSYG9xdXFEYWZDDDbNnYhUZF4qAXRjs87M7oiTl8aZEVcBYo+7iIWvt4iSEbFMEz+yYtYriM9HMZAdEOhIl6zEWl8Szm5w9t4z3Gd2BdLgNf7R11CEohjKYWTqKPfJj2LkHUX6anEhDJSRJRVKFjaJwClmPsjhNOC4FWvp1UTzjprEq4SHvIYDpKU2LANvCkjS+wqYVNK7V/X/HOZ/+zfnjBf3iRj/5cbrRVkFk98/JPxTcUGgu6lCykKSTVXt6WI9iIpXJpW+R7kRx+dfJZVxRQjxkiJuTVNG6nqgpQZoU5GYz73dhoSfDYMGmterUKkF24PL/2yy5RcHSKIzrCmxsFzyFEb+TkI6KKOPOlx9ucw5ELBW4/vIPpWdZmHMaUnFNvLzKSoht1Oaftb65iH8qtxdrp8A3vaKjgouJ2sGRhQMa29jjr7BwsY/L8kSPcZQQQgkKCEFPZftkZEWde2A8iiocya7M+SWy8zy67VtBxwp1IjKAv055yaU+/O7K/0ZsswtxI4/5mjBnRMtpw20HEGpkVg+UTbhnZpY9ojHhYuHogN+ddiiKPX4VpVF/kQ+PO1L80xG82P8jstsN3RtKxftU5hKrG6Zd67MvW9+6IsvrB7PXqKIu3ocbG3LPerCg=",
            "1; DM5PR07MB3097;\n\t5:l+cmlsOUfU0GCf4AC/Uh/cGBWGoNNzlkiY9hzfQZBvZ/+eoL1F1rZ891xfn1fp6XGsLd9mA8waeuISEQ5JUoReAE6hh9mj1K9gjSZN54MhGh9GCuFOnhz/FwMZe9xkffNRsRn6bMuE8/x3B2SnEwFIaSjlcdm+HoOT9gkPCNKZVcnX8QT8ez1jtZGPyj+HLNd18SE/M+flGaKCueyaxrkvfjjc/vzCMGkkOzyCwiw9/J+45CyZbJqkLAswoWyUISD2hbcRRwpQl92nDFy/K6l+XnLJ1A+CHOhKoh+roBvTeQvm1w63sylxaGGJGKahnxA3wCuruoPZWLYb1PUR/0a7/cqqzXhWM5wphH4mvG23IquAWC595+XDPYbyJhqX7nVSW7w1DM2qohrkj03FXH0iVV640y5W0llnf6M6x7RG24+Gs0HW3y7YNRI/BYCpRE/6uiz35qDlAE1iVcieTskYsAlrA6t4+YGcIKqb2wDQEQQmaNZdvS4yqAcoluuycI;\n\t24:AozwWrpOKrSkTSpDunqbrkUukogcNzvO4CHbY6F3KNb0DTtaj618yV0NxQ7vxgPgYJlBDOqX1WWt3vUbGygS/E3OBzq/sK53p6JmW4mgBBQ=",
            "1; DM5PR07MB3097;\n\t7:3ntTDPkOGjgL7LHoK/+uyCxxGNcDcjtAFhbLYPgD0ehIYqCJ0WeaPwyV4GcrB/m96M5RkPz0uE25v4ZkVKS10JOeVRPHgmtx+YN+CMWyfHSMXfBkNveTZM7O+hPKnnpbj81aj3zU6NkGicRILvPgt01vHp1mV+kPfNNptB7f81xFsO4WQjoATUYMuZ35vJ1Xj2DQUop+4ZuMSjViSSPpHNJNOHjDhxN7jeeOtAjeuByyEV3penAfS84FAnI+QlLWk16R7A2dWHi0lnW7uakPPmBMHIRn5GPie88A1HWKeEQi6xEkTpy3v2HgaVXAz52jBv5rh/KNkXla0GZgvLQJtQkCIkT/X1tuKt1fbMg3YaAQBdiOJ45gMMnpQ+JqwXJhwG28qK1ofXF/wd98xE0TtUi7ewe/L8tzqaCfUfJ/piS6dNrQy8suOVVOWtBi6m/FqzW5AI2VsAn7nArgSz1/mri17USR/kJoRXIeb0bhvkUac8BSqEDo5mFk9WxMjq5p1fO4LbcaeXRd8DsiVT5H2qozxZdBOcACteHWd0tJ1Pm7SGQIfq4KAEKeCuVhzcDDEfex3cbgyjdlwSffHJDM2dhZJU/9mH1ThNnCVdb9I+ZPrNYA4Uo1bJff7M1hMKr68GfSmbPTUAfGY2LfEyZPL8FngYzvFzE7E2pqxHDTvlDJYcG7LkPlul2Zap+LAH/RZURDp07MAjatFIvCm9W9a4hNrL09ny7pOvu7mUDS5+SkdVCnhj+UlgkwfIZ60cCdSYWeIBe4Yv27ZfB0ZHIgUOBpkPHDHysthxE83YtPwFE="
        ],
        "X-MS-TrafficTypeDiagnostic": "DM5PR07MB3097:",
        "X-Exchange-Antispam-Report-Test": "UriScan:(185117386973197);",
        "X-Microsoft-Antispam-PRVS": "<DM5PR07MB309763D6838C584DB088F50FEABB0@DM5PR07MB3097.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)(100000703101)(100105400095)(3002001)(93006095)(6041248)(20161123564025)(20161123555025)(20161123560025)(20161123558100)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:DM5PR07MB3097; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:DM5PR07MB3097; ",
        "X-Forefront-PRVS": "0378F1E47A",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(7370300001)(4630300001)(6009001)(6069001)(39850400002)(39400400002)(39410400002)(39840400002)(39450400003)(189002)(199003)(47776003)(6116002)(575784001)(38730400002)(42186005)(2950100002)(72206003)(36756003)(42882006)(5660300001)(6666003)(3846002)(4326008)(68736007)(110136004)(107886003)(2906002)(478600001)(5003940100001)(6486002)(33646002)(81156014)(8676002)(81166006)(97736004)(106356001)(1076002)(5890100001)(8656003)(53936002)(6506006)(66066001)(6512007)(7350300001)(189998001)(101416001)(7736002)(7416002)(50466002)(50986999)(50226002)(76176999)(105586002)(25786009)(305945005)(48376002);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR07MB3097; H:localhost.localdomain;\n\tFPR:; \n\tSPF:None; PTR:InfoNoRecords; MX:1; A: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": "24 Jul 2017 08:42:26.3485\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DM5PR07MB3097",
        "Subject": "[dpdk-dev] [PATCH v5 06/12] 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---\nv4 --> v5:\n - Reworded bus API description (Suggested by Hemant).\n\nv3 --> v4:\n - Initialized mode to RTE_IOVA_DC in rte_bus_get_iommu_class.\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 8d5bc5000..a30085a32 100644\n--- a/lib/librte_eal/bsdapp/eal/rte_eal_version.map\n+++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map\n@@ -242,5 +242,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 bf68f02bc..780539dc7 100644\n--- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map\n+++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map\n@@ -247,5 +247,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",
        "v5",
        "06/12"
    ]
}