get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 43958,
    "url": "http://patches.dpdk.org/api/patches/43958/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1535539660-20228-7-git-send-email-hemant.agrawal@nxp.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": "<1535539660-20228-7-git-send-email-hemant.agrawal@nxp.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1535539660-20228-7-git-send-email-hemant.agrawal@nxp.com",
    "date": "2018-08-29T10:47:33",
    "name": "[06/13] bus/dpaa: add interrupt based portal fd support",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "e530406af61286deb6b97c03df3b76cce7533ae5",
    "submitter": {
        "id": 477,
        "url": "http://patches.dpdk.org/api/people/477/?format=api",
        "name": "Hemant Agrawal",
        "email": "hemant.agrawal@nxp.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1535539660-20228-7-git-send-email-hemant.agrawal@nxp.com/mbox/",
    "series": [
        {
            "id": 1090,
            "url": "http://patches.dpdk.org/api/series/1090/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=1090",
            "date": "2018-08-29T10:47:27",
            "name": "driver/net: NXP DPAA driver enhancements",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/1090/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/43958/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/43958/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 [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 44BC85699;\n\tWed, 29 Aug 2018 12:49:56 +0200 (CEST)",
            "from EUR02-AM5-obe.outbound.protection.outlook.com\n\t(mail-eopbgr00068.outbound.protection.outlook.com [40.107.0.68])\n\tby dpdk.org (Postfix) with ESMTP id 42F964CC3\n\tfor <dev@dpdk.org>; Wed, 29 Aug 2018 12:49:52 +0200 (CEST)",
            "from bf-netperf1.ap.freescale.net (14.143.30.134) by\n\tVI1PR0401MB2543.eurprd04.prod.outlook.com (2603:10a6:800:56::21) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1080.17;\n\tWed, 29 Aug 2018 10:49:49 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=5tS27NpmrwNm27Vy2RkTLFGdJ6ph8rgjjwR3wG7seWo=;\n\tb=NH8jW6VsS38S1x7CL739ag4qqum8xhEfMqNCdAETReY57yxPjmAuIoPcoNRdm6KQcgKId0jqf8EPIDVFFIbT7Yu9bSnnsHb5LDMhppV+1YPzfjbPQviq/iI/gInvSQblVl/4/IhoN6ITr90tc9gO34IaUEDuNFfw7Z10BYNzU44=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=hemant.agrawal@nxp.com; ",
        "From": "Hemant Agrawal <hemant.agrawal@nxp.com>",
        "To": "dev@dpdk.org,\n\tferruh.yigit@intel.com",
        "Cc": "dpdk-up@NXP1.onmicrosoft.com",
        "Date": "Wed, 29 Aug 2018 16:17:33 +0530",
        "Message-Id": "<1535539660-20228-7-git-send-email-hemant.agrawal@nxp.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1535539660-20228-1-git-send-email-hemant.agrawal@nxp.com>",
        "References": "<1535539660-20228-1-git-send-email-hemant.agrawal@nxp.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[14.143.30.134]",
        "X-ClientProxiedBy": "BM1PR0101CA0071.INDPRD01.PROD.OUTLOOK.COM\n\t(2603:1096:b00:19::33) To VI1PR0401MB2543.eurprd04.prod.outlook.com\n\t(2603:10a6:800:56::21)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "d519d731-0115-483c-6bc9-08d60d9d253d",
        "X-MS-Office365-Filtering-HT": "Tenant",
        "X-Microsoft-Antispam": "BCL:0; PCL:0;\n\tRULEID:(7020095)(4652040)(8989137)(5600074)(711020)(4618075)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020);\n\tSRVR:VI1PR0401MB2543; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; VI1PR0401MB2543;\n\t3:Igu3A5CZtmstJU9uQi687hYiqaQU25TXQ6RlJqMmxBbKdlmvDBQ5dgLQEMYuP7rUvntc0EHyHR0DMMaJTReC8SudbzjGXKQiMhYtcgbUECTz5aIpKKERd1Z835wR9h+SmhKHEahc11LesYyYfxl9z1LLW3soxJJ2Lcs0yuUSW1OgaiJomUeulUjknokaAXFgxLuyDMqOwP0X4Sw5XjJMrwBKYRUeOBitoeoYf4MvY2RZ9AECGbvnzAQcDOCPrgH8;\n\t25:tVvNTuC+Xu6zgwv7CHlOzZJiL4fftsQZFWybJA0gfXu0BgcbuW9SSv4IMryYTB5OiwMAouxAFlxZJg483tMYeQ6cUUETJXpmJs48OlL/ZEbpTokyAsE6NXTIJojPoO01+QMuuj+XvtyamqGcbrMVEoBryaMbbSEk33sJJc7jVDtinXSW2riIL7sNZYAhzgMRSSYYSWUmciln49pxB0YwJkmgSll9SKpOppxJiw+ed3rb4jPHQIVJJDL3VqEAts1l9OKkuLR1/CaX6z8cddCo2L5RSuvkG1ZO6SmZFEjPXOx6y5zDWpd6jGQdmz0TEghkibn7FGJGTC0NHyk+8YVgDw==;\n\t31:4ls3799jdi4yezBim+X25Or2D3lC6yZ3F+c+M+1y5wxoVbWfXR7nL+JkVYic1tJTc56uKC33+KiekA3T+QaMUHMmmmNTGUOIflMT48O3IuNgy3O5zXEKL6BEx+CPOVaTII0Lz8WJB6XhbBa6tY8wTsYIwd89veqdI1UVOYbxGmGZ7ODKFHnQVzv587QCupOEuKSNjFKTDY83/FCoAwfl8Gv2KMJTDT6m7jLY8eG2wok=",
            "1; VI1PR0401MB2543;\n\t20:Nk+X/+D2fGvTB6nL2dbT5nrGud32ZfCCAT1Moz7Cs849YIgCoSS5haeIeCOt304tbfJSZHDLQB1wblHSMiT66+3KKpEuJxWXnkBzX9iTL07r0+LeUkqQYNRfMBeRDXBLV3o3vYSciPpQuzYD8rujrNDVGl5MMYJUQnkO6tXMXC7WiL4HSuNZTm0ayj9RR1SghViN+hgrg89nfuiqKMYnSxFJ5OgabLDErCrJPcPo3whY3yrtzCvZC4lFjFk5u/EZZsVhjFXb/KeDc58Q0hD1ZZypEWDdAddHZPnL43obNjZM8MNpdDPEqUdm1Ffj8QEaHCjCTwpn8kmCV4iYtdVrDhFVIpBZ9I/cjxXs7A/aEOehFJ/YXUIGi1P1YuSR7iFROY6Bc21CQso0Yq3pVEBAZaqBL5Y8PTt/2QYTakJUiXqmc/i6DzvA1DzGCypmXfOOT/PyiBUElHK4KuFz61jkggjK6JXaY6dZDtGzv8TcN+Hi2GZ/0B9EN/dSowlOXvew;\n\t4:L+98oevLn8CnFSj4dlVxW8AbkMi6IijuuBdD3WAb666e5XC+9vsoRgNKYFHmEwX3rsUyWzruLv+LTzkpkzvoUj5w9IWERBvj2K5qVL8SjwUtPtoZvIqBF2crD8zpj2yQe9JSw/sdSQqJE1CsLeAu9AUfU7obesumnoF6CXLIYADIWMlKfABaIrO76f8qRurAuqPULjPTOjTnn25LthaIyRTe2ShPToekO4zk6T1hKiyGziOMJLqiePHNzKWz+4tuTKUgfD45/sPNdRD0XGqzjYTNU0/nftbF6ybAilve0b6hAIZ+0acxUKK+Wi4xRp7JeWphj/xzzEn1Et8lmy99mCJQN8LeUVnhrTTYz162204=",
            "=?us-ascii?Q?1; VI1PR0401MB2543;\n\t23:49fZDIIOqjbmMLWAqHk6Mq4a4g1yCtDIuHH8La3?=\n\t3EK7cKYeQpaOSbZuRa9SZaZ6xzDXDSgs4B3vzwrXNHOYvBgKyvV8P8X7zIdGt+Xg1A4dMaANB0K6Xb13NRg/+DhkVPiQNaweKOUg2WTTosornStRUb73H60iyhrp2IqCrskzUcprJze4INjAZr1Ba0NS3Jxs08W2yeBJWtL6ontbpdR87kiwb03NDafp44KPBGPReKdxuR81+NZt5w7NeqFGJJWwprwV7OHkpEJkR66zAFQZEChRkpuYG6xfHTjiqMYjR8xauEq7KIu7D6lK/DxNqj4DLGMz4SG5srXfS0EdPkfSiMbc/Qla4lm0k16ZErrD4b8jI/c7oSBCu0735AjQNOqAJukinsHA16OJIB1IZVqLIWaTi4Qu9s55En3jrFDuqgYeLkT0wRj4+ZI9fwtCkhRvAp21epQ0yy01sDC88XynMZQN/xl+YCZXb4g//wEZbt5bCVygj3d+/Uh/O8ZwhKvZMwWjMSMb5/LerTVVKrgiTAJ625XOf4VumxoIeDmmX2nxrqLQt87cJBeBDXzawe/0XW3wr79XL6eyb53UsrXQLIH6/L5Z8AaQv6MSN1H9Ljt40fSh72rmaJrYa64uJKPqug7GWpHeAQSDIr2Me6wUUqn/uo5XXkENSh8//9bp4+vcJH8bPdLtE1fZbWnD+Va1c0OyrTZhKqP2M0lcfTyUSB9rTgdBojFKHBlLdDfzPu5xyoqRXE9JywvfDAsfraayNhfnvYHqS2aixld6tba4QGqX7b3KQ/s9l2wqJOhBMlq6yu8q+n2jUJ9Jdn6FD1U/wh223jA/qGEm3FrqHRgHwGbYXkflo7wEUlRqwK1UJ4k2HR/gwZqF8DWHxMH+f6YS9SxDUn/0Ha7IuVsno9J9meJ7Pf8nndzOVMm+wHjD2j+L+YudnbyN1O0RXCirkQJ/2MXWaYFVMFLb50NDHjVnZtKzXqMyued6KqVNjR/NRb9mZ8mUjRhsViLYFmj5aMjJjUJU268gxgHgFu7BeIvNPKfFxMPmK2fdxaMnD/qY+33qGGInw4cHnBH36dqLSGK2M0xV8XW3s8MTymrRBT2LpgTwsSQ8VI8C7Hn8fbwuolg36aOCnxqhvsQyyNrfSk1OXkl7nMEJdt0dwzNAkBc8z7R2f5JX9enDfIbha/eCfO+OKr+gf9PoZiy+FN9iUWMhj1GjGLPrvmo/06NJw6v/jzs8ZD8n7Xy+bjDq4bS212HWJZURWYm9t6THkiBrb0HFFd+gxQtWdTmJgWvW1OV+MlBRwUIbDpXq5lASImpdGQbsAJVvo57Lmgk2Jcy5G",
            "1; VI1PR0401MB2543;\n\t6:thiBxLz6LiNPFNMGfKxGi23U0lVXIDaIK+f1mzt0b7jDuAbctbWHsZbFDNeHJe+Hq3O+6DErgP7TSPTMwGILwTBcgzzFnMtt4hHkPhwwQ0zuxFzkLu5bc+SeEQj9piTh3OHNHj2OJ6HfBwnxNnddaVDLziJC42OWHPyOvAOON/+SAspQLxoW7RdkUVCSN7XKT1OS7vmUPLJXUALOjGlGILoQGX4tiagnxdNTk7kOGn8QNMfPJyP1VIDJ8Xvsg4S/BAUfbsJfL5qqME+ET7VMD3OOCZ9hZ/Zdn4kKO2A27LyrBKZ3qVeaxjvujJKCLnv6dHWQJWq+gyfHsVAuuvqCyr2OMQawA8U1StAT0PYX9ABelpqge+1INa/vSPKFv9VOVgl9Je/GvlmBbkI8eXFQwVhg66WQU5UF2MeB+QN85LgRKymC3kasvd4wgeA0PdjRq062pT2aH9Oh1xfJRkd8Qw==;\n\t5:VZ2RRkwrGEuVaWAhh8Cy/DjlBjVwHHixQnrimS+CFw7tmjSh9bO3P5wPFlM/ko65/EdaldW7QMnX49F9anmlBOadGo/hsGG8k1WPR41P12PmPHz/TVlXNPjYTNv2jTEutYEFGJKDE913gYbzqjvzXrrdFYIa5OB/0hOGvgljRcA=;\n\t7:2mK1K+tZ1trcg6QFmoZNu0PgE6cbLb9kcOXJeGGU1RNwS6nO1+sZlEwRivw4GfciJOGxtoir8MboBWaTw0325TpOFdO2NqMvggcKNGVci84JeQ7Rg81gDDkDOVX7XH63XO+DnHJnzVYQOpPhiKugtsPkZENBv0I2McavRSpIzqx9hSiNqNcJjOoh0h3laTymnQ3QoEFUgtzDDPwpMXJ/eJ/+TR1s4pqxD+H2oZwy8xO8RWmmXCPfvJ0fBPsZqfdV"
        ],
        "X-MS-TrafficTypeDiagnostic": "VI1PR0401MB2543:",
        "X-Microsoft-Antispam-PRVS": "<VI1PR0401MB25438DA2FC8C839BEF81728889090@VI1PR0401MB2543.eurprd04.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:(185117386973197)(275809806118684); ",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(823301075)(3002001)(10201501046)(3231311)(944501410)(52105095)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123564045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(201708071742011)(7699016);\n\tSRVR:VI1PR0401MB2543; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0401MB2543; ",
        "X-Forefront-PRVS": "077929D941",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(346002)(136003)(366004)(396003)(39860400002)(376002)(189003)(199004)(6512007)(6486002)(16526019)(53936002)(486006)(186003)(11346002)(105586002)(6116002)(106356001)(5660300001)(50466002)(68736007)(5009440100003)(2616005)(25786009)(48376002)(386003)(4326008)(55236004)(6666003)(73566003)(86362001)(956004)(107886003)(446003)(3846002)(26005)(575784001)(6506007)(476003)(316002)(52116002)(50226002)(478600001)(47776003)(66066001)(8936002)(16586007)(76176011)(51416003)(97736004)(44832011)(81166006)(8676002)(7736002)(305945005)(36756003)(81156014)(14444005)(2906002)(110426005);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0401MB2543;\n\tH:bf-netperf1.ap.freescale.net; \n\tFPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; ",
        "Received-SPF": "None (protection.outlook.com: nxp.com does not designate\n\tpermitted sender hosts)",
        "X-Microsoft-Antispam-Message-Info": "xoD93jop0TS/ybkl4Ug9k4nUkZEtSEAN1HpO1eqSY/sOyaY0p7DSiNe2HvPoqwrR8jd5ngYGI1JdcCOhfO4zkTWf/CODsagIRgRyglGox7Uc5LnxHrnhkOFClwsxwygac9yzfxSBQSFu4uC1aulG7zRdcnC23TXbfi9X+RMOb2dsD5rvRxAPF1OTUDtoorR+4l/gF+772o9T16vdR2Md687lK3iBl0N5ABYNkE5hUEjhhI01ltbu5v7RihTlF68sJbZxgEhh26XldEw9XyWtX54Nb//q9+6gni/41N/F95AV0VFykS5ui2Ej2WpQP/a5e7X57CAEXAL5QgkaQ2Rl6OM0tP4sZe3VWJCnSKtQxWA=",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "nxp.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "29 Aug 2018 10:49:49.7326\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "d519d731-0115-483c-6bc9-08d60d9d253d",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "686ea1d3-bc2b-4c6f-a92c-d99c5c301635",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "VI1PR0401MB2543",
        "Subject": "[dpdk-dev] [PATCH 06/13] bus/dpaa: add interrupt based portal fd\n\tsupport",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>\n---\n drivers/bus/dpaa/base/qbman/bman_driver.c | 17 ++++++----\n drivers/bus/dpaa/base/qbman/qman.c        | 52 +++++++++++++++++++++++++++++++\n drivers/bus/dpaa/base/qbman/qman_driver.c |  7 ++++-\n drivers/bus/dpaa/include/fsl_qman.h       | 20 ++++++++++++\n drivers/bus/dpaa/include/fsl_usd.h        |  6 ++++\n drivers/bus/dpaa/rte_bus_dpaa_version.map | 17 +++++++++-\n 6 files changed, 111 insertions(+), 8 deletions(-)",
    "diff": "diff --git a/drivers/bus/dpaa/base/qbman/bman_driver.c b/drivers/bus/dpaa/base/qbman/bman_driver.c\nindex b14b590..750b756 100644\n--- a/drivers/bus/dpaa/base/qbman/bman_driver.c\n+++ b/drivers/bus/dpaa/base/qbman/bman_driver.c\n@@ -23,7 +23,7 @@ static void *bman_ccsr_map;\n /* Portal driver */\n /*****************/\n \n-static __thread int fd = -1;\n+static __thread int bmfd = -1;\n static __thread struct bm_portal_config pcfg;\n static __thread struct dpaa_ioctl_portal_map map = {\n \t.type = dpaa_portal_bman\n@@ -70,14 +70,14 @@ static int fsl_bman_portal_init(uint32_t idx, int is_shared)\n \tpcfg.index = map.index;\n \tbman_depletion_fill(&pcfg.mask);\n \n-\tfd = open(BMAN_PORTAL_IRQ_PATH, O_RDONLY);\n-\tif (fd == -1) {\n+\tbmfd = open(BMAN_PORTAL_IRQ_PATH, O_RDONLY);\n+\tif (bmfd == -1) {\n \t\tpr_err(\"BMan irq init failed\");\n \t\tprocess_portal_unmap(&map.addr);\n \t\treturn -EBUSY;\n \t}\n \t/* Use the IRQ FD as a unique IRQ number */\n-\tpcfg.irq = fd;\n+\tpcfg.irq = bmfd;\n \n \tportal = bman_create_affine_portal(&pcfg);\n \tif (!portal) {\n@@ -90,7 +90,7 @@ static int fsl_bman_portal_init(uint32_t idx, int is_shared)\n \t/* Set the IRQ number */\n \tirq_map.type = dpaa_portal_bman;\n \tirq_map.portal_cinh = map.addr.cinh;\n-\tprocess_portal_irq_map(fd, &irq_map);\n+\tprocess_portal_irq_map(bmfd, &irq_map);\n \treturn 0;\n }\n \n@@ -99,7 +99,7 @@ static int fsl_bman_portal_finish(void)\n \t__maybe_unused const struct bm_portal_config *cfg;\n \tint ret;\n \n-\tprocess_portal_irq_unmap(fd);\n+\tprocess_portal_irq_unmap(bmfd);\n \n \tcfg = bman_destroy_affine_portal();\n \tDPAA_BUG_ON(cfg != &pcfg);\n@@ -109,6 +109,11 @@ static int fsl_bman_portal_finish(void)\n \treturn ret;\n }\n \n+int bman_thread_fd(void)\n+{\n+\treturn bmfd;\n+}\n+\n int bman_thread_init(void)\n {\n \t/* Convert from contiguous/virtual cpu numbering to real cpu when\ndiff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c\nindex 7c17027..8730550 100644\n--- a/drivers/bus/dpaa/base/qbman/qman.c\n+++ b/drivers/bus/dpaa/base/qbman/qman.c\n@@ -1040,6 +1040,50 @@ static inline unsigned int __poll_portal_fast(struct qman_portal *p,\n \treturn limit;\n }\n \n+int qman_irqsource_add(u32 bits)\n+{\n+\tstruct qman_portal *p = get_affine_portal();\n+\n+\tbits = bits & QM_PIRQ_VISIBLE;\n+\n+\t/* Clear any previously remaining interrupt conditions in\n+\t * QCSP_ISR. This prevents raising a false interrupt when\n+\t * interrupt conditions are enabled in QCSP_IER.\n+\t */\n+\tqm_isr_status_clear(&p->p, bits);\n+\tdpaa_set_bits(bits, &p->irq_sources);\n+\tqm_isr_enable_write(&p->p, p->irq_sources);\n+\n+\n+\treturn 0;\n+}\n+\n+int qman_irqsource_remove(u32 bits)\n+{\n+\tstruct qman_portal *p = get_affine_portal();\n+\tu32 ier;\n+\n+\t/* Our interrupt handler only processes+clears status register bits that\n+\t * are in p->irq_sources. As we're trimming that mask, if one of them\n+\t * were to assert in the status register just before we remove it from\n+\t * the enable register, there would be an interrupt-storm when we\n+\t * release the IRQ lock. So we wait for the enable register update to\n+\t * take effect in h/w (by reading it back) and then clear all other bits\n+\t * in the status register. Ie. we clear them from ISR once it's certain\n+\t * IER won't allow them to reassert.\n+\t */\n+\n+\tbits &= QM_PIRQ_VISIBLE;\n+\tdpaa_clear_bits(bits, &p->irq_sources);\n+\tqm_isr_enable_write(&p->p, p->irq_sources);\n+\tier = qm_isr_enable_read(&p->p);\n+\t/* Using \"~ier\" (rather than \"bits\" or \"~p->irq_sources\") creates a\n+\t * data-dependency, ie. to protect against re-ordering.\n+\t */\n+\tqm_isr_status_clear(&p->p, ~ier);\n+\treturn 0;\n+}\n+\n u16 qman_affine_channel(int cpu)\n {\n \tif (cpu < 0) {\n@@ -1114,6 +1158,14 @@ unsigned int qman_portal_poll_rx(unsigned int poll_limit,\n \treturn rx_number;\n }\n \n+void qman_clear_irq(void)\n+{\n+\tstruct qman_portal *p = get_affine_portal();\n+\tu32 clear = QM_DQAVAIL_MASK | (p->irq_sources &\n+\t\t~(QM_PIRQ_CSCI | QM_PIRQ_CCSCI));\n+\tqm_isr_status_clear(&p->p, clear);\n+}\n+\n u32 qman_portal_dequeue(struct rte_event ev[], unsigned int poll_limit,\n \t\t\tvoid **bufs)\n {\ndiff --git a/drivers/bus/dpaa/base/qbman/qman_driver.c b/drivers/bus/dpaa/base/qbman/qman_driver.c\nindex f6ecd6b..ba15339 100644\n--- a/drivers/bus/dpaa/base/qbman/qman_driver.c\n+++ b/drivers/bus/dpaa/base/qbman/qman_driver.c\n@@ -113,6 +113,11 @@ static int fsl_qman_portal_finish(void)\n \treturn ret;\n }\n \n+int qman_thread_fd(void)\n+{\n+\treturn qmfd;\n+}\n+\n int qman_thread_init(void)\n {\n \t/* Convert from contiguous/virtual cpu numbering to real cpu when\n@@ -135,7 +140,7 @@ void qman_thread_irq(void)\n \t * rather than breaking that encapsulation I am simply hard-coding the\n \t * offset to the inhibit register here.\n \t */\n-\tout_be32(qpcfg.addr_virt[DPAA_PORTAL_CI] + 0xe0c, 0);\n+\tout_be32(qpcfg.addr_virt[DPAA_PORTAL_CI] + 0x36C0, 0);\n }\n \n struct qman_portal *fsl_qman_portal_create(void)\ndiff --git a/drivers/bus/dpaa/include/fsl_qman.h b/drivers/bus/dpaa/include/fsl_qman.h\nindex b18cf03..e438414 100644\n--- a/drivers/bus/dpaa/include/fsl_qman.h\n+++ b/drivers/bus/dpaa/include/fsl_qman.h\n@@ -1316,6 +1316,26 @@ u32 qman_portal_dequeue(struct rte_event ev[], unsigned int poll_limit,\n \t\t\tvoid **bufs);\n \n /**\n+ * qman_irqsource_add - add processing sources to be interrupt-driven\n+ * @bits: bitmask of QM_PIRQ_**I processing sources\n+ *\n+ * Adds processing sources that should be interrupt-driven (rather than\n+ * processed via qman_poll_***() functions). Returns zero for success, or\n+ * -EINVAL if the current CPU is sharing a portal hosted on another CPU.\n+ */\n+int qman_irqsource_add(u32 bits);\n+\n+/**\n+ * qman_irqsource_remove - remove processing sources from being interrupt-driven\n+ * @bits: bitmask of QM_PIRQ_**I processing sources\n+ *\n+ * Removes processing sources from being interrupt-driven, so that they will\n+ * instead be processed via qman_poll_***() functions. Returns zero for success,\n+ * or -EINVAL if the current CPU is sharing a portal hosted on another CPU.\n+ */\n+int qman_irqsource_remove(u32 bits);\n+\n+/**\n  * qman_affine_channel - return the channel ID of an portal\n  * @cpu: the cpu whose affine portal is the subject of the query\n  *\ndiff --git a/drivers/bus/dpaa/include/fsl_usd.h b/drivers/bus/dpaa/include/fsl_usd.h\nindex e183617..ec1ab7c 100644\n--- a/drivers/bus/dpaa/include/fsl_usd.h\n+++ b/drivers/bus/dpaa/include/fsl_usd.h\n@@ -55,6 +55,10 @@ int qman_free_raw_portal(struct dpaa_raw_portal *portal);\n int bman_allocate_raw_portal(struct dpaa_raw_portal *portal);\n int bman_free_raw_portal(struct dpaa_raw_portal *portal);\n \n+/* Obtain thread-local UIO file-descriptors */\n+int qman_thread_fd(void);\n+int bman_thread_fd(void);\n+\n /* Post-process interrupts. NB, the kernel IRQ handler disables the interrupt\n  * line before notifying us, and this post-processing re-enables it once\n  * processing is complete. As such, it is essential to call this before going\n@@ -63,6 +67,8 @@ int bman_free_raw_portal(struct dpaa_raw_portal *portal);\n void qman_thread_irq(void);\n void bman_thread_irq(void);\n \n+void qman_clear_irq(void);\n+\n /* Global setup */\n int qman_global_init(void);\n int bman_global_init(void);\ndiff --git a/drivers/bus/dpaa/rte_bus_dpaa_version.map b/drivers/bus/dpaa/rte_bus_dpaa_version.map\nindex 7d6d624..0f792a2 100644\n--- a/drivers/bus/dpaa/rte_bus_dpaa_version.map\n+++ b/drivers/bus/dpaa/rte_bus_dpaa_version.map\n@@ -95,10 +95,25 @@ DPDK_18.02 {\n \n DPDK_18.08 {\n \tglobal:\n-\n \tfman_if_get_sg_enable;\n \tfman_if_set_sg;\n \tof_get_mac_address;\n \n \tlocal: *;\n } DPDK_18.02;\n+\n+DPDK_18.11 {\n+\tglobal:\n+\tbman_thread_irq;\n+\tfman_if_get_sg_enable;\n+\tfman_if_set_sg;\n+\tqman_clear_irq;\n+\n+\tqman_irqsource_add;\n+\tqman_irqsource_remove;\n+\tqman_portal_ucode_poll_rx;\n+\tqman_thread_fd;\n+\tqman_thread_irq;\n+\n+\tlocal: *;\n+} DPDK_18.08;\n",
    "prefixes": [
        "06/13"
    ]
}