Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2197147/?format=api
{ "id": 2197147, "url": "http://patchwork.ozlabs.org/api/patches/2197147/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260217080601.3808847-8-den@valinux.co.jp/", "project": { "id": 28, "url": "http://patchwork.ozlabs.org/api/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, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260217080601.3808847-8-den@valinux.co.jp>", "list_archive_url": null, "date": "2026-02-17T08:05:59", "name": "[v8,7/9] PCI: endpoint: pci-epf-vntb: Reuse pre-exposed doorbells and IRQ flags", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "c1eea8b36633427f4af336e8e2b7310e689ac444", "submitter": { "id": 91573, "url": "http://patchwork.ozlabs.org/api/people/91573/?format=api", "name": "Koichiro Den", "email": "den@valinux.co.jp" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260217080601.3808847-8-den@valinux.co.jp/mbox/", "series": [ { "id": 492390, "url": "http://patchwork.ozlabs.org/api/series/492390/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/list/?series=492390", "date": "2026-02-17T08:05:52", "name": "PCI: endpoint: pci-ep-msi: Add embedded doorbell fallback", "version": 8, "mbox": "http://patchwork.ozlabs.org/series/492390/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2197147/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2197147/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linux-pci+bounces-47432-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=mUWC7PrL;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.105.105.114; helo=tor.lore.kernel.org;\n envelope-from=linux-pci+bounces-47432-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=\"mUWC7PrL\"", "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.229.81", "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 [172.105.105.114])\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 4fFXLr54Kwz1xpl\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 17 Feb 2026 19:07:48 +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 596713040002\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 17 Feb 2026 08:06:42 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 6F0CE2EBB8F;\n\tTue, 17 Feb 2026 08:06:21 +0000 (UTC)", "from TY3P286CU002.outbound.protection.outlook.com\n (mail-japaneastazon11020081.outbound.protection.outlook.com [52.101.229.81])\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 C72B02E88BB;\n\tTue, 17 Feb 2026 08:06:19 +0000 (UTC)", "from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10)\n by OS7P286MB7132.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:42f::6) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Tue, 17 Feb\n 2026 08:06:13 +0000", "from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM\n ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM\n ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9611.013; Tue, 17 Feb 2026\n 08:06:13 +0000" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1771315581; cv=fail;\n b=l5Vs58tP9rmnWTo+kOrtELJ6KAVEvZWNulBcrh5rwxsI3E3VEs/FrWurWHiq0730+JM7VJlP9cv50r8lbi1PGCICyeBcXX+llzeK8z+3p/EZuGmruvhsl6KjFN57Ktdh9J0fQydwl6Simr5Apap6oPb9Nk5FSQza/f+ix50Vulc=", "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=sUyfsCoaNlQI987xZ0tSERL6riEsvC/+/w4WRLrXNW8hPQd6c+63L6imOT41DaZ/VWzS3U6w6o+SjXeTiNczuzohMSu1hi2LSJmL4E+8o/3vxtwMxaJy1Wfzq486BdOLDDTVmgHejhUU4thddC15PGHYN+tmtvjvMz2zclk3wgYzcIN9xOCxJLiO8Dnqp08DNls+NiyIV3R+EsINBOmKTWO7heph643ArVP/pGYtkGGHuvkzqBpBslIRquPA1WrM0P1iKPW04xfgV24QVzoxvF7BUqO5gdYPteaIIKdMNrjRhcrTnTLcoEbIajVcGgxffp6msFj16hsUdU+jhgze0Q==" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1771315581; c=relaxed/simple;\n\tbh=b6mP3l7AVlXAmFdDK07Enu74UGPbS8mgjK2hkcZc2OM=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=cHPAyYZSr/wC1FwEZ76fRYXM+w5EIAoNqSRLwhFCSKUDDLJZAxuuTpe0LztnlN682n6LgkW9Aa6fOvvlnsW0p8Q91KziAHPdtAYZhKUDM/jLXe1x9HE8aWx/Q4GtfCKMX/CsiKqZl6tq5yHIx5uWAuto/qqnEAYq8wMMPWWtfTU=", "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=u1BAPTlNatUoHlaOrVSIaSs94OahqbT2+tOPMe3ZTF0=;\n b=kUYmkf7Eqy5RBC+cUE+bNKkapeqsMD4ytnVABQ/wBR4Xljl33jSbrkwSw/qLkqCACq/6dLPp2Da7hkb5Xj1q8XxtEv3tiIn6qErlpLOoO2alC7hwANufGNr+9Bc6nFx4YR0/Oc5KKuflUwfT3N8FsMoc0QI/uhduK2AE8U/4Gb4vgWTrOi8uyIAe/bnHpmiC5d6f7ii8djeWDXP1aoWc9DnPrvgRbRNmaVDc3JAOtwkbMitX//pLX+unBeiGfG40oBcRV+a1n3NOqJCrFj9+brANlzS1ybFJltvH7eYuqsPqnVSMPMcgbfR2tmDj+nDcVO0sCk9u0Vd1bTXQ0PUfEw==" ], "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=mUWC7PrL; arc=fail smtp.client-ip=52.101.229.81", "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=u1BAPTlNatUoHlaOrVSIaSs94OahqbT2+tOPMe3ZTF0=;\n b=mUWC7PrL/x74pbSSd7UgmTsT2H3kCIhGV0iP8dxLxlvZ9HWNYcqHkOoOI5RZslilxqnoXB8TMoyWDdOsPnj9SAcQ0SrkcLugvAJ/DiykWJNBRAmq/s7JnCwGAihuIQzZOEsNPOdaDZaWzBfkJnQDDhPrfosZDIKRDZpgelYT9rI=", "From": "Koichiro Den <den@valinux.co.jp>", "To": "jingoohan1@gmail.com,\n\tmani@kernel.org,\n\tlpieralisi@kernel.org,\n\tkwilczynski@kernel.org,\n\trobh@kernel.org,\n\tbhelgaas@google.com,\n\theiko@sntech.de,\n\tkishon@kernel.org,\n\tjdmason@kudzu.us,\n\tdave.jiang@intel.com,\n\tallenbh@gmail.com,\n\tcassel@kernel.org,\n\tshawn.lin@rock-chips.com,\n\tFrank.Li@nxp.com", "Cc": "linux-pci@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org,\n\tlinux-arm-kernel@lists.infradead.org,\n\tlinux-rockchip@lists.infradead.org,\n\tntb@lists.linux.dev", "Subject": "[PATCH v8 7/9] PCI: endpoint: pci-epf-vntb: Reuse pre-exposed\n doorbells and IRQ flags", "Date": "Tue, 17 Feb 2026 17:05:59 +0900", "Message-ID": "<20260217080601.3808847-8-den@valinux.co.jp>", "X-Mailer": "git-send-email 2.51.0", "In-Reply-To": "<20260217080601.3808847-1-den@valinux.co.jp>", "References": "<20260217080601.3808847-1-den@valinux.co.jp>", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain", "X-ClientProxiedBy": "TYCP286CA0115.JPNP286.PROD.OUTLOOK.COM\n (2603:1096:400:29c::19) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM\n (2603:1096:405:38f::10)", "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": "TY7P286MB7722:EE_|OS7P286MB7132:EE_", "X-MS-Office365-Filtering-Correlation-Id": "f3255220-74dc-4813-8861-08de6dfb6b19", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|366016|376014|1800799024|7416014|10070799003|921020;", "X-Microsoft-Antispam-Message-Info": "\n YWccVYsWiWr1aVcAM3+2oBhJOdaDRNBEerDFrgzZY8G/MPsZ23G9NU34g5Nu6/7AExACjoL2HzOSVYGuy6GK0RddBOPggbTnD+1luXoGr75RqmoSuHwN9X+26iP7vFKL95F3agkzdSd6eHhx7EqZiWjDZQ6AT+9hPk0FUdY9MiVc4m+rAL1zknq6tvgTEMEQDmfbE6oVtYJFlVf/NXMPU3cBqaXNSeKi7Xr/vTSRDSQkRqdi8sK7o73CYDko9hTPPhi9cy0Y4n+x3inZJO7kxgm0p7F35T5xgJE3wkmGNnYY36G8epwPnYCCRLQn7mPyOWSZcW22shqoO+izRWZkt3tDUNRfTp6d6PizWqZoQsPCC53wJBOEok+9+QQK+6WB/VoMioZqJl2lw8tU29N9aW1Qi8ZS1yoEEfitWsXRT4CSyAgm2UWk/kHUVo8cH7NLY9OIHgFMcyuZZFJrj1nLLhFsEYaMptd8IMi+cM/qynRGkPmtwNviCgNbdQdbGRZoealJqA5jJD1CW7u3EKSnnsmvn6DX9/A2I9zPdjv2wjRBbzgBKw0WpZvLExv1jHS+GlWzUvT+55tgI0VJnhwhugS+/lfotT7rQQjK4eQJpJ7t+Nj56LGdPCEPgi2jm3gJ4Jsp70k2ON8TEAk9xzxIZ1hPd3hoTJP+/DqSzzbC4zJ43KlCkUonWxK6TvpYasXRAC8LG4BiLm5hUM8suUW5PosV0apgYlrBz2SpaFOVL2Zh380CZb8wfEvG8wKf0yyHUKfbR60J44Wzrd0qdyLCVm4kuoav/F6OnPPjXXX4Lp8UyCUHexAF5gPWbxhCAjJoYNg4COLxCkmIq5v5uXyV0kts3722hcE9xslw371LtvExd8vTncXtSJ8u4KdqoeP6pcZZVPB1mdo25cDak979tsgxvbBr9KzS2mEj7GWEYBK3tvGKzG93beHESYgA2aSF18Cj6eaDgfd2xLxuGf6+D7A7gwJi+Ygw3UXzklktge4G6bfymd9SXthtQrXVq2xHzA0CpXFd5EOmhwz+RFJHMxxEdu5vMG7+yXlYcKlLbDqhCEigGkqQApvjHHKYgFsQKSxNvCjttJBXcZEzeoU90h8HPyWbTiy2ct+OQzZlC9XyxkDZD5Vle/Cff//VusMNBbg+wWa5q9I4nCg/vNG5PkM3QkzUaj6LwMFDpH2a3KkMesF3ZSqfU3Brvgf6RqjzR1DAVxC8niNOvbXWzzHXm+hf8MCP/S/Tuxf7cUPdmH4XKstC3p1GrjQBJb86e8NpqcH18BWPbShCnICy2vRYbAdLBaaEb+9lOwN28QOMY9HRIqh8lGDYFU/PKeJTyJOdtwzfk9/6mMHWi8vfhv249cAjL/Ny9HZzLkDukBKnVc0StU+3bj3M4kbpFqYKBjKfDngkXfgBvnhAomW93hq3pWgLgN0smlOe6b+YSPYYDBRdfQoC8H6PLynLlNs9zEnIWEfhHIflAc/6ij8J1ESlFlPHokHgU3RT0BgL48tOQZ2vbFX7QaGclMj5AynkQoH0XbXna3dqd1eFi31fqV36EllWEZEcdKmpiL2NuZLLML+R3BNeed+LpjR8d2yQG2qKZ0UHaY21GgKnV4xDBFBH/A==", "X-Forefront-Antispam-Report": "\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(7416014)(10070799003)(921020);DIR:OUT;SFP:1102;", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "\n UkLpg8/9FLnSgvyTFsPFwea71O7peIPmH4YaEElMvcilLN8SghrciNiTVWstkkISZkYelZ2tig08gTEb3gTr6/fEa47ZmW7RXeUlF10b5cxnCInYAw1LRMM5mH35WuLF13S47qldg2Fx0bYZKNttzhE6GtlmsK78NT8K+2pu18epdyEidyB58HdYacNEWR30arxgWcaCzStKb+cf15c5Da3MW7pxcXSvR/MSDfQwTVfE0DEXR1pIhGZX9oWdtIouYSIkAnYov+xzxHLYFpgK6G510nRVtT/5z28VHeyZq5XsWqqYjEtBjTSsB6bs5vV5GMsud0Hdr8IWMog1Hoc7m012EoJgsJY3x05+l/Psb5NbmQl6H4rWdFyXuBZDrnNMQF6j6U4NB4tDsoGU/uUgnhYseoMJzf/22FWL+iAoFmolbdySqeSVXY3hYvVca/WcCOmMq4IbwljEkMaIPld09j7aoVgf42ox+8N6xPgT7tH9BpibaUOWbmic1Q6xo+f7ZfzgWQtyqDkbKE5w/v/PlCQB4klQj32KqgWuDECed6iK6wqznLRNc+hut8Z7IXWakfQ/zd1Hh1rzOjnEmAfeh1dqkAzIHNfjJmfW0VA7F1VeGB9HoGKhMmwSiV0eIijiPQhY3EXypFyC8KuFHDG1go0znjc+ux0xQEaVG+RjnhF65SGfWukntPoUMdjW4Cbp8s9bTOlQQ6DuSmAXBXmQOXb9H4Y8gb6VmZf3Htjzx7jopbQwWC+bfN5CBGHH4qXtu+WOEoDn6l1bjTdSSZ2Eg8Iz0SdTAD/TxnpGKL2FtTgW99QXJqhIxXDLOPBzKEro8bWlsYpoAzNZ7gG4FgUrvheupol8Yse1Io5RxfK8VKvMHYbgCoU5Zph6iEtCxjzzFk+LfN2Pl2kc4ObZ9nYd9C8jhd6ghRUGuD0/nA7SwJYrDY4QdIvoxzl/NPRNEMNuvJm7mB7LAJZxlTJvtAfJWyf1ce7VeZQNKYrvULOCsQQCWsyy9SC8gauMafN8A3Ok/L5kKEZn3lZ6sBv9FERgiejgYo0yjc/dWI0RKcsNstwntQpMs031C8ofFibq/zqLLTCxRKWlhQ8g0Igtfutav8irV5OGT4GCWFz0CGEfB6SXb4SG2GXiPdOxCcmqVzC4KzJiFB/iY2VBRb5awjm5RzfNNhMl7bSmoYh8TZLS7Mak6Ij6roc7SLQV68alLfARQMC/sEAeuwjrhC9twwNRQQRfLthpMJxBELnfpCGt9jKLrSs9Oz2Ziem9WvSYH/fSYxMqOZU0JgDI7jE0soFpKgaF7b8p7QTRQj+qWo3R5hcsPf8Th/kwFO41BluW0dAMCc7ZdSdVnipXDwBEukyY2bxh1LYUKlAeGwqvu0VZ7hvN2aEt2U0lNW3jA2W1FBbZEUxGhZH6wdLef9abhlnbsFIszvm1tKWjAwQ/Mg3xJIKWS9dNHH8ngywHG+GRqSpSN2pGA6vEKmHUhGqxwE5yznIYd+ZyqCePvqLeDm0IDh5TLMK7xbZARPmIeKoOS4GPfb+CdnMiGYazNeAkSfkT6tnfUVwXG9SLV+fBV49NnmRcnQ3s6+sjdGMjQ7tDFkjf44wV2/enNtM/ADuNDrOB8pwRRPZN0eNJxw/HZ1M/+uTcyA82/ABoNOpsqlC51gO2yBa4q9Q+Fkt404aLGQe3SfdnMfGcx65dHHQe1kaiwzBGPHJpvJdlz35X6ZoiIW5y7N9+pVNOkS2oqvjMaXlEgsZyN8GxNQdIL3DsgFkJHlEONw6DAbhvT8Ch12nXuUph", "X-OriginatorOrg": "valinux.co.jp", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n f3255220-74dc-4813-8861-08de6dfb6b19", "X-MS-Exchange-CrossTenant-AuthSource": "TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM", "X-MS-Exchange-CrossTenant-AuthAs": "Internal", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "17 Feb 2026 08:06:13.5000\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 OFgHwB6nHWceRY+rvxn4SSnLFyHSvUO1Le2Zy7LPO4K08+NFF5nqnxLTe8vjK7nm5ZpXts7qioja/5lTC3eHpg==", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "OS7P286MB7132" }, "content": "Support doorbell backends where the doorbell target is already exposed\nvia a platform-owned fixed BAR mapping and/or where the doorbell IRQ\nmust be requested with specific flags.\n\nWhen pci_epf_alloc_doorbell() provides db_msg[].bar/offset, reuse the\npre-exposed BAR window and skip programming a new inbound mapping. Also\nhonor db_msg[].irq_flags when requesting the doorbell IRQ.\n\nMultiple doorbells may share the same Linux IRQ. Avoid duplicate\nrequest_irq() calls by requesting each unique virq once.\n\nThis makes pci-epf-vntb work with platform-defined or embedded doorbell\nbackends without exposing backend-specific details to the consumer\nlayer.\n\nSigned-off-by: Koichiro Den <den@valinux.co.jp>\n---\nChanges since v7:\n - Deduplicate request_irq()/free_irq() calls based on virq (shared\n IRQ) rather than doorbell type.\n\n drivers/pci/endpoint/functions/pci-epf-vntb.c | 61 ++++++++++++++++++-\n 1 file changed, 58 insertions(+), 3 deletions(-)", "diff": "diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c b/drivers/pci/endpoint/functions/pci-epf-vntb.c\nindex 52cf442ca1d9..b1e8414c4e43 100644\n--- a/drivers/pci/endpoint/functions/pci-epf-vntb.c\n+++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c\n@@ -134,6 +134,11 @@ struct epf_ntb {\n \tu16 vntb_vid;\n \n \tbool linkup;\n+\n+\t/*\n+\t * True when doorbells are interrupt-driven (MSI or embedded), false\n+\t * when polled.\n+\t */\n \tbool msi_doorbell;\n \tu32 spad_size;\n \n@@ -517,6 +522,17 @@ static int epf_ntb_configure_interrupt(struct epf_ntb *ntb)\n \treturn 0;\n }\n \n+static bool epf_ntb_db_irq_is_first(const struct pci_epf *epf, unsigned int idx)\n+{\n+\tunsigned int i;\n+\n+\tfor (i = 0; i < idx; i++)\n+\t\tif (epf->db_msg[i].virq == epf->db_msg[idx].virq)\n+\t\t\treturn false;\n+\n+\treturn true;\n+}\n+\n static int epf_ntb_db_bar_init_msi_doorbell(struct epf_ntb *ntb,\n \t\t\t\t\t struct pci_epf_bar *db_bar,\n \t\t\t\t\t const struct pci_epc_features *epc_features,\n@@ -533,9 +549,24 @@ static int epf_ntb_db_bar_init_msi_doorbell(struct epf_ntb *ntb,\n \tif (ret)\n \t\treturn ret;\n \n+\t/*\n+\t * The doorbell target may already be exposed by a platform-owned fixed\n+\t * BAR. In that case, we must reuse it and the requested db_bar must\n+\t * match.\n+\t */\n+\tif (epf->db_msg[0].bar != NO_BAR && epf->db_msg[0].bar != barno) {\n+\t\tret = -EINVAL;\n+\t\tgoto err_free_doorbell;\n+\t}\n+\n \tfor (req = 0; req < ntb->db_count; req++) {\n+\t\t/* Avoid requesting duplicate handlers */\n+\t\tif (!epf_ntb_db_irq_is_first(epf, req))\n+\t\t\tcontinue;\n+\n \t\tret = request_irq(epf->db_msg[req].virq, epf_ntb_doorbell_handler,\n-\t\t\t\t 0, \"pci_epf_vntb_db\", ntb);\n+\t\t\t\t epf->db_msg[req].irq_flags, \"pci_epf_vntb_db\",\n+\t\t\t\t ntb);\n \n \t\tif (ret) {\n \t\t\tdev_err(&epf->dev,\n@@ -545,6 +576,22 @@ static int epf_ntb_db_bar_init_msi_doorbell(struct epf_ntb *ntb,\n \t\t}\n \t}\n \n+\tif (epf->db_msg[0].bar != NO_BAR) {\n+\t\tfor (i = 0; i < ntb->db_count; i++) {\n+\t\t\tmsg = &epf->db_msg[i].msg;\n+\n+\t\t\tif (epf->db_msg[i].bar != barno) {\n+\t\t\t\tret = -EINVAL;\n+\t\t\t\tgoto err_free_irq;\n+\t\t\t}\n+\n+\t\t\tntb->reg->db_data[i] = msg->data;\n+\t\t\tntb->reg->db_offset[i] = epf->db_msg[i].offset;\n+\t\t}\n+\t\tgoto out;\n+\t}\n+\n+\t/* Program inbound mapping for the doorbell */\n \tmsg = &epf->db_msg[0].msg;\n \n \thigh = 0;\n@@ -591,6 +638,7 @@ static int epf_ntb_db_bar_init_msi_doorbell(struct epf_ntb *ntb,\n \t\tntb->reg->db_offset[i] = offset;\n \t}\n \n+out:\n \tntb->reg->db_entry_size = 0;\n \n \tntb->msi_doorbell = true;\n@@ -598,9 +646,13 @@ static int epf_ntb_db_bar_init_msi_doorbell(struct epf_ntb *ntb,\n \treturn 0;\n \n err_free_irq:\n-\tfor (req--; req >= 0; req--)\n+\tfor (req--; req >= 0; req--) {\n+\t\tif (!epf_ntb_db_irq_is_first(epf, req))\n+\t\t\tcontinue;\n \t\tfree_irq(epf->db_msg[req].virq, ntb);\n+\t}\n \n+err_free_doorbell:\n \tpci_epf_free_doorbell(ntb->epf);\n \treturn ret;\n }\n@@ -666,8 +718,11 @@ static void epf_ntb_db_bar_clear(struct epf_ntb *ntb)\n \tif (ntb->msi_doorbell) {\n \t\tint i;\n \n-\t\tfor (i = 0; i < ntb->db_count; i++)\n+\t\tfor (i = 0; i < ntb->db_count; i++) {\n+\t\t\tif (!epf_ntb_db_irq_is_first(ntb->epf, i))\n+\t\t\t\tcontinue;\n \t\t\tfree_irq(ntb->epf->db_msg[i].virq, ntb);\n+\t\t}\n \t}\n \n \tif (ntb->epf->db_msg)\n", "prefixes": [ "v8", "7/9" ] }