Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2216678/?format=api
{ "id": 2216678, "url": "http://patchwork.ozlabs.org/api/patches/2216678/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260327035422.4020455-6-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": "<20260327035422.4020455-6-den@valinux.co.jp>", "list_archive_url": null, "date": "2026-03-27T03:54:20", "name": "[v12,5/7] PCI: endpoint: pci-epf-vntb: Reuse pre-exposed doorbells and IRQ flags", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "114adb8f8123e87e8cf6f58349ee7045f4ecaaa9", "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/20260327035422.4020455-6-den@valinux.co.jp/mbox/", "series": [ { "id": 497685, "url": "http://patchwork.ozlabs.org/api/series/497685/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/list/?series=497685", "date": "2026-03-27T03:54:17", "name": "PCI: endpoint: pci-ep-msi: Add embedded doorbell fallback", "version": 12, "mbox": "http://patchwork.ozlabs.org/series/497685/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2216678/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2216678/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linux-pci+bounces-51251-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=ZK6KhayX;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-pci+bounces-51251-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=\"ZK6KhayX\"", "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.229.114", "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 sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::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 4fhn0y2Xbsz1yFp\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 27 Mar 2026 14:57:54 +1100 (AEDT)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 84A0330EDF92\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 27 Mar 2026 03:54:44 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 91AC637649C;\n\tFri, 27 Mar 2026 03:54:41 +0000 (UTC)", "from TY3P286CU002.outbound.protection.outlook.com\n (mail-japaneastazon11020114.outbound.protection.outlook.com [52.101.229.114])\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 AC0C4374170;\n\tFri, 27 Mar 2026 03:54:38 +0000 (UTC)", "from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10)\n by TY7P286MB7090.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:323::16) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Fri, 27 Mar\n 2026 03:54:30 +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.9745.019; Fri, 27 Mar 2026\n 03:54:30 +0000" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1774583681; cv=fail;\n b=CrOqQeAFWz5cioOaiuEwPx/k4Wd2DHaXtVo/gMN9rQy8CdyyhAIsQTZ8beqO41CPOzvObmojmleCvCxhKWH3WF4CtNBCuIzlJYTRVdeFRA7YqvU8PADUDgPFEJhkk1R4TYdUvEqC2XIDe30y4B/ez41GGZGsMzulW4OrhyG1Jis=", "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=uLy6OVYBR2193vzql7+9gLUWGS7jMLSWGqyEpxrS3FzxgPMDi+mg91RrKZ24dUobLsR40YoQwFeUO4ZYtrVi1A+l2nr8WkrI//5Cz7+kH8ACik3m2uCYrdpvajx5xrv9mRUtpHWieMwNP7JK5btZC5nYBlP916KBy1Elw7NMFIJjP3ldwCYHC9DwwkXxlRXTiWdpSKlReYx83lY+SxZ/F0LGnExuziyGFgdSl3/wtkjcuvPtZNqYwvWL7Lz0NFz3R2vpuzGABBAdeTC2rNDpOQf4kcr66QcqL3P99Cuyh4QyVwMyO1w4wnntY53V+uTbfVFGLivf6zaU0pPIJ/A44Q==" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1774583681; c=relaxed/simple;\n\tbh=sgRjIYZasZJZC6aHGGTqAQ1lBQJuj5jFMHNuey/EsmU=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=QYoeDRhYMJ4bchEAUa6L0mFco8LTU6MahfiG/fwpNG/EEWx67tI9WLejVJhejTa5AH+ANBye2iqdD6sAX5qQkdlJh0pijFZD61bpcKsdTI0iskmvuGjpdEPRP7BFEdXNfVglTsmUmu/n9ezt2RS2g17QwZbcqq9zxgtfnDWR6dg=", "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=b35G/jLYtQSzKulf5UWuDqd43jYQoJdbINzQbTRfmH4=;\n b=L/s/865EWkBGPNyKR1B/1aQG8uvqLF1XsIrROImp6evlTOr7pMoOvCTl+TuJ012JR1KViSqYVelsez/0cOyM8mxq7ZuTtXRDEFz9HIKM4L5/OffLuGYsdJJsED7nzu9lplmQhVdxq7cnnlkk7eG+XN+GWGMNvIzw25OI9BvYVfRdf2GyNwHtAn+3ZV7dgZu2CPKH/u7s24oojMrBHrPJRPJaZOheCs6BqjeOZfTIiq5vX0iDBfg00X+21d62ryG3Etfs7xfr6gx+Y9RgLWD3tRHPE4T6bgfekEHqU0RQievZSGajJWMA2zsz5G8qksPZePkzQyYetXe3Ox47hqCrAw==" ], "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=ZK6KhayX; arc=fail smtp.client-ip=52.101.229.114", "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=b35G/jLYtQSzKulf5UWuDqd43jYQoJdbINzQbTRfmH4=;\n b=ZK6KhayXZ69GoXwK9a/7e/OWQRscM1ttJXCUjcI86TPc/d1ufSFEbX9w3LERGNwGdo9DEBr7jIEIHzZX15hBBO3rkyEaPMBIShquG9/OZ2aMyZO5ZuGdy3ZwRj/wHXcRGjIUS/RF6lED+PSyicYw56HjGJiuEE+LgmpGufacTfY=", "From": "Koichiro Den <den@valinux.co.jp>", "To": "Jingoo Han <jingoohan1@gmail.com>,\n Manivannan Sadhasivam <mani@kernel.org>,\n Lorenzo Pieralisi <lpieralisi@kernel.org>, =?utf-8?q?Krzysztof_Wilczy=C5=84?=\n\t=?utf-8?q?ski?= <kwilczynski@kernel.org>, Rob Herring <robh@kernel.org>,\n Bjorn Helgaas <bhelgaas@google.com>,\n Kishon Vijay Abraham I <kishon@kernel.org>, Jon Mason <jdmason@kudzu.us>,\n Dave Jiang <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>,\n Niklas Cassel <cassel@kernel.org>, Frank Li <Frank.Li@nxp.com>,\n Bhanu Seshu Kumar Valluri <bhanuseshukumar@gmail.com>,\n Marco Crivellari <marco.crivellari@suse.com>,\n Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>,\n Manikanta Maddireddy <mmaddireddy@nvidia.com>", "Cc": "linux-pci@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org,\n\tntb@lists.linux.dev", "Subject": "[PATCH v12 5/7] PCI: endpoint: pci-epf-vntb: Reuse pre-exposed\n doorbells and IRQ flags", "Date": "Fri, 27 Mar 2026 12:54:20 +0900", "Message-ID": "<20260327035422.4020455-6-den@valinux.co.jp>", "X-Mailer": "git-send-email 2.51.0", "In-Reply-To": "<20260327035422.4020455-1-den@valinux.co.jp>", "References": "<20260327035422.4020455-1-den@valinux.co.jp>", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain", "X-ClientProxiedBy": "TY4P301CA0004.JPNP301.PROD.OUTLOOK.COM\n (2603:1096:405:26f::13) 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_|TY7P286MB7090:EE_", "X-MS-Office365-Filtering-Correlation-Id": "dacf073e-86f4-45ee-9c0c-08de8bb48bfa", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|366016|1800799024|10070799003|376014|7416014|921020|18002099003|22082099003|56012099003;", "X-Microsoft-Antispam-Message-Info": "\n\t7PskOe0MMRy+I0zA1uDcwBbhg3eU0IEghUsUnztW+w+k3Y0Dx3g0OAtd2BDCf66Pp6g7stbQ1uOMbg+KzzT35LZz/fBJtHkaSoTJcrQTdPHXBxhXVYUhPOahk0BdmDEVW491pZa+aOvYJjWe5L5loGQtseDKPJl13aSvmizLTyp9W5SUB6eFebFaYyZcYTMq0n7MD5DWNv+VOCUeNI7c+DVmC+RE987jKs40/WkDQhMyYDI86YvenRpeziW9y/8IUxFFy851AYMUlafXdScnCGlznEylSr4YRYIaM9AAACIPLM/j3RPrm74o5RclryffMs+cZimyWBftxSj0w3f3fCo20EU0zcX8CzxmlzYhqOUcXvary1BUPVimf0eMaCfddJdBw5fyGsdVourXj9GmniKBbkcLu/JNJrmuPBzyqUnpr7VH0/4ZtKcdfdcmi5LYukqBQgH995wZHsmurTzP7uiVBGwDqRQIK3EbhS6Kb0X7DiWtlL/uyedhn46U1Y3XAU2mNBTshKEhWOm/hQ3i+mOkl4o4mmzWq28quKTg6GozM/HExeeFZAAnXpCF5v86XgT3VT9g4UP47iSbIMCd6sClCjJ2omPuK6CajCtgdKHoWBk/0lkNF0/o4qNGKf3F4OAS6T+C8GOQeOSmTxWxQ3rayiDRWXrPY89jab5/3HgAyEtOSxcwXSnW/hsKC5r8Ib1SRfHk7APfBqQ//7ZNijR5lrd7dC9iZygqO555U2m+8Tud+XFGZzPklCBmZ1KnM9WF539ta5tF6yosi0BbZA==", "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)(1800799024)(10070799003)(376014)(7416014)(921020)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102;", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "\n alJH1FOrzhVxCCUE6x12GtSE94+bTAFLD+HosqegBgyPJrHdOjvquyj5sVkmMiQuZ/0MfAvCLRjl/6ye35DDwFGuypZWKVNxM3utTdatgPy54WFC3CjaL9WHFS2IE9vXcHMsAAQJKPZWlq0sYbkQnoeIIn7nXwK7nkvnH+cMmRIMz2cGOn6yf1rUBwCcoxcfPuFXVOqivwNkq3Lw7s/GWs1mSuBZRfOcFUeNd3UJR1Bmi7X7CC4uldFr1CO6f72LR9thMqeUvXijiZArJAIuOZVOITr/8sDAKvND7N5T0qSg3rhj3JSCl86Sd7Pr4v/it7WeZBI7Wd5r6ZgN89hiDdgafRwxup7teev9JVkeKT2DS4kE/Ub6unpEHWy3VTFCmn+O0GSm7WlbV4bJA7OSKk1QMKAe65eF1cpgryi2oydx3nETyLGBPexLIQRw5dM5r2UXu4KrNPGQ+H1rrOqucuQVZqLGHTsAYRbtSS6gyTkFKmtnndJRO8/qSvq0sgKxVMLs5kKoGuxyktt0z5lD4gH0+hgrR9rzDF8BeW6q1mRqLKVW3KcyVaRlocnFbaytkIe9mf5wDrliJKlIpUKegMVhZaHdHrsL3zjtJKE8bLWr/59ol14IVjDRda7uaiwA7ZWgX3qPYmlWurARvDeSRg8jWsyvUoGQ0ubjDM/1iviDzasi1SV1ihMNS5S6YdNmRU2YvwlscasEcc84ZCKOPi8akjSBXwC7HrMDpS2Bfd/F5yefedhMi0RsHneagjaIUfzIfPggROq5k/fhKAaCuMrfgfLpwQ+ci9NBhGUzCo2z5KDxewEOTEmYGoVSjlumfIqEzZeCQde1+VTaiBXgwz1ANuzsGkYzA6sbLxmM/ppKG1EKpLsm69k5hjk6H8FPEOCOMxkkuWWL2ql0RXRYcIxcf+8LVU1UBOKlrOQUp0g6oOY5ALy4rpBY8c5FuVFn3n/AeZUCSaeadxhm6FDzpZ7PnpJGRt/J1EBPSb7LTci9FF4sJ969nkKMaKvrktUTIe8mLIfMH429rzbFlt/v55hfSA3qBG7/9eCiNQPv9tA20MYwuQlYwgUTgpridXvtH0XZ1z/QbFqaYCB1NTEOdpE+TiAffR+M/Z3dJy0z3AevqgjFum6sxyoyPkSo5/aZqPc0QvZbAiPAhOkivp49aqMkpCo4NseKJXAR5S75wPj+VOCTl9GvC9IQ+HslhqmCZfvstVqlsgqNmTj3AuO8PPVuyvjuOBsqB9BVSw14JiEUvuhPFOnlMNCKB59VFkIm8ONT+eIIr5wTjGEvc9daqZw0u9zUqoU2flZhsYw1g1jK82brwo4DYMUeDSVhKFexQJTCEj1PFBsO6hqw5BvX8B2kVtDDnN5yvjcAMiWxO9dErxHtA60auMXum0PUoFCjE1Yvou+XbL96x9qeZuK4WauU6Ucw+w63gXzQYNr6Ybjkes2jlpxBiOCT5Ns0zsjDDMiI1ZKCESo6nu92/sqLpN3rdXnXolNo0fv1rkIq1NIWj3jZ96OKO7dblVM/Ts/n20hNZWHm4C/Don5ZDQM+WPK3V6RhoLgQ7vHICctWCpIj65fPJXuMJ3ZPRppr2HQTffzbLr3o5FUrsOjscnhiIJTraELXqrIeyTjza4QI3GGMGHospLyYO8F927IlF+YjTrxQHg3qoax2bkdMGU/n0ptw1z6nxlEQP7VjGPGpm738eQoGC7tHV8yLh0ZZ1By+XCCgg07WGSg3xsNrimr8Wbxi4IIltA6I22zMuTKQ6AQy3qHpLiLocbHKmGl6ULZp", "X-OriginatorOrg": "valinux.co.jp", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n dacf073e-86f4-45ee-9c0c-08de8bb48bfa", "X-MS-Exchange-CrossTenant-AuthSource": "TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM", "X-MS-Exchange-CrossTenant-AuthAs": "Internal", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "27 Mar 2026 03:54:29.2637\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 D2zFZnYrcdsVFIu69jPjbsgmDQ+JkIdmYsOs1hcVl9Z5wH+ry9zCBXxYOMA1KquaSAKrLSOANiUmibWRSgEjwQ==", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "TY7P286MB7090" }, "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\nMake pci-epf-vntb work with platform-defined or embedded doorbell\nbackends without exposing backend-specific details to the consumer\nlayer.\n\nTested-by: Niklas Cassel <cassel@kernel.org>\nReviewed-by: Frank Li <Frank.Li@nxp.com>\nSigned-off-by: Koichiro Den <den@valinux.co.jp>\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 2256c3062b1a..b493a300da4d 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_duplicated(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 true;\n+\n+\treturn false;\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_duplicated(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_duplicated(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_duplicated(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": [ "v12", "5/7" ] }