get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2175220,
    "url": "http://patchwork.ozlabs.org/api/1.0/patches/2175220/?format=api",
    "project": {
        "id": 28,
        "url": "http://patchwork.ozlabs.org/api/1.0/projects/28/?format=api",
        "name": "Linux PCI development",
        "link_name": "linux-pci",
        "list_id": "linux-pci.vger.kernel.org",
        "list_email": "linux-pci@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null
    },
    "msgid": "<20251217151609.3162665-15-den@valinux.co.jp>",
    "date": "2025-12-17T15:15:48",
    "name": "[RFC,v3,14/35] NTB: epf: Reserve a subset of MSI vectors for non-NTB users",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "7bc3013085dc7aef4a86ff4c572909bf1d0ef333",
    "submitter": {
        "id": 91573,
        "url": "http://patchwork.ozlabs.org/api/1.0/people/91573/?format=api",
        "name": "Koichiro Den",
        "email": "den@valinux.co.jp"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linux-pci/patch/20251217151609.3162665-15-den@valinux.co.jp/mbox/",
    "series": [
        {
            "id": 485709,
            "url": "http://patchwork.ozlabs.org/api/1.0/series/485709/?format=api",
            "date": "2025-12-17T15:15:53",
            "name": "NTB transport backed by endpoint DW eDMA",
            "version": 3,
            "mbox": "http://patchwork.ozlabs.org/series/485709/mbox/"
        }
    ],
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2175220/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "\n <linux-pci+bounces-43185-incoming=patchwork.ozlabs.org@vger.kernel.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "linux-pci@vger.kernel.org"
        ],
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=valinux.co.jp header.i=@valinux.co.jp\n header.a=rsa-sha256 header.s=selector1 header.b=BnhLs34r;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-pci+bounces-43185-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)",
            "smtp.subspace.kernel.org;\n\tdkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp\n header.b=\"BnhLs34r\"",
            "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=40.107.74.52",
            "smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=valinux.co.jp",
            "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=valinux.co.jp",
            "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=valinux.co.jp;"
        ],
        "Received": [
            "from tor.lore.kernel.org (tor.lore.kernel.org\n [IPv6:2600:3c04:e001:36c::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4dWdR06VM1z1xpw\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 18 Dec 2025 02:45:00 +1100 (AEDT)",
            "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id 8E09E318C364\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 17 Dec 2025 15:21:00 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 9E50834FF50;\n\tWed, 17 Dec 2025 15:16:43 +0000 (UTC)",
            "from OS0P286CU010.outbound.protection.outlook.com\n (mail-japanwestazon11011052.outbound.protection.outlook.com [40.107.74.52])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 6D25834DCDD;\n\tWed, 17 Dec 2025 15:16:41 +0000 (UTC)",
            "from TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:24c::11)\n by OS9P286MB4633.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:2fc::12) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.6; Wed, 17 Dec\n 2025 15:16:26 +0000",
            "from TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM\n ([fe80::fb7e:f4ed:a580:9d03]) by TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM\n ([fe80::fb7e:f4ed:a580:9d03%5]) with mapi id 15.20.9434.001; Wed, 17 Dec 2025\n 15:16:25 +0000"
        ],
        "ARC-Seal": [
            "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1765984603; cv=fail;\n b=pVDtT5IKJnwBGkbm0Dd2BiYWdg3EH+GAl44qTniHgpXY7O47TxpENn9n1KPyDwV/lnCVypW82eue8JcvTTneEy2Xo0j0VpvDs5+JLRc9C8hzvwnlH+uqCCSWRICtAHRJExZy60j8IR9YsHuHAyaC07sIINGu2AhfQ1fO7RnIHo4=",
            "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=LGvyTZIgL/GlLq7oNt2ox0Cmdh9Zut8rrJVwpAIz7Aww4G6Q9z+qkYIdUvvLZBTxdt2t0NY74i2MWEudtmb9YYeyHLcHB9rH/snkGT3/vou6ry23hSlbsFpoBbzopmL3pu6Kw8aAc3gtexQ6onVtFP13BmhOpHX8ItZbtDUDrtTUnFZBLntn0H+vtCtvSev59BcnZXdAC9l/l8DHlga5jvukmaTJd9WgTT2GRvIJAcuPqZ67HDfkQVgcbDaADvhtCo2YLLlS54AYZ7XGVU8semENzXf9mUKvDsARKwYbjdrz3JRVN2mpOsOcucOv3DmF1Md/3mYklBSbfctfbrl5OA=="
        ],
        "ARC-Message-Signature": [
            "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1765984603; c=relaxed/simple;\n\tbh=ygpXfay9LIy31jIC4H8offCxBPpJRyPo1Rg9zTYMN2A=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=UbUDnGOK2LDio+PWnomzSOrAg/Xd3xz2NMvSNoi5o7WUuapzkr/q4eIKeQ7FqmNYWEZqnaLZZ8qg6rwNfhKxEtFMQzImQO5Jq1aGMYylTsd6FnMPjuPEn69pOvPp8G86xM9A5TzTuAiKAOZiificb3/mw8z7oyfAAGE0tfDSvLM=",
            "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=0IQBj+DlAfPQPSnkm2VfGWm6XCIbcSk2iHd9aLxOq/E=;\n b=LQN7QE1B65qrHSBu6H7ebgiKv4nCh94LOkQqDWHruiDINe3JR2BjCd23VZKezC5jCzmVRUVDFbay8SO8xHNawki6/MFc8c1UGiAC8mOfIrtr9mRae8ScnL5uqIfs/xOJpYohWjpTREb4ub64sQtsQOmA860QTh09b9cIWicChkjBPVr132pZvfkD1zeaUXUJ/4OpoOK85EX/A1shyY94J5+277MUMvZkKdVZihU/17CDysSD9tP13eKVpKVhQqssTAB1GEG5Medn4odTQ4LfR2ZVAhBL6wUzgwjEY62BklnfW101W+z4rNYGMUohReUTl/sScakPYdQWMl+N1A8Y0g=="
        ],
        "ARC-Authentication-Results": [
            "i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=valinux.co.jp;\n spf=pass smtp.mailfrom=valinux.co.jp;\n dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp\n header.b=BnhLs34r; arc=fail smtp.client-ip=40.107.74.52",
            "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=valinux.co.jp; dmarc=pass action=none\n header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=0IQBj+DlAfPQPSnkm2VfGWm6XCIbcSk2iHd9aLxOq/E=;\n b=BnhLs34r2v7Q457r5rcIfXUorXbeX7/wdeYoFYry9W1I4bXhns4icv8iIS4dqBGe7hLCPOWHAFHJwVW1FR4EOhH8ol5GGYKsiIE/h3gQdsgFwfoaKau112t8j5dXClQ/h97p1IUr0zomc8uz9DavcusdSz2CW7CKXA033/f5Ke4=",
        "From": "Koichiro Den <den@valinux.co.jp>",
        "To": "Frank.Li@nxp.com,\n\tdave.jiang@intel.com,\n\tntb@lists.linux.dev,\n\tlinux-pci@vger.kernel.org,\n\tdmaengine@vger.kernel.org,\n\tlinux-renesas-soc@vger.kernel.org,\n\tnetdev@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org",
        "Cc": "mani@kernel.org,\n\tkwilczynski@kernel.org,\n\tkishon@kernel.org,\n\tbhelgaas@google.com,\n\tcorbet@lwn.net,\n\tgeert+renesas@glider.be,\n\tmagnus.damm@gmail.com,\n\trobh@kernel.org,\n\tkrzk+dt@kernel.org,\n\tconor+dt@kernel.org,\n\tvkoul@kernel.org,\n\tjoro@8bytes.org,\n\twill@kernel.org,\n\trobin.murphy@arm.com,\n\tjdmason@kudzu.us,\n\tallenbh@gmail.com,\n\tandrew+netdev@lunn.ch,\n\tdavem@davemloft.net,\n\tedumazet@google.com,\n\tkuba@kernel.org,\n\tpabeni@redhat.com,\n\tBasavaraj.Natikar@amd.com,\n\tShyam-sundar.S-k@amd.com,\n\tkurt.schwemmer@microsemi.com,\n\tlogang@deltatee.com,\n\tjingoohan1@gmail.com,\n\tlpieralisi@kernel.org,\n\tutkarsh02t@gmail.com,\n\tjbrunet@baylibre.com,\n\tdlemoal@kernel.org,\n\tarnd@arndb.de,\n\telfring@users.sourceforge.net,\n\tden@valinux.co.jp",
        "Subject": "[RFC PATCH v3 14/35] NTB: epf: Reserve a subset of MSI vectors for\n non-NTB users",
        "Date": "Thu, 18 Dec 2025 00:15:48 +0900",
        "Message-ID": "<20251217151609.3162665-15-den@valinux.co.jp>",
        "X-Mailer": "git-send-email 2.51.0",
        "In-Reply-To": "<20251217151609.3162665-1-den@valinux.co.jp>",
        "References": "<20251217151609.3162665-1-den@valinux.co.jp>",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "TYCPR01CA0113.jpnprd01.prod.outlook.com\n (2603:1096:405:4::29) To TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM\n (2603:1096:400:24c::11)",
        "Precedence": "bulk",
        "X-Mailing-List": "linux-pci@vger.kernel.org",
        "List-Id": "<linux-pci.vger.kernel.org>",
        "List-Subscribe": "<mailto:linux-pci+subscribe@vger.kernel.org>",
        "List-Unsubscribe": "<mailto:linux-pci+unsubscribe@vger.kernel.org>",
        "MIME-Version": "1.0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "TYWP286MB2697:EE_|OS9P286MB4633:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "19cf958b-15e1-41d2-2aa8-08de3d7f3ed8",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|10070799003|376014|7416014|1800799024|366016;",
        "X-Microsoft-Antispam-Message-Info": "\n 8GPmYHkreRpmA/VQRwr8Fxz/GgxS9VogGdqopfEEj31zs2SF+y8ZJtx0684tcPjmjanoWXPUx7eE7Npx2MbBty5kjKWLTPKt0BPAS1/WTjXp/ad0tnlrl4C1YG9E9TM98VQvHINQIXg0661sznO7d4J33JO1zWVIoxY39Psa38NC46I6i2ucMsDh/E9pJAHfQjsiNWjyslOFPxPkEf0mMkbaamp4/l1uIezlj3CqmzzB8UytTGUiUk6mUjEjjSrvlG6GCN91vmAo4aIip+IQb0O1zF+YEDPwO6BvAibhPxGxEi/JoX74KiIOSs7Fl57rB7sSMQlxarrIRWuszK8MCG8Os4iD0vsESV2X3dhuDonYsh02Vj3dJwnVWTjU/1Oiu3Wz0JGXPApNC09YK+LKjUvMj1nqnxjFTtvGEYwjXa+MPIvh53m+1ZvhiGdSpi5I2d2ioqjz+IiODvkVSYglLuDF/SOPQxMOKd4EJhtF5Eqj31AnF/KhDfvJx1xfE61VEYfE4HSUEaqjftYXU9g2rvI3n8P6qCujtW6/xzEzUugH5typdZvjPqimmjE/EdAxE4ok19xoJNnajFSxwJ/DkFL1Rinx+OMN8jWY9iNKYfOeVj/ezmYrMnrUbD82mjQl6xF6mCl1QOPywJDOsEYHlRQlt2PpjgGlkGB6gjQrXPmdwP/tOovNW8Stz40rjBGMj+G++bxyN11Uce1woEmiXgzBuSR46Xr05RKIJ/Ud25ZCo0ILA6rUQPkoDA568+lbzZMWO0f8xM/DX0v+R6ddTewf6ebSn8Dy/JsICr0wMCZiv9Jq41hnjii/Oz+Xk/o/xroYF9e8pTqxShQIQkmE027zX9LqAdp4gsPg1aSqUcI502Dgx9oKhHs5Z/RkWjndhaWwUy9FnAeXsjSWVZzWQZRczF4EpVLEu1Md6Ht6COI3lOhDCng2GOSUSB41Bat+gKH1xAUekDwn+Rgx5Y5UAHauW0ErFvz1SvEY4oA18S4I9vwlMHQOuWUnvlvU0FbQ7+i5t8N0S6MCFg+ovZ1v8kUC1wIXbK2eeluQmDRAlrEB2l0AzWWMUGBG8zvOl+XwNtuSOhiOWI6uqRiE5m47GpMX7YwcoETwYLe2G2+U1Ql0aqWnNmXZl5LzNXPde/lj9BDr1w9GuBD8w2jIM6w3gg9SLg8orT1RUHMUG5ImjAMDY3PFv+rQ3sQM+OZkn7PBD3F/3WOyYVtN0rsAZMCF8pkXjsq+lVgRblXu9R3/WLrWZEtypIR1ThBZAQj5D6BOJC2GgACVnAfJ9JHxfumkupv5gilcMZi4qeBgy64J1KadAFgxwRORIRfc19ZV1VBlLeXHkb7ToOVtdlKZHev+d+WA5PMmjOsTDLgz9+suqlHO8MIoHg8j8ARotrRc+FaCebGbDJAkzKOZhMrjaRnKx1H9GBEgbtnecHA4pO9CMHL1m+Ei8yI7ltB4F8w99iAy",
        "X-Forefront-Antispam-Report": "\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(376014)(7416014)(1800799024)(366016);DIR:OUT;SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n ykTbSwdZ6hfbVC09eFyJsPQORkPjsNfjeiMEdDaytNoPPCq6+3v6vSI9k8Ppz1zw26dUOlT2AlvmjkpfpvcDxjRyQ2q/HrKGYg5naiwCTtNOubcMXn6HlcKYN5KKOX+Poq1DEJEIRwcSPNeZhufFr6bZp9eyfLW9WX+SJulVF50s6scakq/0F7tRS/bp8hm4OG4A24tV8ACpPmF+TB/N0iHtI7I63+4RDJi2krS85KBu9MZoKtdKbuNL6nxySxJjqDkkh3OIpNx555WlFmEBeFjQNRirAgJYRtho8vfiqUZSRPgwhQbXn3/IBSRLW/ng/VsbbUe6g1b3+mWkcVdCejbao9GEmfNOS6E5wPR/mK54dlIDypn/WvccLnIqIff5f1AOuCqQFSmDM58qLDYc1f+NujDRaHkMv1bkBQHfzbWCNkKOrY0q2PXZfH2iWNZTiV8oqSQBFxzP8vlqYFvur7dNDu6ri4o8UBQA57hlEVUMBfy4G1givdxhl9ECedWY1umJkkrH7vkfJvEUjpkcaZcAxyoa1WKDVEkpT9PLwOWdLvzalwJWL7BHj/umNfKcIp+TOaOZ5k4U5nGb+4tKlSihI6LBrIGMT/DIhWeJeuevA3xUo2PZ0F8Zj9aZK6Yhfs4zM4k5/k6XOa0dZnNWnRxSMohO+6VBfLGlntfEfklZ9ZJz/ORaKWqAaU/NuiUWuxqPCUdQvNVVcvdU7h7Jx9auYSVSjxkJd4OqmdOSFwKlQcyRl9EWz4kyagcc7dAMwt7En0+rOcdmHboQ6KG9Y3UqYcf3ojLYd1ZM23+IcUXIw522HY2zCUkkRvJ07XuwcDa33S3C90Vm+1Wdt/tH+PlxnNksQdc6f+vt6ojrUkwVRHhtDUks0p3o+ZRPgyz8AkS4sQKjgDofOZY390oO2elpX/c1ZSzGEkTFw1VwvG6gwcrqAgxn1heKx89+O5iw6u5BtzVhPxV0BTh9ozRcmG0xnVTQWkjTrOb8mTUwNwIhSnTnoxB0Qp+ZDdAFECZ5HavU0s3PLAIymwhlgXSCeuREDq8NuxPn1XSS+Ms86S4hqSdXyEqp0PkmkCjYs2oNLh5f6oiQm9ynFoQWjhknzR+VL24Itmk/GT2aUyije8R7dTeBab6cB3dKKmzLykND5SkU9v6zb0WNhmsK9sNfUsfiGpb0sxW8Z1kcDW5//tJ5hmynG+d/1mY5M076cCOH/SLDDxFWURVPWel9anGoogUjo7S49FVWGnVrnrj1+cAv60mIQI/i1/VQhoH137QUZqxQG0td/jKaYiK1a7U5tTj5TewMqGUy2dL5N5eNGLvbE/of0Hm0nr2FYwpmomSvxIQfJr/epM+UEsnXhNQoggCgmMVOJsyRBLTstz3+o367HwpF44mQ4Dcif8QmZAt8BnG3MYfvSdAG4pFmUFAbYLvppmIMvsu00mRu41KdwJyenp8ncl7Ti+wg6Ad4dINRuBqvkFP58IgS8tu8C8iX+lgDzqMJacHJdPjQkbtcrDWSCWRMz9h6G0zjK7WOBVmY/kqmBgTUeS6ixxxAcEryWY4BbOhk6y3wVFWvqlqjL8kqEnjz0FdnvoBsrmgQurq7do8qY/EgoaJU/vq0asZZRDXGxGpW8yG6UhXI4OJnmp4=",
        "X-OriginatorOrg": "valinux.co.jp",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 19cf958b-15e1-41d2-2aa8-08de3d7f3ed8",
        "X-MS-Exchange-CrossTenant-AuthSource": "TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "17 Dec 2025 15:16:25.8360\n (UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "7a57bee8-f73d-4c5f-a4f7-d72c91c8c111",
        "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED",
        "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n wQEUVIhL15dE024fG4SdAG4/rzuwdiBP4lem2LQQm9uQvRmUETKFdc+PfNuD1mf16NWZw6jT4MnRg/eEoyQyYA==",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "OS9P286MB4633"
    },
    "content": "The ntb_hw_epf driver currently uses all MSI/MSI-X vectors allocated for\nthe endpoint as doorbell interrupts. On SoCs that also run other\nfunctions on the same PCIe controller (e.g. DesignWare eDMA), we need to\nreserve some vectors for those other consumers.\n\nIntroduce NTB_EPF_IRQ_RESERVE and track the total number of allocated\nvectors in ntb_epf_dev's 'num_irqs' field. Use only (num_irqs -\nNTB_EPF_IRQ_RESERVE) vectors for NTB doorbells and free all num_irqs\nvectors in the teardown path, so that the remaining vectors can be used\nby other endpoint functions such as the integrated DesignWare eDMA.\n\nThis makes it possible to share the PCIe controller MSI space between\nNTB and other on-chip IP blocks.\n\nSigned-off-by: Koichiro Den <den@valinux.co.jp>\n---\n drivers/ntb/hw/epf/ntb_hw_epf.c | 34 +++++++++++++++++++++------------\n 1 file changed, 22 insertions(+), 12 deletions(-)",
    "diff": "diff --git a/drivers/ntb/hw/epf/ntb_hw_epf.c b/drivers/ntb/hw/epf/ntb_hw_epf.c\nindex 89a536562abf..4ecc6b2177b4 100644\n--- a/drivers/ntb/hw/epf/ntb_hw_epf.c\n+++ b/drivers/ntb/hw/epf/ntb_hw_epf.c\n@@ -49,6 +49,7 @@\n \n #define NTB_EPF_MIN_DB_COUNT\t3\n #define NTB_EPF_MAX_DB_COUNT\t31\n+#define NTB_EPF_IRQ_RESERVE\t8\n \n #define NTB_EPF_COMMAND_TIMEOUT\t1000 /* 1 Sec */\n \n@@ -87,6 +88,8 @@ struct ntb_epf_dev {\n \tunsigned int spad_count;\n \tunsigned int db_count;\n \n+\tunsigned int num_irqs;\n+\n \tvoid __iomem *ctrl_reg;\n \tvoid __iomem *db_reg;\n \tvoid __iomem *peer_spad_reg;\n@@ -341,7 +344,7 @@ static int ntb_epf_init_isr(struct ntb_epf_dev *ndev, int msi_min, int msi_max)\n \tu32 argument = MSIX_ENABLE;\n \tint irq;\n \tint ret;\n-\tint i;\n+\tint i = 0;\n \n \tirq = pci_alloc_irq_vectors(pdev, msi_min, msi_max, PCI_IRQ_MSIX);\n \tif (irq < 0) {\n@@ -355,33 +358,39 @@ static int ntb_epf_init_isr(struct ntb_epf_dev *ndev, int msi_min, int msi_max)\n \t\targument &= ~MSIX_ENABLE;\n \t}\n \n+\tndev->num_irqs = irq;\n+\tirq -= NTB_EPF_IRQ_RESERVE;\n+\tif (irq <= 0) {\n+\t\tdev_err(dev, \"Not enough irqs allocated\\n\");\n+\t\tret = -ENOSPC;\n+\t\tgoto err_out;\n+\t}\n+\n \tfor (i = 0; i < irq; i++) {\n \t\tret = request_irq(pci_irq_vector(pdev, i), ntb_epf_vec_isr,\n \t\t\t\t  0, \"ntb_epf\", ndev);\n \t\tif (ret) {\n \t\t\tdev_err(dev, \"Failed to request irq\\n\");\n-\t\t\tgoto err_request_irq;\n+\t\t\tgoto err_out;\n \t\t}\n \t}\n \n-\tndev->db_count = irq - 1;\n+\tndev->db_count = irq;\n \n \tret = ntb_epf_send_command(ndev, CMD_CONFIGURE_DOORBELL,\n \t\t\t\t   argument | irq);\n \tif (ret) {\n \t\tdev_err(dev, \"Failed to configure doorbell\\n\");\n-\t\tgoto err_configure_db;\n+\t\tgoto err_out;\n \t}\n \n \treturn 0;\n \n-err_configure_db:\n-\tfor (i = 0; i < ndev->db_count + 1; i++)\n+err_out:\n+\twhile (i-- > 0)\n \t\tfree_irq(pci_irq_vector(pdev, i), ndev);\n \n-err_request_irq:\n \tpci_free_irq_vectors(pdev);\n-\n \treturn ret;\n }\n \n@@ -489,7 +498,7 @@ static int ntb_epf_peer_db_set(struct ntb_dev *ntb, u64 db_bits)\n \tu32 db_offset;\n \tu32 db_data;\n \n-\tif (interrupt_num > ndev->db_count) {\n+\tif (interrupt_num >= ndev->db_count) {\n \t\tdev_err(dev, \"DB interrupt %d greater than Max Supported %d\\n\",\n \t\t\tinterrupt_num, ndev->db_count);\n \t\treturn -EINVAL;\n@@ -499,6 +508,7 @@ static int ntb_epf_peer_db_set(struct ntb_dev *ntb, u64 db_bits)\n \n \tdb_data = readl(ndev->ctrl_reg + NTB_EPF_DB_DATA(interrupt_num));\n \tdb_offset = readl(ndev->ctrl_reg + NTB_EPF_DB_OFFSET(interrupt_num));\n+\n \twritel(db_data, ndev->db_reg + (db_entry_size * interrupt_num) +\n \t       db_offset);\n \n@@ -581,8 +591,8 @@ static int ntb_epf_init_dev(struct ntb_epf_dev *ndev)\n \tint ret;\n \n \t/* One Link interrupt and rest doorbell interrupt */\n-\tret = ntb_epf_init_isr(ndev, NTB_EPF_MIN_DB_COUNT + 1,\n-\t\t\t       NTB_EPF_MAX_DB_COUNT + 1);\n+\tret = ntb_epf_init_isr(ndev, NTB_EPF_MIN_DB_COUNT + NTB_EPF_IRQ_RESERVE,\n+\t\t\t       NTB_EPF_MAX_DB_COUNT + NTB_EPF_IRQ_RESERVE);\n \tif (ret) {\n \t\tdev_err(dev, \"Failed to init ISR\\n\");\n \t\treturn ret;\n@@ -689,7 +699,7 @@ static void ntb_epf_cleanup_isr(struct ntb_epf_dev *ndev)\n \n \tntb_epf_send_command(ndev, CMD_TEARDOWN_DOORBELL, ndev->db_count + 1);\n \n-\tfor (i = 0; i < ndev->db_count + 1; i++)\n+\tfor (i = 0; i < ndev->num_irqs; i++)\n \t\tfree_irq(pci_irq_vector(pdev, i), ndev);\n \tpci_free_irq_vectors(pdev);\n }\n",
    "prefixes": [
        "RFC",
        "v3",
        "14/35"
    ]
}