From nobody Fri Jun 12 12:46:56 2026 Received: from OS0P286CU011.outbound.protection.outlook.com (mail-japanwestazon11020110.outbound.protection.outlook.com [52.101.228.110]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 53451145B11; Wed, 13 May 2026 02:49:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.228.110 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640572; cv=fail; b=eGqaRLiDFgVXD1XqLZWgdttgv9wAX6q40k4ulrlQ12Ti5K7Vl0H5lwLE2dQL6J9Js68yU+fP9GzLSaSsqaJ1z0zxZOe/glFjnTxWsY22gUJ400jzETb/aDWnDOIETupUav83CuyNLkDsmFftZy9u1XOVoxviMZPjHW10BWg9oBg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640572; c=relaxed/simple; bh=4BX2FPbEbt0o936ddZ6cO981k41V3VNCcF6NS//4Zk0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=QuXWnWi0/jbK/wKEPkoWfkE89kxN7OLRz96Q+jUOMGfwFbQwrUpumZkzIYCBSbv4AwUqhgCR8p+iGNDPmXyFTzHckio/aWwCNaf/onDHKXiEPWufl+GS7pQi5SZLihPFFLUUC+ofuW5abq9zv0rqCEhoipFnWQi1lK5fbw4/pA0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=B7+IQypO; arc=fail smtp.client-ip=52.101.228.110 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="B7+IQypO" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DNgbOpnbriUpZZGVFp8HysVH30GGI7+3IrMjhjkhLIQiWspUVuoMl0JaZ3bNAqTRCNLzMVrsGsR/aNS/UwQpWb6MRWIRu+wq5Svo3j3OiFcCDj2sXRnn8LosKNlEAaM1cddtLwqtU6WMT+jmlTbHovJh3JrKrqZFl9HhJxkQvZNs5WPnoU/LzFBNlrFPtYa4wyHJuptYrKy56M0iT9D5SeyTwjtGeWds20BM7Xg73S+1jz5IKpk7FSykrMYewvebGpLxxpxjuw81wSOls3Nepl6jiH0XHaVjapioP4RGOuW7BSxRLjA1gHhNWQ1aqIHrhnDhZT/I4RoCXbTmjMXxXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=Q44avc9ShprrHGoJCCQxD9QknMMDtswYDIO620byNxs=; b=U+T/SRW4fXyqcoknUjpkDIeMO09gs/ggSaodk5ANTD6qTA8hJk6Ik+BLrv4jqJnaXDHCroyZPmB6kz9VkZd9kQtYwvL8RwDNTglSRffx4SUaK092TfmE+SH5U5S1lOf0/Pe4HW0Ucjy5y6eP6GAKxk/61GyQ09NN+cXh8g8KxLzQSY1B5Lqbkqnx0dhH6KLofHlpIrA/XIRk7UzKqA9nNqgZLvXczyiQTA2XqVg/ppcVm6jsoflc/EsBsxrfBZR+PO+zj6Y5LgsRD1+g6y0LGWB6/eG7ZxHrTyCrzu0a+Xx+V/GGcjGC6zzmzlC5Gk1LOqMB2eube2DZUqdNNPB6Jg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Q44avc9ShprrHGoJCCQxD9QknMMDtswYDIO620byNxs=; b=B7+IQypOM0OdcxBHGlPhcUuoJ17r0APdChyjgToh/Zl0ZGcIGHQBGoqPmVy3ITpUQPcOK/BjsHtwZVrZhimjCBLh6hsGsWbBBa260DvsC586XvQyAQyz4bRmaGltdT32FMp7PaKxq7dLDnb6Y/klgzsp6BLdLVM+4eX/QlCTCuk= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYYP286MB5170.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:161::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9913.11; Wed, 13 May 2026 02:49:28 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9846.025; Wed, 13 May 2026 02:49:28 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe , Manivannan Sadhasivam , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Frank Li , Jerome Brunet , Lorenzo Pieralisi , Niklas Cassel Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, ntb@lists.linux.dev Subject: [PATCH v4 01/12] PCI: endpoint: pci-epf-vntb: Document legacy MSI doorbell offset Date: Wed, 13 May 2026 11:49:12 +0900 Message-ID: <20260513024923.451765-2-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260513024923.451765-1-den@valinux.co.jp> References: <20260513024923.451765-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0263.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:455::11) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|TYYP286MB5170:EE_ X-MS-Office365-Filtering-Correlation-Id: dd16f0eb-cc1a-48a8-19de-08deb09a400a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|366016|376014|7416014|921020|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: YOUodUu9hh9Y+o5mAh6JkBRqm2Ubb+3Qk6pPQ+FZyrZKhvtFdmUTInKhrHlZN2iqoA4MLKiHc0ICqXhjkYtN/81e26JKXKW3pDDsY5M+Kn31joqd3TogAm4Oybl5xVxlFVA5rCTcots/c63mRf7/MiYxRfiLo/AHQp5AH8eObgu4EuNgP0IgXa9nxD3atB5S7CjjgVM9mLkoSe6clfUkLxYOLO1j6fenzUkkiJy7Jr+YRvigQKoiHJKAeESWgxHW2W4JPjS+LEMefqcwAB3d/wVJl3WZvlR8Vro5K0mv4LQNE0UIEuRfC0yRHFcKBOPbq0vAymJ/pEkINZe5OrZgbGVwSovuf0rJPqydYhG2GNoXvgZnJP4Q4o+j+a8urB0G50AG2+/T5Kmvcdz8XT/WsDop0i/Ajt4lQvkdXnbXJvKyof+x54vH8CP/kMXYb7zIQKkoOjBFjCMLn6yU9JA4CLDnLziSre57dLAJ2M7giskYCrtl7NfwYy+w9ZqsYHL1kmLIsvX+R9HQ1wJLa1LmekkG3p7fEfdjcKoPKqnFeL7cyeQ4lKcQoM2J18oAXAMYJSiRtiWW+P42BTB37OgyT81SFp8OepO0PwGQVWoBipzrmcnj4wwAMaRppd7YDHLGPwt7iytjC7EePQ1dSRLHeRCO4ZF0GrdgeSt+NP6RzntyyXrhfdu/Cml5MlAVBQATblvG3pWYgN5rUrk02sYuV5XzqtxfIa1AM/iviCSL4Kk= X-Forefront-Antispam-Report: CIP: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)(1800799024)(10070799003)(366016)(376014)(7416014)(921020)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?jFq/JRZl4vcxO/uHaTUwdsUow+bG/tSX/l31M2tYgBUJh7JqQVtcZWLlW2tF?= =?us-ascii?Q?CXRrGVF80DxlZWfNrrl9jHDmlnsIUiNIqg1RfdCz8h02lnSdvDlamYmam4so?= =?us-ascii?Q?EOcOMQf2+eOXDtroJz+3uaIT3x3uEjmBso6yN9N1473nL7kuvtOQDMVx3dDy?= =?us-ascii?Q?sPVrTd2XpLsnRmQt72bZ+TiduMBFRIhjMVYIy7sMANPJudFHUFvJfWS9jryp?= =?us-ascii?Q?ohZU/XGXd9fDp9q8Zmo4IIQgbkjYnDAleM5qdudsRkFGPFNQc1gBL4hTzi/b?= =?us-ascii?Q?RA0townteuqFXB4i2TcZwrYzUDSvUE/HLuLUmRdjudjfonVifSrRUDQSEXM1?= =?us-ascii?Q?5FiVCujx+C+oLwIYwAFGelhZVUDGZQsKxEoRY/XcgJ7+sC2DAkUym7d4RUhZ?= =?us-ascii?Q?lzhoH3GUxIUXwA4LHFkOyp6BqNlzkxmQEgi4e73fQiPu85oEgmfsO55c6JIJ?= =?us-ascii?Q?tdahfwQ7kr8oExsN6820AgWUxeOeM07kEln4hYp1OKH5aXqv4CncdXHi3P0P?= =?us-ascii?Q?xbmGoltra+cV9SA3jzBtiJ00TLBSQfPsrOvlcKS4gBkVLHyVom8bE1oL9/Dm?= =?us-ascii?Q?KPlvBVFUCIL1su0+MX2q8lJQ073TOhFrub8+i64Dya/KhLidHUS3fOv/zELV?= =?us-ascii?Q?3AhnJos5HO6pamlsZFxQp4n0S29kN3NkI3vWwhMrj1kngjoypFMmyyKgX4Xy?= =?us-ascii?Q?19A+9DeDTtwyVeuq2z/54vhbOM4IvgW1GjbAd7zOZBC+2IabcOSguf1LT3Mh?= =?us-ascii?Q?/rmyUBxlHEh2X2kc3J5T/Y+2GR12XKVwDzneGjkBlU0Hg9N+L1I95DXo5aDv?= =?us-ascii?Q?ztinpx4AOXsbBsnj0lV704clIMi6KDih7RChxdbdes7PCdwV8kr9ip4iNnrT?= =?us-ascii?Q?4AnxcDGRe8Lt7d0Ket7M8Xn3xqaOrVxqu1KAP39a+2Ty6HUEY2b6Pv3jOGdA?= =?us-ascii?Q?Ih5z6dVIzbMU95+aA518d30J+CkMLYjRu90OM0zMxCBkvM4MVGUJlN8R+BGz?= =?us-ascii?Q?yR7fJFPJC/K8u+SIF7tH7E6e42m+vmgR93fXGKzYAsYAoexVxn8cOx5MQY2Q?= =?us-ascii?Q?Nfi2L6uWZRlZE0ymYB7ODsFkeop2jmv7g5KWlEFdZuq7JoYsdh4Ui6y2vDhz?= =?us-ascii?Q?YnnoIj3b/GeYVPyAZS41JXwuqNlYg/of5hEB+JMjwuM0Fzdk5HdHVrAsMDQP?= =?us-ascii?Q?s63R0VsBxYrqeoTm2cQJPx2sazRhkdFdEDuVz5T3Z0/7NYOPXd8PWAhn6VpI?= =?us-ascii?Q?ZbtJlv0Kc7ffFCM0pJXFpEoB2bqqNwW2qylWOT8Gm/VRFo9ssuvhenvWQH/0?= =?us-ascii?Q?odHQP1DaknYU++6fia9ngy8cS+G0kUoBBmO8Cr6JsmrdP9EKOGpmqHFl79O3?= =?us-ascii?Q?JmjYb8r9xYuCv4HR9iYmZtQf3gpXwiP724SuILK7CMKNxAYylhSNK8zOi0Ib?= =?us-ascii?Q?ahBg49xTCNDBQfWxGQgRj77X9BUXf1wEN3AN4ZIBXztLat97EajWtBQ1YdOe?= =?us-ascii?Q?QW+Mvrmi7rLPTdX7KSYO8RdygbEaSHTURIj8AWyUKGcEN13ud4UHM28RNfPa?= =?us-ascii?Q?LQ61QHLUs/gwBlaJoyMcw3akNoskme3+W6or0ektZ15ySFUNANwoeKipkIyQ?= =?us-ascii?Q?hzty5zKZF6OId3ETg5Vc7nC+MzMLA/hX0EBn9gLwPpqL/6VZtjZ84Jn/N2Q0?= =?us-ascii?Q?QOOv5oQeJY2/txaovRBJL+SWs1qelSqI5GHZnijomFsrpjbk8vSA3zRsnbHY?= =?us-ascii?Q?X5YtXHadFe9Z4RnxHiDwZ5OxVA/HFz2dB9Gis9X2qM/9m1JwO4wM?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: dd16f0eb-cc1a-48a8-19de-08deb09a400a X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 May 2026 02:49:27.9924 (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: l+39J/PoDmBh5zTpEonMEoQmKOHlkeE2ndPQ+jeVsQdR3rN3XOwGWpFyal2rm4Y/LnwXM3yHzfcDeo+ej0c5Xg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYYP286MB5170 Content-Type: text/plain; charset="utf-8" vntb_epf_peer_db_set() raises an MSI interrupt to notify the RC side of a doorbell event. pci_epc_raise_irq(..., PCI_IRQ_MSI, interrupt_num) takes a 1-based MSI interrupt number. The ntb_hw_epf driver reserves MSI #1 for link events, so doorbells would naturally start at MSI #2 (doorbell bit 0 -> MSI #2). However, pci-epf-vntb has historically applied an extra offset and maps doorbell bit 0 to MSI #3. This matches the legacy behavior of ntb_hw_epf and has been preserved since commit e35f56bb0330 ("PCI: endpoint: Support NTB transfer between RC and EP"). This offset has not surfaced as a functional issue because: - ntb_hw_epf typically allocates enough MSI vectors, so the off-by-one still hits a valid MSI vector, and - ntb_hw_epf does not implement .db_vector_count()/.db_vector_mask(), so client drivers such as ntb_transport effectively ignore the vector number and schedule all QPs. Correcting the MSI number would break interoperability with peers running older kernels. Document the legacy offset to avoid confusion when enabling per-db-vector handling. Reviewed-by: Frank Li Signed-off-by: Koichiro Den --- Changes since v3: - None. drivers/pci/endpoint/functions/pci-epf-vntb.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c b/drivers/pci/en= dpoint/functions/pci-epf-vntb.c index d59870fd3430..668d25abc7f2 100644 --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c @@ -1419,6 +1419,25 @@ static int vntb_epf_peer_db_set(struct ntb_dev *ndev= , u64 db_bits) func_no =3D ntb->epf->func_no; vfunc_no =3D ntb->epf->vfunc_no; =20 + /* + * pci_epc_raise_irq() for MSI expects a 1-based interrupt number. + * ffs() returns a 1-based index (bit 0 -> 1). interrupt_num has already + * been computed as ffs(db_bits) + 1 above. Adding one more +1 when + * calling pci_epc_raise_irq() therefore results in: + * + * doorbell bit 0 -> MSI #3 + * + * Legacy mapping (kept for compatibility): + * + * MSI #1 : link event (reserved) + * MSI #2 : unused (historical offset) + * MSI #3 : doorbell bit 0 (DB#0) + * MSI #4 : doorbell bit 1 (DB#1) + * ... + * + * Do not change this mapping to avoid breaking interoperability with + * older peers. + */ ret =3D pci_epc_raise_irq(ntb->epf->epc, func_no, vfunc_no, PCI_IRQ_MSI, interrupt_num + 1); if (ret) --=20 2.51.0 From nobody Fri Jun 12 12:46:56 2026 Received: from OS0P286CU011.outbound.protection.outlook.com (mail-japanwestazon11020110.outbound.protection.outlook.com [52.101.228.110]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7C847390615; Wed, 13 May 2026 02:49:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.228.110 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640576; cv=fail; b=UU700Zhq7bbvRe5jHHb14GXap1OK9ZfXdyKQoxa9U1J3JDKriDgrZedfL3TBCTOZUHj/809/YKv2vOWK+qCW+v//UnkkWRVZmSBaA68dJBvyQHQAW/4QgzhTSGjE6/+HEtJeZitQOLi5Y9953XwPbI2ZOO5JiQY3VNPIO0aU8Zw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640576; c=relaxed/simple; bh=L3jQN2j07GKVazjjZcyq0CAP10ookS37OayAdU/YDQE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=H+4j++zM5ejjojb46XFS2Uu9Drq3Ts8B3SLYoh9SgN8OPohaNTM6xz+vMaeyF8sUQztt/00E9nPGn5c3duAK7pt163TjJQ2SCYfSjnW8kepqWkr3TEHC1H8qnJhkBU+3kuObSh8ZlkOAngYBcR7/+IaPJeTTr/IP3SJnybPcQZU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=aBo8iWEg; arc=fail smtp.client-ip=52.101.228.110 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="aBo8iWEg" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=R5hwC4WPGmYns/Z+T6iPOO2sSD1brQn2ywi3FGhrHDNoRoqQF7sBNiLRw8F19jEo2HSsSOAw8cVEJ8VNR+fX+LadTCuiQv9OEwsUrCCGv/fHcV459BkqBpgLtMsgSvuzF6dGu4k4DjPi1FiiHyBd06Q7vwmjHZP7OOTCqJSZ0Q9pEBfUYhGRERue732D8OGDnABg/0OjU0fh5knmpZsnNxlP6p8qE3iWGld4i19Yjk27bmqzzGM28XiUWI0u9YVUEanRsFjmUR0xF/h2/JuCvhqBGo+YmNuf40t62wmkHAQlL5cAR5uJ5OZ0uz3Va6RnsS+uh0MTA2yAr/2CHuP5kg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=5wEAfqKp+ipzvLV3mheEvZJjn+hOW+cGgltKLiiAVQY=; b=fYef3Y0mWpITjGRm8LhlYrD69wI066Hx1UXp8FX2k5wZaRlD0Ieuw79uDA5+AsFcpctmewYpTme0nzi88nT+Ib1OBTPKZbKQTZWnApU5yI+8HhoLnKSr1E/31I3P2CDPLNbzAQaXkuKQd6LzfP0udcdj7HDlvO6YOgf++J6iJrgjJvB/QD9W6SbyI1uoC/0x1cynIaFIpveSjFvBQfzF3ami+yw/YT5aAmCRHqAGaGsWwPSayQNc9+EiAW2aD72QL8LVRCEdYNMb+CYTZmcC1UuC0n3dNatfVpbaJlAzLQwssUkQco59brGbvBuFZG1E2cvcd1MWrXCYaKJOuvlo5w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5wEAfqKp+ipzvLV3mheEvZJjn+hOW+cGgltKLiiAVQY=; b=aBo8iWEgzeIlPKKPiphrXlTWIxJbWX+wOGkus4uggkM96dWXf61H97mUcGlwjaSlMTVEePqkKv+Ilg1jPQTXq4h23YLVYTl3CCZAGtmOvz7fEsYsKp5h4v/7CUbEMrNHcf+onHBuxJLAMM7NCsr+bzmQQzDWfcwMbodSB5dhb/k= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYYP286MB5170.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:161::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9913.11; Wed, 13 May 2026 02:49:28 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9846.025; Wed, 13 May 2026 02:49:28 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe , Manivannan Sadhasivam , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Frank Li , Jerome Brunet , Lorenzo Pieralisi , Niklas Cassel Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, ntb@lists.linux.dev Subject: [PATCH v4 02/12] PCI: endpoint: pci-epf-vntb: Defer pci_epc_raise_irq() out of atomic context Date: Wed, 13 May 2026 11:49:13 +0900 Message-ID: <20260513024923.451765-3-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260513024923.451765-1-den@valinux.co.jp> References: <20260513024923.451765-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0229.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c7::8) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|TYYP286MB5170:EE_ X-MS-Office365-Filtering-Correlation-Id: acbd5524-1daa-42ea-23fb-08deb09a4086 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|366016|376014|7416014|921020|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: SgXZMQl5iMA8Zu7pBt15aCoE2K+tc5LdaPxeQmiIq4fHJ55wb2ktNnMGjxdCFMiiLv3IP01UaGNuHyngylK+HMbggzPtF4xMMfQqh2wxj+aot0nuz+dtN7uZQn0LAtKO6lWPuFeFfLvKR0U/OywNlWzP7Cr6jJ8A4Y4r4O15c3Gad9Vi+VShupsInw/zHZ0NY8Am8aRVqQCtcS7u6dVezJj6E9adHysJFStawpVzASpSc3aewtR50O+xfRniLelg/IzFyxTLog14tKx6DBnmMfA6vcq786xEXBsc1y4TOpV9P6YkbAnKjmyzoY3cw/lE7aGg4rq51ZOtmbcccys8LCITjhgz6RAJw4iawJq/C+/Dt5npcQxs3/gM+1vI9qyg7HpzS9bTPj8egNPOJBCIj4yz0sa+oWThBjRQPRtvRBbHJ4mkFWEY16hDTme3u/czzof4XKuRGoLDIZLujlN+Tgaoq5BttGt6RjVrQ131xLD2m788raSrdLJUClzCweJ2PKLcS20nbS6xIpMMycHpNQ7GiJ8TVtW29UdVz1GNCIaGKVL8VCRdpuzWzphQjrueSUMzQ16Hfi55Uolja3WZ9d2H6XyHEws3IcngtSQ9eibB9b8uBOX25ydXCwSReBFjAZp2c7nj9Ku/igfL2W4EHazTv9JnNm3zqdpHYtEqhO7jRue/+t2dXzVkMrq1Gr21i9XJAP9qCb8lThDkxRRqGr+euCEsreLEDS7sEZ4nXCs= X-Forefront-Antispam-Report: CIP: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)(1800799024)(10070799003)(366016)(376014)(7416014)(921020)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?sArsUXbPIxceqm1skmJrEUs8JvTkWYBrAumS2Yk8jrVlBHG+q+dMNbp8A+GU?= =?us-ascii?Q?HCDV3enIANXhMv36zvZZZK6vRhatJsIVK/oTZFHrtz9Fjflhh3a4EZ+ZjS/K?= =?us-ascii?Q?851IL3IItsEhxmTstLiFbn4/7JSjKLB+Jou4Fj/gtOVFt5cwT1anQVDB+bNO?= =?us-ascii?Q?YvVM1E5iT/LjZi0eOCV48WxKeY3D/2yGKfMSN+P2EV3WKytsCpuYRjBKqeWo?= =?us-ascii?Q?JwR/oXhOTbvcjUwzbrMTwvelYAG2hqRDwV82N73xcNjrxQL3b0cJSxWMvhMf?= =?us-ascii?Q?6fzV1VyaZ42Jpu+ZdhnD47/C7vSI10ZkhhgLH+Vdiz2da3S1FhvPcvbxS7aS?= =?us-ascii?Q?m6Ve8BU5Tf8bOgbEDzql5P4lTOYLOy3ouycFfypENzXP36WRJzykLFJIsDxi?= =?us-ascii?Q?uHwDs5uRndUZxtjlql7Tys7nTDn/kyAOtUZqr3RynQhWdBcCilz2muo6G5EX?= =?us-ascii?Q?tcEklQCNrZcyqbsb8vmHzsJ9L3MUilVqsVj0/xDdNi+9YNygYEYTpjy0NoHk?= =?us-ascii?Q?HYQOSc8QeYfw6gnaFszIul2/N6RiDPylcSTs0YFgRqqbgeXrXy2azdXcyTI+?= =?us-ascii?Q?QSBWoxNC7f2SdNjgZgcqD7H/LwvtJypreglCwJ3ifGD01zdtNNr/Gf9aCWNP?= =?us-ascii?Q?QM7d3d38wxoPRodgLzFyClal6Z1umy+LndyCVBwiikPBVMoNqC4sOAdKcAOc?= =?us-ascii?Q?LSo3kg9Fdru8DeBPGnPuxRoUZ6BySz3iB5e2OIt1K/K37KansPaILTKGPK1H?= =?us-ascii?Q?5m+g8J3ZlZXWHMQd7PTqS/l8xboPUNt24mwPl3iAA7qYT9UtsAioJwPme/xy?= =?us-ascii?Q?S2JZGcvS0xn0dddb1gUmHuK9QkY70dQeU+ei1/4CvqJMKy2dWbnzGrK5Ispj?= =?us-ascii?Q?NsKPuReDRLDUoQ6fYc0ZEzftYw7rnm5x3LY+9IOWYNeE4Rr2cPoKhk8Hhebr?= =?us-ascii?Q?bcAlKuACG3URAg00r6LeMltfJ/HnGW92KkfVfgjMUcpGXvOflI4goZEo0V6N?= =?us-ascii?Q?fI/HqJx/5EzpbzZYAv5UbEgXScl0VbozTVqX71ucEw4holVXlRIwYcLY535F?= =?us-ascii?Q?g6CBIlwgZL2/2dw9NgHcKOjbgh+gVvPNwzXWsAGY7NAlq3jZaOF3CD8/TlAa?= =?us-ascii?Q?RxEwQqiLiimNLeGd0v6Y9+DdXJlhH5PSKSQdZZZgtLNm7wLUxGS8AtEgLJwS?= =?us-ascii?Q?vP6IgKaI2/G5cfE9MzYtu6UcmBhVdVbjghuI5SGMPoIUc5hJaJYRMG8GAhGS?= =?us-ascii?Q?ZvNNQpFfoqrAjfYBnA7mprer+abYwTj1FVJD5SrINqwBgcSoUezc/RHoC83Z?= =?us-ascii?Q?xPZwetbfoK1BdETC0DTSStl8WCahk8EKtySFz/XXd50cdKw2snozqsb/AiU0?= =?us-ascii?Q?oZ1YvFqfaol//L6V/JNq8ATWUgFBdUb5NA8hHu22nXnizU6QUU9JmQ5menUF?= =?us-ascii?Q?aunhDYvncJfS/qvrT7caoX42DX+uQzdZrFPlrXh55eH5vf4VNBt6Q1mRRzxw?= =?us-ascii?Q?09ha4vL17A2dKmHaR1vTljcy5yS5kkdjUXhIe5zGoGoLe9oXiNDhplDvs++l?= =?us-ascii?Q?N2syiWCq7VZdnBRc/LRRZ67a95N8W6MwQnJjHYamkgUdsG5LLAbIF6RyOzCf?= =?us-ascii?Q?iGvikDffeqHqoCItIiLDI0rDkI9nnU1GoOqcTpCAM3wLlMneQw+ebyyIChmt?= =?us-ascii?Q?HS46sMgh8fyZwbgms/jJj/Iv0hOkmv7nO8vPXqhGLOYEI6OebBFvabXEMfym?= =?us-ascii?Q?LbR2u6mGq2WmqxXUDqBOOA5nsV8iyn+gUCaFubwxSb/zsYlGXTx3?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: acbd5524-1daa-42ea-23fb-08deb09a4086 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 May 2026 02:49:28.7965 (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: /D7jQlYkHRWOCF1BLRqn/13uTKX3KCBWUspsGIraznSYQDdVCSwtSjfQzVLKZrUanOC1+TZuvruKJeJ/ZDPJTQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYYP286MB5170 Content-Type: text/plain; charset="utf-8" The NTB .peer_db_set() callback may be invoked from atomic context. pci-epf-vntb currently calls pci_epc_raise_irq() directly, but pci_epc_raise_irq() may sleep (it takes epc->lock). Avoid sleeping in atomic context by coalescing doorbell bits into an atomic64 pending mask and raising MSIs from a work item. Limit the amount of work per run to avoid monopolizing the workqueue under a doorbell storm. Clear stale pending bits before enabling the work item and after disabling it during cleanup. Also mask requested doorbells against the currently valid doorbell mask before queueing work, and iterate the pending u64 with __ffs64() so high doorbell bits are handled correctly. Fixes: e35f56bb0330 ("PCI: endpoint: Support NTB transfer between RC and EP= ") Signed-off-by: Koichiro Den Reviewed-by: Frank Li --- Changes since v3: - Clear peer_db_pending before enabling and after disabling the work item. - Mask peer_db_set() requests with db_valid_mask before queueing work. - Replace ffs() iteration with u64-safe __ffs64() iteration. - Not pick Frank's Reviewed-by tag for v3 02/10 due to the added behavior. drivers/pci/endpoint/functions/pci-epf-vntb.c | 112 +++++++++++++----- 1 file changed, 85 insertions(+), 27 deletions(-) diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c b/drivers/pci/en= dpoint/functions/pci-epf-vntb.c index 668d25abc7f2..cc0b356973f3 100644 --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c @@ -37,6 +37,7 @@ */ =20 #include +#include #include #include #include @@ -69,6 +70,9 @@ static struct workqueue_struct *kpcintb_workqueue; #define MAX_DB_COUNT 32 #define MAX_MW 4 =20 +/* Limit per-work execution to avoid monopolizing kworker on doorbell stor= ms. */ +#define VNTB_PEER_DB_WORK_BUDGET 5 + enum epf_ntb_bar { BAR_CONFIG, BAR_DB, @@ -129,6 +133,8 @@ struct epf_ntb { u32 spad_count; u64 mws_size[MAX_MW]; atomic64_t db; + atomic64_t peer_db_pending; + struct work_struct peer_db_work; u32 vbus_number; u16 vntb_pid; u16 vntb_vid; @@ -972,6 +978,9 @@ static int epf_ntb_epc_init(struct epf_ntb *ntb) INIT_DELAYED_WORK(&ntb->cmd_handler, epf_ntb_cmd_handler); queue_work(kpcintb_workqueue, &ntb->cmd_handler.work); =20 + atomic64_set(&ntb->peer_db_pending, 0); + enable_work(&ntb->peer_db_work); + return 0; =20 err_write_header: @@ -995,6 +1004,8 @@ static int epf_ntb_epc_init(struct epf_ntb *ntb) static void epf_ntb_epc_cleanup(struct epf_ntb *ntb) { disable_delayed_work_sync(&ntb->cmd_handler); + disable_work_sync(&ntb->peer_db_work); + atomic64_set(&ntb->peer_db_pending, 0); epf_ntb_mw_bar_clear(ntb, ntb->num_mws); epf_ntb_db_bar_clear(ntb); epf_ntb_config_sspad_bar_clear(ntb); @@ -1409,41 +1420,84 @@ static int vntb_epf_peer_spad_write(struct ntb_dev = *ndev, int pidx, int idx, u32 return 0; } =20 +static void vntb_epf_peer_db_work(struct work_struct *work) +{ + struct epf_ntb *ntb =3D container_of(work, struct epf_ntb, peer_db_work); + struct pci_epf *epf =3D ntb->epf; + unsigned int budget =3D VNTB_PEER_DB_WORK_BUDGET; + u8 func_no, vfunc_no; + unsigned int db_bit; + u32 interrupt_num; + u64 db_bits; + int ret; + + if (!epf || !epf->epc) + return; + + func_no =3D epf->func_no; + vfunc_no =3D epf->vfunc_no; + + /* + * Drain doorbells from peer_db_pending in snapshots (atomic64_xchg()). + * Limit the number of snapshots handled per run so we don't monopolize + * the workqueue under a doorbell storm. + */ + while (budget--) { + db_bits =3D atomic64_xchg(&ntb->peer_db_pending, 0); + if (!db_bits) + return; + + while (db_bits) { + /* + * pci_epc_raise_irq() for MSI expects a 1-based + * interrupt number. db_bit is zero-based, so add 3 to + * preserve the historical slot offset. + * + * Legacy mapping (kept for compatibility): + * + * MSI #1 : link event (reserved) + * MSI #2 : unused (historical offset) + * MSI #3 : doorbell bit 0 (DB#0) + * MSI #4 : doorbell bit 1 (DB#1) + * ... + * + * Do not change this mapping to avoid breaking + * interoperability with older peers. + */ + db_bit =3D __ffs64(db_bits); + interrupt_num =3D db_bit + 3; + db_bits &=3D ~BIT_ULL(db_bit); + + ret =3D pci_epc_raise_irq(epf->epc, func_no, vfunc_no, + PCI_IRQ_MSI, interrupt_num); + if (ret) + dev_err(&ntb->ntb.dev, + "Failed to raise IRQ for interrupt_num %u: %d\n", + interrupt_num, ret); + } + } + + if (atomic64_read(&ntb->peer_db_pending)) + queue_work(kpcintb_workqueue, &ntb->peer_db_work); +} + static int vntb_epf_peer_db_set(struct ntb_dev *ndev, u64 db_bits) { - u32 interrupt_num =3D ffs(db_bits) + 1; struct epf_ntb *ntb =3D ntb_ndev(ndev); - u8 func_no, vfunc_no; - int ret; =20 - func_no =3D ntb->epf->func_no; - vfunc_no =3D ntb->epf->vfunc_no; + db_bits &=3D vntb_epf_db_valid_mask(ndev); + if (!db_bits) + return 0; =20 /* - * pci_epc_raise_irq() for MSI expects a 1-based interrupt number. - * ffs() returns a 1-based index (bit 0 -> 1). interrupt_num has already - * been computed as ffs(db_bits) + 1 above. Adding one more +1 when - * calling pci_epc_raise_irq() therefore results in: - * - * doorbell bit 0 -> MSI #3 - * - * Legacy mapping (kept for compatibility): - * - * MSI #1 : link event (reserved) - * MSI #2 : unused (historical offset) - * MSI #3 : doorbell bit 0 (DB#0) - * MSI #4 : doorbell bit 1 (DB#1) - * ... - * - * Do not change this mapping to avoid breaking interoperability with - * older peers. + * .peer_db_set() may be called from atomic context. pci_epc_raise_irq() + * can sleep (it takes epc->lock), so defer MSI raising to process + * context. Doorbell requests are coalesced in peer_db_pending. */ - ret =3D pci_epc_raise_irq(ntb->epf->epc, func_no, vfunc_no, - PCI_IRQ_MSI, interrupt_num + 1); - if (ret) - dev_err(&ntb->ntb.dev, "Failed to raise IRQ\n"); + atomic64_or(db_bits, &ntb->peer_db_pending); + queue_work(kpcintb_workqueue, &ntb->peer_db_work); =20 - return ret; + return 0; } =20 static u64 vntb_epf_db_read(struct ntb_dev *ndev) @@ -1690,6 +1744,10 @@ static int epf_ntb_probe(struct pci_epf *epf, ntb->epf =3D epf; ntb->vbus_number =3D 0xff; =20 + INIT_WORK(&ntb->peer_db_work, vntb_epf_peer_db_work); + disable_work(&ntb->peer_db_work); + atomic64_set(&ntb->peer_db_pending, 0); + /* Initially, no bar is assigned */ for (i =3D 0; i < VNTB_BAR_NUM; i++) ntb->epf_ntb_bar[i] =3D NO_BAR; --=20 2.51.0 From nobody Fri Jun 12 12:46:56 2026 Received: from OS0P286CU011.outbound.protection.outlook.com (mail-japanwestazon11020110.outbound.protection.outlook.com [52.101.228.110]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AF44B390221; Wed, 13 May 2026 02:49:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.228.110 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640584; cv=fail; b=TBe8vqgwAkUYMadGWgQ6u+GSRYY/X6RWsHkNyb8+HDXPaPAAyhiv237vbgqfuHX6AkOChA4PkMdM/Ka/SBIJ6eOUm8Q82t+WtcjsyKChz14YwabsIFeITNKMPRzI+EQYDr/iszhx/ettjXafBud3sUQBy2nfjg4rjqjkyFf3Ks8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640584; c=relaxed/simple; bh=7QiKz55ykc8zGmtzQZQfU9txn7cUo4ijR5M68FmYorM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=p4cS36uKFz6E0uruToe+qi4fAOgqDiRTObGbcwXlz+ibtqTbZ4DRfMlFp7Org4G7ZBJ6GrlavAZ6ykbZGRPMP9fg1C75C57HH0PIs+HkAbA8N2n2x1P3MNrpePSOJUfAFPeIk7iamvdwPfAQsTqw5y1cle+v2CKzgDnvfgviRqE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=mNJ3M7c0; arc=fail smtp.client-ip=52.101.228.110 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="mNJ3M7c0" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nIUWPlwZP/C53VVHPCXQYtM+G9KjmnlceZOjqqTCam6Idak29IGMAXgejAA61EUXEjqAbdYLLM4MevqIxup8wy4NGMZT+ko+9F/VKVyEh2jj0mMPF0wYITEJm7v44AqYxMHuPrlXRx6KCBAMbWwZ6doH3RZQOh9uTU/01EqoMbSu/SwTy97Vr2TLChdk9sizOqYoI+Fo1ikncnuuEmpEA5NSeiQugnQsgVwF3l7SPaGTotIkhHTJaqdPJgOrkrGwHv/RCsQniaHS8SW1riOs7+pJXz5KrdQV9UnOF6ytzr22TsrLg3j1tNU7vyNiVbLt97kBno25dCavoeBN22sB6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=7sDfVb/vE0GxGRLTFJPgUTns1EkhEBtekELiQRQdISA=; b=HxEBZtVPpelrtN6wkbMfwCM3O9WTq6fX6VzjTikR61VxhT9SlNEtZmv0C31Xjs34fvCh2ITNXYVIVVhPYIloSeIFsTAJWpM4oLM9JTuOmSmFK8g8vvlZ828qSIHb69bNZc9Suo1IkqToaPzkS5yXWLkhYWn+OPIRBsSzRwEs1YslhbPY+2rQusKLrTc7KtdyMABW4qjewZbz7qnfweCVc8XGbZwoQG60qFuCOsoI4Kxq26xxCs9ZhDe0QbaRDTVmBL9KIniadDjW7rcBb0QYwN4f2amDjNoWo3vUiobvxoiWcBHheahJBALa7mvlncXeTb8IShwXXB+IbGjcPBMbyA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7sDfVb/vE0GxGRLTFJPgUTns1EkhEBtekELiQRQdISA=; b=mNJ3M7c0Xdl1hHUfHrcIAdLkMUdr/1pZ7k0Iq9NtThuEj2S5HM+Qrb8+xwEoCrhOv7zSz2ZCkWpF/OnJk5r9ujia111yO3Dpy9P2hdtBZyyRoV8SoBUvBskQH19gZoi4PExyE0uAVHIetBQvgBUiEgD5XcY86o/jcppJALjI6Q0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYYP286MB5170.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:161::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9913.11; Wed, 13 May 2026 02:49:29 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9846.025; Wed, 13 May 2026 02:49:29 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe , Manivannan Sadhasivam , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Frank Li , Jerome Brunet , Lorenzo Pieralisi , Niklas Cassel Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, ntb@lists.linux.dev Subject: [PATCH v4 03/12] PCI: endpoint: pci-epf-vntb: Report 0-based doorbell vector via ntb_db_event() Date: Wed, 13 May 2026 11:49:14 +0900 Message-ID: <20260513024923.451765-4-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260513024923.451765-1-den@valinux.co.jp> References: <20260513024923.451765-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP301CA0048.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:384::17) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|TYYP286MB5170:EE_ X-MS-Office365-Filtering-Correlation-Id: 3bcc0edd-e474-4365-37f2-08deb09a4102 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|366016|376014|7416014|921020|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: f4eS7g1ODJDyJMnRDJLMPT6Os7wGXWjAzF3vBGMQzWprkVS/36rZTmPaaiLYTDhYg8qrjqGGt0D5AF3kUUDFvYU5Wv/Wi19P9qZHwMFEeoLNwJff2hBHniczc5pDK8gF033f7xZgVwyh9C0IsOEgYR0UJTJiHRnQwltJp1ibIX+0Q0HfU13Vu5uHUHZm6CbRUsvGbFum4Gj+RZoaXF4XdhtuMQ9tvMunr9JxykfznT0WEozeGOHY/o6p8uOpqa266VPq5+cVhT7WE5l2DCQmDRcko2Re7Gro/iYCxEIeExdzAAtYIv51aEWtv3Nc0I86EfrOmDYR30VRD60OZWKQoX1AZv5GaVb8M13x+LVOwZMnfnVV2FRtoEaLA26FLPzsT+6TwtJRo+8AlhIohNHV+G1Fn2+6/LqZWIM10s9+F1XNq0UzFb/XDeuSvEUSe3UJBjSt2TQLkr/uDMIbgZVPv4c1usP10tN62aMUdwpK6thF2VWqsiGyHPROy69msS468ty6I/rWODErN2gfDN4YM/r5jWpCoIQLdKJtf3rmZGUNpTCZt2q9/UUt1/msSUBiqWifKM9fDy2onXVgTi2UwmwZbhtaLHdct6aQrQZOzdhi5GJ4lZ884zYXeQPG+zZnDK6VHK76M002ZYlzkrqDhZuQqJ5FTiYfIyWXgHl7NEuUKyY7TcC7s+UsHYl+mOL8ILCeKUv7/1J4EOLMY2YQI3i+XCev2HsaaRXfxodis3c= X-Forefront-Antispam-Report: CIP: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)(1800799024)(10070799003)(366016)(376014)(7416014)(921020)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?bRkReWgbRc7rvxj5glPlkwgDAknvcWp6BxIGgkunNJy6RIX0AJiP/1acaoQv?= =?us-ascii?Q?U3dKm0XYUuiY/qi262rWq/kkuXMCy+SbDOnYUB4QE7t32/+LXenYOFEnPGX/?= =?us-ascii?Q?Qwz1hKSj3Z5nSyDqhFs9JwZ4hPxZgRwVGXexVGsVjGc1n3EUqUf2DSSLMgtV?= =?us-ascii?Q?gcsOXMwvip1rXlS+fqAuGFThAdDnFzkcANfFNr9fdYmIQfsoci50nQZUz8sn?= =?us-ascii?Q?bwV+lPap04kTPb5PXXPQxFcaOyLPxybBCFOWMmmas9yxrUB47xHDXEOB3jMs?= =?us-ascii?Q?bCTmSLBz3NNn+tG8/Ih8EiAffZBkSYwM0iNntIONoQ4faoie1ESM73gJWHEb?= =?us-ascii?Q?yXgypxL+hea+e/UkNoGWbd5Ga5db5T5tGKkFTXgj437gAI56GnyUr5DNV6U+?= =?us-ascii?Q?SpudnyzM6kOgClWvaJEIaPL9MqHweuh+URp2tH9XfGzts2YYlpovnhwbuBST?= =?us-ascii?Q?eNPReqqqaoSr5V7GgntKJwbt4yOSM4oWmIy/7nLfDxbbrS/eRBIAWFeewh+b?= =?us-ascii?Q?Jy7xjvctt0vkhcBqpU6YLiTzdeqZetjE8lCS+EGnBXUvrYOxLSDAzszrESpv?= =?us-ascii?Q?bMGaVFcAQntIK71zWujIAF+dNKx9z8AGvvQbg705pGH3TjwunS6n6Ov5wU3u?= =?us-ascii?Q?IepP4pw5/lNgm0PzTEt7ZFUpWEMqgczHi/1SvPFI+MiEfWDKvLX02PvePuA6?= =?us-ascii?Q?UQtZQD5jCHpAMITdVy40qXLqYZ8XkTwfAkrC9wrB3YNAmE+nKq3gFMeWQGyg?= =?us-ascii?Q?iP3G+rz/HImTZTQBAIFGU7zST2IpL6iUPSZCYSn7IUNtYmSI9Cs4V3XxakeL?= =?us-ascii?Q?s0FfrBBJ3FRm5YhVWe83/Q4mhOhCvw2ulyDj4e+UBOsiHgomLBO64fakrwKu?= =?us-ascii?Q?hZQHVxRTefYKRTUzxr2DfCVxN3WAX9ZChhaGECOuKnDEs+4GTU453zvQHBQn?= =?us-ascii?Q?4DQp9qdvOYD9EZxGLyGy2vs4vGLdKo/6ct52WHcVd46GOiATVYPg1Ki81mru?= =?us-ascii?Q?Ju2+7IzNRCGfY3K7rVSKvqfZOVyaxng/Iqq1cZYT3Lk2g/4Uu+mONMpMGNr1?= =?us-ascii?Q?l10KIOgnmiNqrir9QObrNFCg57+3jorh+Rw5gIpqVH2J3qtAqGZprUlHEHvO?= =?us-ascii?Q?UYit3c8Wa8cSQ0rhvKjLamWAnHKz9aS5jy9XiKZzZkQm+qCOi45UMYDs5ca+?= =?us-ascii?Q?sz0aTdIQk2un3TSoXKK4Soirx+bvxn5b0xBgJS0tu9CWvxUQVyopYRWXj8A1?= =?us-ascii?Q?1xoyNQIu90sbgd8cEL+NeIIKJV34ytPlOsF9hZNtbyI4qBlBVpFWTXVZ+Hxk?= =?us-ascii?Q?5yPmeZKUnKC2bzrG6R0sfIwMRsUGS6iiSweZmbJwyDixRqK72W7FGhqsJnFl?= =?us-ascii?Q?8SYF1CPG9kL9Oy8vAk3lBXOBc3S3oyaFo1Eh+YbZUi2vkhWyEVyOqwjCYQxW?= =?us-ascii?Q?1n/SIORKihWFLMWlJUqFb8nnuZolaSyf4KZjcIWU+gbbpxEYvcA8AV6U+IBv?= =?us-ascii?Q?//LcZ4J2Lg79Xuq1kc6CZvhDcGQkXqCVSP/6kPPYv8YopfPRqEdIEixXbmG3?= =?us-ascii?Q?DtWv1a5NV/VGI+RlJIjO/sJoBXVF3o9YnGA5aSe2Qp/+9niqyTkrcdGP0eif?= =?us-ascii?Q?BHzgW1bqTxzilKCRm+7Q+uYrImiiKB0+o7TMtXEXl6FKxAFy5i7h17bSKeVT?= =?us-ascii?Q?sXZXfcZ8EtpgPzRuFHMb4aHAoA5TTFMfpUXl48gpjOXb9SQG+dPcRRqU0kiV?= =?us-ascii?Q?1usv6cb1XNXm77wkSGponX6z2PC8VJLGoD0QyMhaoJVePbVM6F11?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 3bcc0edd-e474-4365-37f2-08deb09a4102 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 May 2026 02:49:29.5933 (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: /W+NfadT806ySZu48FSWV/9MSQWyrOKfpr5LEGxL7cT0LJXLPGl4LejrjgWGTWfP3y54s7UfMip53u0tHnp6Mg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYYP286MB5170 Content-Type: text/plain; charset="utf-8" ntb_db_event() expects the vector number to be relative to the first doorbell vector starting at 0. pci-epf-vntb reserves vector 0 for link events and uses higher vector indices for doorbells. By passing the raw slot index to ntb_db_event(), it effectively assumes that doorbell 0 maps to vector 1. However, because the host uses a legacy slot layout and writes doorbell 0 into the third slot, doorbell 0 ultimately appears as vector 2 from the NTB core perspective. Adjust pci-epf-vntb to: - skip the unused second slot, and - report doorbells as 0-based vectors (DB#0 -> vector 0). This change does not introduce a behavioral difference until .db_vector_count()/.db_vector_mask() are implemented, because without those callbacks NTB clients effectively ignore the vector number. Fixes: e35f56bb0330 ("PCI: endpoint: Support NTB transfer between RC and EP= ") Reviewed-by: Frank Li Signed-off-by: Koichiro Den --- Changes since v3: - Use EPF_IRQ_DB_START instead of a literal offset in deferred MSI handli= ng. drivers/pci/endpoint/functions/pci-epf-vntb.c | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c b/drivers/pci/en= dpoint/functions/pci-epf-vntb.c index cc0b356973f3..d31e2eee0869 100644 --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c @@ -83,6 +83,12 @@ enum epf_ntb_bar { VNTB_BAR_NUM, }; =20 +enum epf_irq_slot { + EPF_IRQ_LINK =3D 0, + EPF_IRQ_RESERVED_DB, /* Historically skipped slot */ + EPF_IRQ_DB_START, +}; + /* * +--------------------------------------------------+ Base * | | @@ -272,10 +278,11 @@ static void epf_ntb_cmd_handler(struct work_struct *w= ork) =20 ntb =3D container_of(work, struct epf_ntb, cmd_handler.work); =20 - for (i =3D 1; i < ntb->db_count && !ntb->msi_doorbell; i++) { + for (i =3D EPF_IRQ_DB_START; i < ntb->db_count && !ntb->msi_doorbell; + i++) { if (ntb->epf_db[i]) { - atomic64_or(1 << (i - 1), &ntb->db); - ntb_db_event(&ntb->ntb, i); + atomic64_or(1 << (i - EPF_IRQ_DB_START), &ntb->db); + ntb_db_event(&ntb->ntb, i - EPF_IRQ_DB_START); ntb->epf_db[i] =3D 0; } } @@ -341,10 +348,10 @@ static irqreturn_t epf_ntb_doorbell_handler(int irq, = void *data) struct epf_ntb *ntb =3D data; int i; =20 - for (i =3D 1; i < ntb->db_count; i++) + for (i =3D EPF_IRQ_DB_START; i < ntb->db_count; i++) if (irq =3D=3D ntb->epf->db_msg[i].virq) { - atomic64_or(1 << (i - 1), &ntb->db); - ntb_db_event(&ntb->ntb, i); + atomic64_or(1 << (i - EPF_IRQ_DB_START), &ntb->db); + ntb_db_event(&ntb->ntb, i - EPF_IRQ_DB_START); } =20 return IRQ_HANDLED; @@ -1450,8 +1457,8 @@ static void vntb_epf_peer_db_work(struct work_struct = *work) while (db_bits) { /* * pci_epc_raise_irq() for MSI expects a 1-based - * interrupt number. db_bit is zero-based, so add 3 to - * preserve the historical slot offset. + * interrupt number. The first usable doorbell starts + * at EPF_IRQ_DB_START in the legacy slot layout. * * Legacy mapping (kept for compatibility): * @@ -1465,7 +1472,7 @@ static void vntb_epf_peer_db_work(struct work_struct = *work) * interoperability with older peers. */ db_bit =3D __ffs64(db_bits); - interrupt_num =3D db_bit + 3; + interrupt_num =3D db_bit + EPF_IRQ_DB_START + 1; db_bits &=3D ~BIT_ULL(db_bit); =20 ret =3D pci_epc_raise_irq(epf->epc, func_no, vfunc_no, --=20 2.51.0 From nobody Fri Jun 12 12:46:56 2026 Received: from OS0P286CU011.outbound.protection.outlook.com (mail-japanwestazon11020110.outbound.protection.outlook.com [52.101.228.110]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C670B30FC27; Wed, 13 May 2026 02:49:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.228.110 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640586; cv=fail; b=M066AXFF+BjsQ1ar2SFDGYjQepkmusLhNUMRGEDrpOegLc5DGzNTgWdLsABdyC0PtaiPucQOavKUge0l7cJ1sgb4X2ZAuZAqahtw3sgFG1+ijZ7hOFnMHSQl9P0WEyX+9rTtPeqpSL06TjmlnPYaZicZ4TcvrAY+rS2JO4O6zGA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640586; c=relaxed/simple; bh=o5RX6fYr+4rVA+CfuLEggoFr46SQX4wY5aT/rBhEopo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=rar+aJ+FQhTXNOD6YgpIuLawzFG+yRIspdLNHgXl4MICVQ2N4TlfwGbVm7Jp4yWph1UHpB9WRv4ayozqK2QsHjU2IWziYm0tTcsu7SZSY6R/PLkiLu1WhN+OF8nl7GDcFS+o2P4CDKmlGpx6S1zYRcFjpSi7YlCTq3ljKWKpYHw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=oP2R98BW; arc=fail smtp.client-ip=52.101.228.110 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="oP2R98BW" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UxhCP0mdWtSaAJo6GXqfPiR30cX5Z3Y7SZp4PEGHDYElzmkckBc7tPDCVXsT+QDvJDGiwGCFuxqYyOygYeeX8MzAkc/HQu8ENLqk9VZEcgjM7TeEFvooRjcY3tiRJUG8InzKOM7DQw+2rEtKmjHGEGYoJXR+GC6OSwwKKRN7btsKy7RdB4+wEdflpQf7VAC3sQSWdU5/zhOLlDdRXARBeznrHuh0xYgDcZe4NFpesU5tWQ9WyXrgu/jFglS1eLE6TdsZW3x87yK8MWpFfaflm37fAeqlyz+4aAfDGOyShYpClsfRQyoREbMGNmOdGYrpyYEKROyhzUCXPNfCwatnJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=x+bm5Q5vWa6Gto/pUzFQmpWoDGzy+Vr3MUaZv76LOxQ=; b=V3edoq0jqy1cGfDwiF3liJUDHILHNCODDF5L3Gubh1TtvySRz2CPoRgDEJoIX9gQjUQGwG9dd9mnzO8WxDYdjo1FD8t9JztZo2agdK6YRidSo6Hu+gUVfZsEIvFx9hfOEH50SAfwAlSwNKnN2X4FIadd+WwUT6JlhDo9gLHzWT8LZSskXEHWhAtEukHhiMJ8ezcLYFoC7sajB/lVXcsRoTLDXvMitjpX6DCA9eihvIcIlJJQjtM9785J2g3sMBgsrf7CMCae1tTARXRu3Y8j8E6qqpZXdmIYrQdPV5KLGyMPU1Tnc+SB6ervROC7fJk79R1FlMSVzG4FNsmnyrUJig== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=x+bm5Q5vWa6Gto/pUzFQmpWoDGzy+Vr3MUaZv76LOxQ=; b=oP2R98BWrtdE5XR5eWZK0pUW3qwIpUdHFodR/M2z55BUXO+PboESoWAYUHhVQQH4DyqhqdUDgYgmvF2eFsL++qPih2J1auWTguDonl6rGVXVerKe1/1WgVGCaZ1Hq2TB64g8dr5p4a+fcFCjS0g8Tlv7+UgRGhTyv8ZKRrXduEM= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYYP286MB5170.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:161::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9913.11; Wed, 13 May 2026 02:49:30 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9846.025; Wed, 13 May 2026 02:49:30 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe , Manivannan Sadhasivam , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Frank Li , Jerome Brunet , Lorenzo Pieralisi , Niklas Cassel Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, ntb@lists.linux.dev Subject: [PATCH v4 04/12] PCI: endpoint: pci-epf-vntb: Reject unusable doorbell counts Date: Wed, 13 May 2026 11:49:15 +0900 Message-ID: <20260513024923.451765-5-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260513024923.451765-1-den@valinux.co.jp> References: <20260513024923.451765-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0012.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:26c::16) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|TYYP286MB5170:EE_ X-MS-Office365-Filtering-Correlation-Id: 817b5d1c-ce57-4208-4622-08deb09a4182 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|366016|376014|7416014|921020|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: ESEg5UPoCn3ukaAqD8nyu+KWtLTpUXb6sgQ6qgu2VKBy6Tq09UvOoIh7oADRWeWBkNpf/cUj+Eyal+c7admxm4QPBiY2MDzouY8TRS8qb+uWj8uVFZlOJtFVSMkDH4KJCjEUnJvfb8eIFRApiEpPPAhhHi+OJn3ZZoUrAto+jPRMV4+rq/SFc9PxERkaCxPwToY5nfMR8aZI1XsJkKDN3LUS206jVvh6cBpHbaJSdiMUDgnIB/hlhCS9qtrVU/KD9gQ07/Hbj6WgTE8S/rRkZr/0ms0ILoDt96E7R3eYxE2biFIbXwZq5sUgw1GetDJV753+WlEp3yVCiFsEFDnWsP5yYvWsjEV/inoRe7POGj+lWGZ+QZ2TwHwpEnVZhR19zzTkYZR1HVZ2ZQSOpQpP2Zgf13MPk5a2kuehCffItJkbgoIYPp40jojEVmmgRiu+mcoOXxTHy3xgCvHznlt7pWB1HCWIVknhZno67Oo/LX3Jh6Rcz/er5/TS+Xnl9ox7oPITIc10tCFzSATgOdmLfgka2B6YheFSgN2DoBs6MDUVY83VXXbEwE0BmT75MLgEdvlukMyGnr+LhYtWgBjxzZ10FlQR3FDn8UjVd6qkIud2bEHrBZuXWREuAu1svINVq4cSjlxkxytnOBpwWfTuEgp7upLucjcbdY9asnhGwQ7p5U7dxU2lx1HOsNH32h3vkO/m5r4msdG5eH0vWKm3F+h7AYF6TmduvC1di+dgXR4= X-Forefront-Antispam-Report: CIP: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)(1800799024)(10070799003)(366016)(376014)(7416014)(921020)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2LnK2/vcoratLKZCUlwKeGRV1U/9F8EQI69dACEVyhXordm0dIyK2HkAfDMB?= =?us-ascii?Q?mdaq+MQ0SEDmfZZW9wpzGyjHCWeHdtZrY9z5LIG9bLTnPjxOkdqBpzS9aKlp?= =?us-ascii?Q?bftfWmYlqFeVT+ANuTJlr8EoTF9UVfIV0XGdgNMkT14xNuP3WFE7IpzaVU2k?= =?us-ascii?Q?TsAI+w6XKqle403EjvYlaU7qiSAUJerlF6Y1nNeoej+weJjXJnL/jciqf4TK?= =?us-ascii?Q?rJZaZQPcyBN+5/3SfWYEpG4ecXOTiPqvmmHfZPvqp3udTVoJI1UOVmNZD30G?= =?us-ascii?Q?1ev6JaqYyYPmVtpB9ThbJiEjWtQCmP9eaG6q/taNfElrN9S56DXC+ahzezEc?= =?us-ascii?Q?aTuvLJpN08NC/Z+4YFHjFCJFlzD79DtU5qj4QGSlHewCaLAM8lRUtXMyp/1p?= =?us-ascii?Q?eS1qi1MNI8Nx64J/LFJoqID4gcKAhW7aQ5aq6VWVSBDhRuo6N0cgbu8JOpnP?= =?us-ascii?Q?919zDc1R1UVajVJgwZIEjju5eLRennAcP7n9v6vENmJakqJvPyen7cTuk5T6?= =?us-ascii?Q?lm+kN9Dyfy4yRRl+VZ0WH4sPT2AWMf9Mw9Iy/7OSh/PUx1w8vpUTlrmVzLyj?= =?us-ascii?Q?D3GY1Gsk9zjQDj6H1UJvMLeMc8c6UOCNvFjQWRAe34Yw3MSTIfc9Ca1cpouW?= =?us-ascii?Q?ohlxvfy3Bv4gv5tcB7WrXBcgN3rPLFEJ5bSLIgG3RvR0g4iCrAhIDgfmv+9p?= =?us-ascii?Q?y07hb4w92PR2/aN6MOkfD4TnR1UU0+fVlTHsXOWG8WregdKdG4y+UmAwI4YO?= =?us-ascii?Q?2b28KwF+PAkWd27/pbZZbXetsbVOlxglUvpV1YrnQ578WHmHgkY/TQYbGJQ4?= =?us-ascii?Q?q+wKPTzB8LozVFDRGbezHFhG1eIFehSiBpvoue4j1NPfB8W6iNaktbfixU4W?= =?us-ascii?Q?4fFiW+rTINavujua+ZPALJhhkF9yCZdVM8D08XjYRB8YfUrocxZCf+Q8BdHU?= =?us-ascii?Q?f542ayqW8BtfxMXoKNMHGoYh5aJHQq9Ee20BXy9tKldrj1wCkrU+FRXmbAPL?= =?us-ascii?Q?zMRJAEpArTYGtG3RCiEYcX4D6zp6AxLHJInJpMDzZKYWEI+C/FoKzrwFMZgM?= =?us-ascii?Q?ofUoThC+2ZW/O7klA2VhP8bNSoAAJ5CptLpQmIsSLuRaibw4rGV+GjGTbSme?= =?us-ascii?Q?CVT5ASNjtlDyUxe/Cw4XsPFpldDNDsqxVbatOKAS5XS1ayer4/1Vdi+A8aN2?= =?us-ascii?Q?4w5cOQWzmQE0G1IGBL9LaKt6Nw5EmgeQTKGpwwrZfJUsl+5/SsHDcQK3lrjz?= =?us-ascii?Q?ceA3OUIAEylQVSIFhABXl0fKWi1VYe9A9QUYmhNiC/HKYU6GHmVMECIsjNYk?= =?us-ascii?Q?MLGdkB6DOwmoMF2ZyR6UZ9bi9pzu/DYtStj7oX8Ylb1pLwmVDf1GatixjKYc?= =?us-ascii?Q?1+FoTMFo2YBx4GRYbJ7mvwSQq7kE2DDOxd3QCgHjzb3P6ZbinfqtcXKxEt5R?= =?us-ascii?Q?QrHmKXOARIg4gNpFEYGW3sJg8c6tANoEaWMFumVCSn6h2PLVVapWWpQRkMs1?= =?us-ascii?Q?0OEuQw7k0wQoZvN09V90EubahpTyi14v80b6NA/8WtMYb4wNYpLLzHyLsMLY?= =?us-ascii?Q?BNNuPe5+Y7MwIphp5UCTRDftFcJV1cmGjwOJXMAK5BYa6eODTsHRFPeLmXyJ?= =?us-ascii?Q?Vn5dN5AmMCbWZCaGQG2joIL8FZQwbKLDKuyuJcHcr2XaW3q7NT279jduqrp8?= =?us-ascii?Q?SaS5JAOlcMF9v3QpgDm+Dyv7mAmjq/80/fHQ5LuHJBtX/oQF4288ufgi7unS?= =?us-ascii?Q?h1aRk3TOxXW327BwI1nKR56zfX+6blVkU+f1m13c2SHQxLC2B+BN?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 817b5d1c-ce57-4208-4622-08deb09a4182 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 May 2026 02:49:30.4293 (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: yeqb/PUmPs27l+vWBmB5vmuOvBlh4ef9BB7yE8OY8Zflx1e3MHtUyiNUWd9YLdNj5iM0RdRVSuVaALkGNf3urQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYYP286MB5170 Content-Type: text/plain; charset="utf-8" pci-epf-vntb reserves slot 0 for link events and keeps slot 1 unused for legacy layout compatibility. A db_count smaller than MIN_DB_COUNT leaves no usable doorbell slot after those reservations. Reject such configurations when configuring interrupts. While at it, move MAX_DB_COUNT next to MIN_DB_COUNT. They are used as a pair in the range check, and keeping them together makes the valid doorbell range easier to read. Signed-off-by: Koichiro Den Reviewed-by: Frank Li --- Changes since v3: - New patch. drivers/pci/endpoint/functions/pci-epf-vntb.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c b/drivers/pci/en= dpoint/functions/pci-epf-vntb.c index d31e2eee0869..818ae5999976 100644 --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c @@ -67,7 +67,6 @@ static struct workqueue_struct *kpcintb_workqueue; #define NTB_MW_OFFSET 2 #define DB_COUNT_MASK GENMASK(15, 0) #define MSIX_ENABLE BIT(16) -#define MAX_DB_COUNT 32 #define MAX_MW 4 =20 /* Limit per-work execution to avoid monopolizing kworker on doorbell stor= ms. */ @@ -89,6 +88,9 @@ enum epf_irq_slot { EPF_IRQ_DB_START, }; =20 +#define MIN_DB_COUNT (EPF_IRQ_DB_START + 1) +#define MAX_DB_COUNT 32 + /* * +--------------------------------------------------+ Base * | | @@ -512,9 +514,9 @@ static int epf_ntb_configure_interrupt(struct epf_ntb *= ntb) return -EINVAL; } =20 - if (!ntb->db_count || ntb->db_count > MAX_DB_COUNT) { - dev_err(dev, "DB count %d out of range (1 - %d)\n", - ntb->db_count, MAX_DB_COUNT); + if (ntb->db_count < MIN_DB_COUNT || ntb->db_count > MAX_DB_COUNT) { + dev_err(dev, "DB count %d out of range (%d - %d)\n", + ntb->db_count, MIN_DB_COUNT, MAX_DB_COUNT); return -EINVAL; } =20 --=20 2.51.0 From nobody Fri Jun 12 12:46:56 2026 Received: from OS0P286CU011.outbound.protection.outlook.com (mail-japanwestazon11020110.outbound.protection.outlook.com [52.101.228.110]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 51D473909A8; Wed, 13 May 2026 02:49:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.228.110 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640587; cv=fail; b=NenwcmVGyxk4+3OjkETNIgQ9BzM3zBhHldjfsLRZuhnZzI885fxr4HZ4rP/qHvjycr9nS8W/fA5jblEAaHkvxhXXJl+NANioS0iNPDXeVUPx2O6McnQP+CqrI5jYeVoZUl7ds3rHtCLCZtPYXacjWoDpFL2VQ24hVGtUPVtvefE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640587; c=relaxed/simple; bh=v3BK1tgNGRfWBZK/VjX9bYB0S+yAkIK3sGBEjxOafE8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=G8OrSekKeZ6BIVjbnyEH30yilfXU0meuf4dRY0qapqbwn2CDnMqGQHKttfkvNi2vsNsH8DupA3+MTHlelQsmx9geqX3z2KB5SAdx6sExlMyf3OLZCqd17zxZ1vXUPmKqbYThgwWKyJe0fvO5pq7frTTmqTJ1EY6qQ8pBQ2F6mt4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=T78TLw72; arc=fail smtp.client-ip=52.101.228.110 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="T78TLw72" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fbk6IymHrjCzzaWAtkrT1ctJysvbScMeNjeXBK7txsELwhbabs1QMduXzok8DYL6hcRnI/uTv8xpN/IMwn8eegd5laMgN8B19uH2/5HtgCJy7X25VRM+HGMdmLu5+sGFxTDk1adbYyTtr4DXZ1YtbGNQZmwApyAgjvLnxdtv2jNH1QwqDPbN48762tIA764X1qn1kRlmoGbPPEX9erOqcm22rLM+ManfzcuX72Y2NrIqdpphoBFfBpuBewjifKiBSnR6qH3MVEdNWtmtqyYDlF6M8VIK739JMgfQUmZ5MeYeCDo5jG9IqT3tngFJR6vNjIWHyfbM+UMkUmLXkUO9sw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=EjpaZYSJ30FZ7ENugNSNc8Qfkkqy493Gztkxe4vlFvo=; b=PlbXnhuvrXonzGhE+lje6EGQ+0qzeNjkVhNT96uj7eqKQPuMoblVp3inrJ0diaL8hV1inKoJrzz5AJOIRQgopuv/yGTNW7VJvalGjFcZlYvvrpAtsyQgCNLG6pYf10WBWetWUlYBgQ9vyiN6TNh3LQ87Zon9rmaeZ5dYCubQZWkLq2YXmVultJXXPYnttvEW0aT7UoWYHKR9jipzUnm5SKWwerb1eIQfnz4PJpFrtA7mYcPebrnYwJzmgL+7zp3ziLzDLnURbgvavLQRpevganc2Xgu7qBA+mnV4rkmitJoyTdobWCaN7ZjkPqOmZrDGmqWwXuzcH6zVU4GXtw1DgA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EjpaZYSJ30FZ7ENugNSNc8Qfkkqy493Gztkxe4vlFvo=; b=T78TLw72WEQBhIt28JavgGz92xNWCRZM/3rPz09NfUd+oOAXlyp6KLpuS20Iw1CrZfeNF6ej3EIfuDMiiAYP0QN/+KUOZUKfBJevkAWUGnUz9N6hEw+9bF17DheraOt5EwjSCdgXNpawQ2R/ZRnPTvtRo2WmLto2n7c/96w488M= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYYP286MB5170.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:161::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9913.11; Wed, 13 May 2026 02:49:31 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9846.025; Wed, 13 May 2026 02:49:31 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe , Manivannan Sadhasivam , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Frank Li , Jerome Brunet , Lorenzo Pieralisi , Niklas Cassel Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, ntb@lists.linux.dev Subject: [PATCH v4 05/12] PCI: endpoint: pci-epf-vntb: Guard configfs writes after EPC attach Date: Wed, 13 May 2026 11:49:16 +0900 Message-ID: <20260513024923.451765-6-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260513024923.451765-1-den@valinux.co.jp> References: <20260513024923.451765-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0004.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:26c::13) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|TYYP286MB5170:EE_ X-MS-Office365-Filtering-Correlation-Id: 3f3370f3-adf0-41d7-6ec5-08deb09a41f2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|366016|376014|7416014|921020|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: mB5ZKipyYfRhnTP1imnJibLm5Jd4+ZIXs+VHI4rKdnTvC0kHcjp1i9H13J5iyO5KC8zCq0oed+T8QyhKTSC2OTZ/vyS8act6tg3U74XCjU1PXdkhvVXQnHF+LnlQ35GJLxeKi6cGcrB4KHp4nkcURUiNdS95Ha+B5XmMirQkYLEAxB6AIcRh0DDRh9RINExYbCpHvddZPn5hVpeL5AeR3B9FF9083aaThuQDhTHOozOo5F6Ed5wYJDluiFFb/2i3aWdjluIbTTSh7jo95rlYNamTXohOkb8V3H5OPf6nj64sUtodgvKubnZIBHl/57LEGiZcSSR35xEKutmK9YIU6ZxHQuZql6BDTMNOVTqZYlwHsFkmPX7USthCfcpfeezWc9dolTYixarPq2f1EjOoPSSTHa1EiNuQORH0jiqSjPbEeMfIkvIvdnQ6lj3wqaGG9PPRy00iOdrUettRudeY6DMLjqxW9cq8WuUQUAkfmcgJyMWSZUaV+1owv2f59ugBSvC2tZT2BKFIFYoF2j/vXXlt5P2mhSWOKOail9+c61uqpiBQKgAxj4n8Pd5K7NbGYFOJzDcvEH4a1/i/8aKYhD+a2UV0eHyZVw1QAZeaQEjyZthShEQkaRAvEMZus4bnIftlKpCto9plsIXBg1DIPIUicu2bhB8avm3p8FqOiHWv4CHu4PIrncQ5Xth/GVgGHWx60DAlu5OZbd/FnMi+WX4R1nnsKHXUJd3mbpUimqg= X-Forefront-Antispam-Report: CIP: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)(1800799024)(10070799003)(366016)(376014)(7416014)(921020)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QCo9e2E0dVdnXdf8pfBlvkl/QCiGDOp/1Udpsv9ha1jyHVezLRrzh9CR5CX7?= =?us-ascii?Q?K734OM7VgAaSEfJVHToNeWdGUpYRQYJRK9RJm5oBvTbDfPBKw62Wxi1v8VSm?= =?us-ascii?Q?99HXYYb1doViDYFNm7ovyY+jA5VCHTHLMoB4+3hJX2pqJI3aDsLAQqVJJluL?= =?us-ascii?Q?aJtLtnIpgkksvlQkSKR3EoKxXC2e2EADW8VhlGTY6OUZTJIWvWRqPqoSjNMe?= =?us-ascii?Q?htQxp58OG3D86UKpYFRURlbQUGdrbNUl1A00NNqVLtSMoHxJF55P+dyZlVRG?= =?us-ascii?Q?wrioPzgjhOfk5dbDHi5iSDYuxepAQkIul/NE16sZYn8ynUxnX3rDEaWVf42P?= =?us-ascii?Q?4G6/CeXQNJIEfty9fB/UBccw8J2MH8aMx3vP40GcGwz+EFZBkF4jsaFAyXlu?= =?us-ascii?Q?+MpaRByKaWps8DmNleNq3rvvgPe2QinWdZwVO8ctIxqYZz/ASO4vFvIeHkbk?= =?us-ascii?Q?lqLGa3t9Vp0r9uAoB9zpysItu3fz1mjEX9ZQSSNAat9iBvf2r9D7g7DgdvI/?= =?us-ascii?Q?TQz+W4Z97aQ5Z+xnI/YB0c+aNHeqxZ9TgwvFoeWfBNtik0mzdmNW98r63ov3?= =?us-ascii?Q?1qKsB3LijXVBjdRj2WTLwK2hJmANer4VSmMYIau+H5IEHHkTCBOj1yv2AZVs?= =?us-ascii?Q?5v9MjDXOIUCgzSk+3EP5Q3xy4C+fHE+k18Pxx+38l7Jt5R8NehqKemLAz68N?= =?us-ascii?Q?f2B2RsZIGuUkYAIBw6gUo4JZaIUklwzkSxZK/HBXxwzpQkIdmbnqKg9McV4h?= =?us-ascii?Q?dS/4pEDqd0nEkI0XUUkwj3A7OhxLrVEb3ypYTUPCXi+PUGpmn03LZUU7cgcw?= =?us-ascii?Q?Bl67AkddOnQgKoni6VGt73bOFdlanZq7s7olR4Y6laAPKS45nQSlTHJlgjoF?= =?us-ascii?Q?mLiST+BvTxE5Il9B1AMG445ii8oxnLONbKqB6AKNUrajnPZ3MjcTrfm9aX4k?= =?us-ascii?Q?+72aXwjNTpZB6E9aEJBexzNtWR7urScCdeY8pIgE/6jS5ABh7jYraicXNA0h?= =?us-ascii?Q?4F1Yy52y9lLXdmRtoeJWA1cZWSlluWUwrlyxvJ64YsfWFQd4dzsKofe4zLXo?= =?us-ascii?Q?Yfkxphe5tSh9rgoyEZm/7pVgte/gO8x/s5qS1l8pX9cqOQXcrK87NNdZb/6V?= =?us-ascii?Q?85hLBsvzQEcIzGfnRfBTRIFOeRwitJ3JYMixgL12WFykjkHTG8uLdnvQQIPu?= =?us-ascii?Q?lERTG57xw5Yap4Olh2wNGDES8g3O15VG1KPQNjNC/tBwmMbBMHK7NAQJT+qL?= =?us-ascii?Q?GfMGycsrJLf2S7kJi5T00E2gnuVpjXNVf7L6bTE97QawZzjqLdxYq61znEqI?= =?us-ascii?Q?7glXa7/R3cpwOA3G6SVja1lmyy2FIWtePvt8irky4wxOU2o5Mf/yJjA2CQp6?= =?us-ascii?Q?wKOty8GMdL3mfBv+VFYuxtvvuOREIGEcOezrM2pGTWwxTToCJp4id1Cbjhp6?= =?us-ascii?Q?KowTI6J7pQmubniraJTnJVfb+tc9Vga//7y5zVVhnNqRF/wIrdAx+um3pkEO?= =?us-ascii?Q?rju1nnqmQShjpdTLDXBANnowB0aqaJU2Glpk0YXsxwl5uj9epIChRoXQiYtv?= =?us-ascii?Q?qHc3yCSTOLrs9NlNgai43dhwXL/cx2CWdVGp6LPbcMtwBPJK6BeegkzVqcRi?= =?us-ascii?Q?i6cVIBlrlhlFvhTLKd1roNEW0N7zX4JTA8Ivou9m+18rPZrNmztVNS//r7g7?= =?us-ascii?Q?ksjR89dXgbYu1iaZ+4sJgPqizJF5MFD2OH62qLNPCc/YUt6oKIsD8YMPEIiH?= =?us-ascii?Q?l/AkOVmP+NNOXzWhDNqA8DToguO51siu7PsfXhSGWqp05ErdY/C+?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 3f3370f3-adf0-41d7-6ec5-08deb09a41f2 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 May 2026 02:49:31.1633 (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: pC0zd6I01UBlgzsdGNXA5RaGYOG+/3cpCsfaK0ceQcvAGVnZ4F3ZV6ImMKAH8Rf9nnqzUxRFvxcKpwNsZXjhdQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYYP286MB5170 Content-Type: text/plain; charset="utf-8" db_count controls how many doorbell slots are allocated and exposed. It is also used by the doorbell mask helpers. After an EPC has been attached, changing it from configfs can leave runtime paths using a different count than the one used to set up the doorbell resources. Reject db_count writes after EPC attach, and reject values outside MIN_DB_COUNT..MAX_DB_COUNT before attach. Now that MIN_DB_COUNT documents the usable doorbell floor, use it in the store path too. While at it, apply the same after-attach guard to the other vNTB configfs knobs. BAR choices, spad_count, memory-window counts and sizes, and the virtual PCI IDs are also consumed during bind, so changing them later at runtime is meaningless and unsafe. Return -EOPNOTSUPP for after-attach writes. The value itself may be valid, but changing it in that state is not supported. Signed-off-by: Koichiro Den Reviewed-by: Frank Li --- Changes since v3: - New patch. drivers/pci/endpoint/functions/pci-epf-vntb.c | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c b/drivers/pci/en= dpoint/functions/pci-epf-vntb.c index 818ae5999976..524355a8b4be 100644 --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c @@ -1020,6 +1020,11 @@ static void epf_ntb_epc_cleanup(struct epf_ntb *ntb) epf_ntb_config_sspad_bar_clear(ntb); } =20 +static bool epf_ntb_epc_attached(struct epf_ntb *ntb) +{ + return ntb->epf->epc || ntb->epf->sec_epc; +} + #define EPF_NTB_R(_name) \ static ssize_t epf_ntb_##_name##_show(struct config_item *item, \ char *page) \ @@ -1039,6 +1044,9 @@ static ssize_t epf_ntb_##_name##_store(struct config_= item *item, \ u32 val; \ int ret; \ \ + if (epf_ntb_epc_attached(ntb)) \ + return -EOPNOTSUPP; \ + \ ret =3D kstrtou32(page, 0, &val); \ if (ret) \ return ret; \ @@ -1081,6 +1089,9 @@ static ssize_t epf_ntb_##_name##_store(struct config_= item *item, \ u64 val; \ int ret; \ \ + if (epf_ntb_epc_attached(ntb)) \ + return -EOPNOTSUPP; \ + \ ret =3D kstrtou64(page, 0, &val); \ if (ret) \ return ret; \ @@ -1119,6 +1130,9 @@ static ssize_t epf_ntb_##_name##_store(struct config_= item *item, \ int val; \ int ret; \ \ + if (epf_ntb_epc_attached(ntb)) \ + return -EOPNOTSUPP; \ + \ ret =3D kstrtoint(page, 0, &val); \ if (ret) \ return ret; \ @@ -1139,6 +1153,9 @@ static ssize_t epf_ntb_num_mws_store(struct config_it= em *item, u32 val; int ret; =20 + if (epf_ntb_epc_attached(ntb)) + return -EOPNOTSUPP; + ret =3D kstrtou32(page, 0, &val); if (ret) return ret; @@ -1151,10 +1168,32 @@ static ssize_t epf_ntb_num_mws_store(struct config_= item *item, return len; } =20 +static ssize_t epf_ntb_db_count_store(struct config_item *item, + const char *page, size_t len) +{ + struct config_group *group =3D to_config_group(item); + struct epf_ntb *ntb =3D to_epf_ntb(group); + u32 val; + int ret; + + if (epf_ntb_epc_attached(ntb)) + return -EOPNOTSUPP; + + ret =3D kstrtou32(page, 0, &val); + if (ret) + return ret; + + if (val < MIN_DB_COUNT || val > MAX_DB_COUNT) + return -EINVAL; + + WRITE_ONCE(ntb->db_count, val); + + return len; +} + EPF_NTB_R(spad_count) EPF_NTB_W(spad_count) EPF_NTB_R(db_count) -EPF_NTB_W(db_count) EPF_NTB_R(num_mws) EPF_NTB_R(vbus_number) EPF_NTB_W(vbus_number) --=20 2.51.0 From nobody Fri Jun 12 12:46:56 2026 Received: from OS0P286CU011.outbound.protection.outlook.com (mail-japanwestazon11020110.outbound.protection.outlook.com [52.101.228.110]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2513334B1AD; Wed, 13 May 2026 02:49:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.228.110 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640590; cv=fail; b=m17hWByx/0nft95NII4s3Zl+tyo1piOCjmTJEmMMjDUnpvkSB2XLPt0rTFt2CuF3w+9WSxHzuin/8MuTCrexCCBHVrndooRFjp74p+JomqrAMcdsrXXhkLRwPSmO7/VMvRimW4J/xBK3vhwtRPwQ/9rDsNcFRZrZBAHunEppqiY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640590; c=relaxed/simple; bh=4XP7fnhiZgpjCVSj7C7JiVh+C0vEt6wzjwc59u25X+c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Mtftnl40OXtz3er9+NUB6nbYITm1BZBf2Sw+kW9MmYyZoX4rt3q/5283uwE3cG2RTSPZcYKg440wFRMXnVpxfGZPAN/i9UqaKqQ71xU5rNweFDOwxqNmfM2Pgqyez+JbYLce9rQs62gbDaSo3Naj1ua2YMteCbrZXGiHBz7PbJc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=VZOmmeyD; arc=fail smtp.client-ip=52.101.228.110 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="VZOmmeyD" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dewahtIHfTAoi+7RfFVeSkz027+c9ozatkr18g+P8G4+gQ7jmBITsRfkU96hkdEebAVZYGnecEmUHkC/bnz9V2YF2LIMAMnWlnkeabMppppq9zf+HRBDx/NhvM1FzT7Jgiusf2ZUDD8Cr/nphwiz/eu+MqJP95dxrQUz6f0PZqgELh2kUY7hlaPuy/xlyCdWmKXHGUmYbmAe3JOAxp1zRbN24o3Nkvdv+ITN5KGl9fRgKgeZ+/Yu6sry82nwWhsO50QZM2K/svW0+0E9KZEpPn2tPumDjZJyl8BG5gQwhS7OyABaGwbl9x/t1NURXunyfdXpRKJ5IDkRMPKJmZ2/kw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=c2BHlkcjTy9zumoiIygniA/TlTDB6jSPIWzhi2bNzSc=; b=JC8IvF9A7cMYHZVTSCvVyfL3xNz3KUVEqGua7nyKgF87NmYVdRLz/n4BQWPmQXfYe5kw1s3rqhOnoKT2eoTC1B7tpsCnmJG/IF17bAjSKgVgDujgr82/RX4ZzlfLKW0EsM3GA/5G0jsSYO2oD3Z6IMQhqWYqQifr5y7WsHwXtFGYdzLuDgzvti7uWYbUBooC0GfN896/Zg6LO3Wugpe8zW6bhxBj55IbdFVb25rtm0xkEbfSg8eouKHKGK3gkg0KY7TvceNOrDw57PEKTq0o1nRaiWe4hICE9g7GsPh/I6tZjyEz2aatJ2WbwL63PtgdxwOJSkh55HSuWu8jWCF0jA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c2BHlkcjTy9zumoiIygniA/TlTDB6jSPIWzhi2bNzSc=; b=VZOmmeyDHojfh8bmOJzv0EBhk7JpYAaBUkioZ9eRUjlHl+1qqZL8ouHvrllMHfAPBTYlUCRMP5y52EmOBzZU2ds1OG1mn2ukmJlxiGjB6tSDDcytUTbqFnWSH9zGgR7w4cTfIQwAyNRZJxlt7Ly5IdlU6X3VLzgXFoQ6QqMtn0M= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYYP286MB5170.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:161::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9913.11; Wed, 13 May 2026 02:49:32 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9846.025; Wed, 13 May 2026 02:49:31 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe , Manivannan Sadhasivam , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Frank Li , Jerome Brunet , Lorenzo Pieralisi , Niklas Cassel Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, ntb@lists.linux.dev Subject: [PATCH v4 06/12] PCI: endpoint: pci-epf-vntb: Exclude reserved slots from db_valid_mask Date: Wed, 13 May 2026 11:49:17 +0900 Message-ID: <20260513024923.451765-7-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260513024923.451765-1-den@valinux.co.jp> References: <20260513024923.451765-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0228.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c7::7) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|TYYP286MB5170:EE_ X-MS-Office365-Filtering-Correlation-Id: 4d432f5f-dd4d-4caa-84cd-08deb09a4265 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|366016|376014|7416014|921020|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: gpri5NSuRrFBDJeuAQuiHSYTltp1UwEyqdFvgmc1bHO1rVyVr9q6ufHIsv4qpnj2Xvcv6DCPc3VXtHqJSGvwfdYbThDgRw+L9g5eAitAaS4//oL55L+BfW7Poub5x2sBj81t3moMzdwO3Un7bAIiYpsecXd0e2q415TOI5PW8ltPUZ+uQ6gGxidgbPSXncG2qUHsHl/HLWJ+eINtMvef/zn1hvzx8RGO2JFta2gCCQFxA3HXLiXazqBltpLkukh9gzCdNxPpYt8f6Lt/VALgwSjpk+scPBJijY99GjHrkh157C9YSbj0reDAOFEDxfcmvMEKzW9MTAc7EJwnSKnWGdsTYo3VWMerlqpgT7eEPCfsTBefR5KF2tkOSPyhUhsAa35YPcrnZ61OzZKvmGBRGYeLHRkM/V91tBB2XjQFMuSvvJgYZMkDTzHfkzXmFWKLqXZqR3s7c6mDce9CHLnODqYFkTegmiq2/1n6nWSAyatgBLpeFuAGD+zolgQx6O5OOCX6gX0U9vP/m4mcPNr3rscKs+pEZ93Qu7GZV5CObU7EVbH0hFKzWN6MOfKSFXVH4XmRBKzDxOOehTWcb7/3jm90r7iywACxNvwF+HptzuhDWS5hDil+kpw23+7e8IMN6MZqeU8jbCAtU2SOKGjIvsSIPAyD2J5Zu5qQz2mjGWO6UBPoN1eCOGNIrG931WtU5+u3eeeqW+cQTATUseyGLrBR3Nlek98Gkx0mAXz/A7k= X-Forefront-Antispam-Report: CIP: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)(1800799024)(10070799003)(366016)(376014)(7416014)(921020)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?cM/yLm/AWu+A15F+LAmg6VN/rZIXBtpO7EaP2fQeyRAVRIZVFGBtfKlZ2t85?= =?us-ascii?Q?tIB7V5DY2RG3RgIXsWFN9ksQhf/+OXctFRNGp+OFSNYVayb/rKSaep+Pp0wY?= =?us-ascii?Q?ot1bJnQu/bNUF7EpCX0auNlkgh25orOghR8zYFtQgqk/XmWmlF0gnF+CDXAM?= =?us-ascii?Q?W6DXJ02c2Cdo0bSwaa2mmR1qMoYfsfEHj2lrp1B9BwPI8kGV1oP0RV5Ut4Tx?= =?us-ascii?Q?C+nlDabZxYPbHCAb4OLTkbxCiRfCxR7TL0PG4wTWeiLAvzobrwf1iJyUvmui?= =?us-ascii?Q?35g3LKM2N/ISHDd72Vgo7Ex7F8J7CSD/EqO0iorvsBTY0kLkE/GovCPE0tmt?= =?us-ascii?Q?zFIQ9iI7BJo5TM6gaYhuvGNmwYGZVWeDcGUbwQYA66JIt2/+fzkP0z3bMhCU?= =?us-ascii?Q?gJPq5VWJF2djaKjNk0DpiGw+0EzN/fWSzLxRmBEX39q81Vu7s3YZPHj6Xosp?= =?us-ascii?Q?cYh3A1MDRPPWCfHuQ7Lp28xJno+dssvAf8OqPMI9iwFEvy50Yaz/k7sWCzln?= =?us-ascii?Q?yptfcF5+FANDrLyyEp29pYjXHBjSqavMeSeK0M7IsZAyqIEgqFjLQOqR48Hf?= =?us-ascii?Q?1y9EF8Jy/84IhkGJR9gkj/ZYAneiVRjuMs35XXJixw9FlGXSHBPr3frut3OU?= =?us-ascii?Q?At+9u/QG7+sDEP1coIs2eEN3Ygyc7q+pijLBCWcrdx8m1RNLFNMUPuMn8Go/?= =?us-ascii?Q?dqlwncSt103YO2/iVFa53FSG7/32nfOm9EvrKYW8AbNjOuMCXcx6uZ41mc31?= =?us-ascii?Q?yaP3jZVJxXexG7Pna1AFJBb2comEYHi0OrB+4xzbTBT4z945l3lZC3+FYz4W?= =?us-ascii?Q?E4aK0R+0BQ8bULRHPSBgQbQrU9tLx70dTfvo2DGV896/lkHr/0n6odRir5P0?= =?us-ascii?Q?uo0c4xFT+F9Z4jQkLE72xzoeelWHy0TNBygUXKDnLWHyCXQzT3YD7agCVJML?= =?us-ascii?Q?vzcAvFbS+f8C7FkRbdlyYU8m2VVMIVu7o7RE6/w/1b+CtohECFsUgxLaidGY?= =?us-ascii?Q?tk1w498z8hFjxO1fLCGeiJUa6bob8bOe8iOF7S8q6OwiZ3an7rX+IcyPWIpY?= =?us-ascii?Q?BEnwpYhHOPpvB5aanZDaHCk9lAN5Oq1MNaREbj+BHpuy6bihn/IrsDXEG9pX?= =?us-ascii?Q?D+IGZP9qCFItwSErkui+3NSFoVR+yTrNo8nm1Q3uC7TBMoycKtL0odUDa/mu?= =?us-ascii?Q?s2XgzA2adv4JLyANonb1DTShIY7aFydpWmZGqWxTyaYHiptWXDVEJga8FxmH?= =?us-ascii?Q?/Cr8/6sFbzLk4RLtRrK+FK9NKIcq3ZSAqep/QWa4b/WgMn5E+hhVgqZZ0cRN?= =?us-ascii?Q?Wl+tGk3Kyx3XyjxCaVgl9X3eUaVhUsKMgFvIa+YL5h9Tg3YOSpmMngSjEC2/?= =?us-ascii?Q?ASfrk2RlpPoMAV2tKYg2w8yurqG0DIU9IRJC/yZ4jJXeSDwDzLJZzXfhOqoX?= =?us-ascii?Q?XqJjLyt/pjf1VhSeShCFSLTlzhBfJttpP036LqO0L5Tj8iNMKjcr+bJKIrig?= =?us-ascii?Q?roh2sjpK/p3MDtjz3B/VeTxW4imcMER6sWdvumN0/yr+vJn0fMmtQX6tev8Q?= =?us-ascii?Q?3x31gGMTY4+chxkfDwIFXO6Pyey55Dc4qKtap6Zz5ei8wzHPLBI3caEa3Vr4?= =?us-ascii?Q?vSvXM6yOA94PF8BCbFeyFDXvNiS50Ko4BJM0pHXnwVPxJW6NYlTIRhXMeI6M?= =?us-ascii?Q?TTOLpx80FNFzvgOd4YNI0GM+phaLfjHJvpQ4xHksUyNa84GBvgTN11y+ZMs2?= =?us-ascii?Q?0ycRwzMvjQ+2XWKwkHlRr3ozuzTElvDqe2CGfL2vTg8dFSWWL634?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 4d432f5f-dd4d-4caa-84cd-08deb09a4265 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 May 2026 02:49:31.9311 (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: KxVvGa7swXbnrH4U6Oo35FjPbbaEYZ4kZENnYfTfz4BAcSpBLAXviL1Ptfbnfr2LCrOlcFoEX9gSyG1AYlsGwQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYYP286MB5170 Content-Type: text/plain; charset="utf-8" In pci-epf-vntb, db_count represents the total number of doorbell slots exposed to the peer, including: - slot #0 reserved for link events, and - slot #1 historically unused (kept for compatibility). Only the remaining slots correspond to actual doorbell bits. The current db_valid_mask() exposes all slots as valid doorbells. Limit db_valid_mask() to the real doorbell bits by returning BIT_ULL(db_count - 2) - 1, and guard against db_count < 2. Fixes: e35f56bb0330 ("PCI: endpoint: Support NTB transfer between RC and EP= ") Reviewed-by: Frank Li Signed-off-by: Koichiro Den --- Changes since v3: - None. drivers/pci/endpoint/functions/pci-epf-vntb.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c b/drivers/pci/en= dpoint/functions/pci-epf-vntb.c index 524355a8b4be..58e41d95d029 100644 --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c @@ -1364,7 +1364,10 @@ static int vntb_epf_peer_mw_count(struct ntb_dev *nt= b) =20 static u64 vntb_epf_db_valid_mask(struct ntb_dev *ntb) { - return BIT_ULL(ntb_ndev(ntb)->db_count) - 1; + if (ntb_ndev(ntb)->db_count < EPF_IRQ_DB_START) + return 0; + + return BIT_ULL(ntb_ndev(ntb)->db_count - EPF_IRQ_DB_START) - 1; } =20 static int vntb_epf_db_set_mask(struct ntb_dev *ntb, u64 db_bits) --=20 2.51.0 From nobody Fri Jun 12 12:46:56 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021109.outbound.protection.outlook.com [52.101.125.109]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E33A93905EA; Wed, 13 May 2026 02:49:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.109 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640577; cv=fail; b=i728hvnv0bZF+0ueYu7tqIydfXJmRLHaU9I/8ffNzaFBFwTLGkNnt7mZHl5n1ycOLiiQ11F9RmNAYDCVsskOBLTFxfFOFSU0nzm6QadM1HX4YDMB5w4OcYt4K5DCQeTTEly4RdUUoxMjiMZftuHCzRJeCBGsMgNzJS9R7jlkbU0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640577; c=relaxed/simple; bh=dN82m0WVTmjj/fRhjLrb1lPwH4RclJ9L8xL1r4gU4yk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=TKVg++y5+hXlLO2MUWDSYvgS/1S2zotplvxhmrGA4H8AE62+/tszN+TWyPEzsgvV/ToJpefvAJ2jjdAvGKFW18Zf9ZGDcscaishAetR7YmBL2rp9T2Drt9jk/zI0HQ/ExKmX24HOdPb4+olGA8UXFC7HJeIBESnfPMO/16WTFL8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=m7bO1AXf; arc=fail smtp.client-ip=52.101.125.109 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="m7bO1AXf" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=D0XZ4JtET7tVBy4GjD/0Ezc2VqXaiRTPgBsrjhTRiJY6QIUl6L8JpbhZbAzGErF/gecHXEfhkB7Y493bGG/+lOrcwaWVzIGvhNWx3JGST4l/hau1AqYLfocUXhW1/VFBBSsDow5ogsUgWsM96v+aP0cxEVkUF1zyZ6r6Fu6glQp8M+m4+6NfxTLxGasCBnLiv8ESOdYU0Spdu+Tl/aQWeHFqPH53yFTlfTJA9H1YywV1WixJkkwj2dAuQnOCMM0yJ/MkKwei2ZtcFHUfhK+truhvbmfP27voP4Z+N7YIGTmJNYXbE7FCIBY49k39F9Xoiwl0+hA0UYR8PTlGpjFGuw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=++twxgvGr4g+9soBj77bwVxTKHSIFRKdoioska76avs=; b=PiXQxcQ++Z4WcbbXhcKLeHmqQYUiC+TFO7ycoDSbNEfbsOExNWyxTIhXmgBV9BxRoTp+f2+sDnluaAh5mW042QFQIS7rWNqjqO3TE64tN8/iUx5Nls9MxFowSpFdAuY5GpLxFnZMKut2PLSAt0pfi11LBVDcZ9vI0PjzGPNQk3NHY7yRKwgYTAEmI8Owc1djVPzF9EuNQ1q5xnm8zStR8nkAdW23xHecAgfDvSulmOH6yoxD/O7xGVDFX0Vi2ZvKSklvfZdPCofQ4jlWv/4ZFqF2nA4XlIA/Vb/NfpQbBAHJVesYlzVTTj7QfFmvu4LwPWMEazlzzjZdY4cQOIyfEA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=++twxgvGr4g+9soBj77bwVxTKHSIFRKdoioska76avs=; b=m7bO1AXfrG/kXhPO6p8QjbiC7lKrTrvDCWjBj4nXcLnWfewmt4AMV5ZPaw186i4Vu22HW1uFO7Q9xMC18nO8Cg/wwuf3neBvcDE8xNG6eWDlZQiflMMzzKNjA2pxUT8R6F5w/Ek7FuvBkXYGHdDCkklkBC9Xdv9u04QCZ23sWfQ= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYRP286MB4643.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:1ad::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9913.11; Wed, 13 May 2026 02:49:32 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9846.025; Wed, 13 May 2026 02:49:32 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe , Manivannan Sadhasivam , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Frank Li , Jerome Brunet , Lorenzo Pieralisi , Niklas Cassel Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, ntb@lists.linux.dev Subject: [PATCH v4 07/12] PCI: endpoint: pci-epf-vntb: Implement db_vector_count/mask for doorbells Date: Wed, 13 May 2026 11:49:18 +0900 Message-ID: <20260513024923.451765-8-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260513024923.451765-1-den@valinux.co.jp> References: <20260513024923.451765-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0089.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b3::16) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|TYRP286MB4643:EE_ X-MS-Office365-Filtering-Correlation-Id: 51af193e-3878-456d-1b27-08deb09a42df X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|921020|18002099003|56012099003|22082099003|3023799003; X-Microsoft-Antispam-Message-Info: cYxJDWHqAm3cKf+C20Iu6Z/Fa1WMZGwgGIaBCUMvb09bgsj3fEcM3NwRQf+24g/Q7RcERNhTxdfUcP/Uo2i855q6Z8uwPN+H5uWC//+r2/l4CIQPXPKrxhH8mvZw4MSTJZr8uTJvCvaHbJ1NAN9b0deD+2xv+BK3TDxKzwUZMHzXIy53QbnHlb+CdFTtkH2ooFHOjO19TnVYzIcIgaJrih1hbJbPUW/Wn9lA2KxVQ80THTo9EvDA+uFAyvYg03QuB0PyQ2SMFqbgQyubBJQKwUQHZ94XU/cxce0piwU3SgzXU9h029ShJC1ZMjkjMoEJOTw8QzsL1VHA5+3CIDX2+ARsAsMZ+nN6XHNSUdSIAyGKENLKGpi78IPt5aaD9M9vsNsFnwaqRAeGbbZnByUdb6gsxy3jHe+qtM4OICd7cQEpLtlrnERDQ0gNchnRU30oK5FzgFLdlabaykZQsAu4wNqrOSTTnjyGiw9qz9ED6VcJVmzFcXvIRbKrqnbPlgKjFrc0HFuz3oupuLn841cjk7wZpeuDz2dEov9KNGzgd3ILx4nZB2lBJHByfWYkvC/UUUT/2f7JQO2O93IT7d9P1k/EwJtsaPZRQKHFWi+Z/UEY9n/o5buYgEtvn5lQelHv+Ohu8k3mlyrYmW6UfiRugS6L6XmLG5Lyall71E/gP2bJx7H2sv/GEzeW3BDWiIt49YVK2pjxO3NnOGb65jFW60lZuX7LDF99n/ufb8smttA= X-Forefront-Antispam-Report: CIP: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)(1800799024)(10070799003)(7416014)(376014)(366016)(921020)(18002099003)(56012099003)(22082099003)(3023799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?7phbq8OCYHpfqrQ8y5GNkdm5zNF/jOe0yMO4GbvzjGfMCuO7Ok9M2qPeJuWS?= =?us-ascii?Q?w3hHK4R2NnGVL/qZC3c7UolCEFkFE7IHo4VVCTWRNTosx/uycWksfhKl/dmu?= =?us-ascii?Q?o84p0gvCV1n/NQjwAnbrIIyKUjuJyF1KVnr/R/E8B2gRJQ58ygikvNtkfi+d?= =?us-ascii?Q?SjGiFC2COzp0dKLtuGQGsWR38ckt70PMRghdpkyr0m4TBkiSTMhqzCqlt2mD?= =?us-ascii?Q?5w/twwPfClilT6Ii0tfOpt9s3E/ScM+sPkYq/JFTuogPhj195Zz7t4lHs0Oe?= =?us-ascii?Q?FaPh1iMnEeIb3yai40aQz53G7+AJv4T0SXAlkOxjcfH+/ofaT64M2yIi4Txd?= =?us-ascii?Q?5fxEI8k2vBqAWdeW3n+DzxtCFfIYMruUWGpGYjVSGueNBRQQ8NriWx4ZaHAT?= =?us-ascii?Q?8rDSczunmHyWUSU2cEWZH+0o1RngL11emhWQsZKGQFBuYrAl/aZ/Ng7F7hCF?= =?us-ascii?Q?UP/F/GdzKMcR0AHP/H3PaPvldQDqoz1TgYejPu9umpc3Bxi+LoGbY9THVqrN?= =?us-ascii?Q?6IpbO5LalWrY8E4IaTPqQX+O+LVptWZmd0g64LXqIJv71yxfbfjo1jWocHP+?= =?us-ascii?Q?bbZim/HL/ATg7c70nP9iGwLQRRz0eK6mnkvvOIOVN7t0cpyWsiQWvyaVzNVo?= =?us-ascii?Q?2t/glEpsfL5B9lBZgQyojNamN5wviRqy0ku9/K1EsbrTKboa+W053n6Q9+BQ?= =?us-ascii?Q?QczHtMcRXnhf7eiUQ7wj/acSEyZmN9frAtKlWGEXPHThpEfXo/GxFG1mX+BF?= =?us-ascii?Q?8h32m+iaMnjdRMv1I73E2Q3Fe7RYaTw8SxJLykirgP1aNbFyFQ6tGRb9hyST?= =?us-ascii?Q?ebgXJYm7W8HxsHLGmuYz0N784kI09+6vaCuUaKvfmJIqQFraCIMBdgDJBIqY?= =?us-ascii?Q?Wk5BIO2u/yoMmP8pEjegeh70Wn7uKdFtPwICy6YBvpOgEw4W7STsK1uMhUsL?= =?us-ascii?Q?5+IHwTTzE+s3QTdeVokSBIQ9a5CNhaNXpQz39mnAUr0crQ8222TGGsBr3NQz?= =?us-ascii?Q?vaUFJNu8YElkQ8Hc/zs2MEpzHoNsVx14rpQ1NeClEgs/WfeD+EOn6x9tQQyv?= =?us-ascii?Q?sSp9YamZLkXw9JevRk1FX/zcuvVn8JNp/xuSJkJw5XDUAp41Q9GX/63WtzEq?= =?us-ascii?Q?5B6AR/5ZlMqgrpeqgYegDhWc+QQxzYYfmlWaySe82QdXQvXrwO2h5oTnNyDe?= =?us-ascii?Q?HJeLcEKHyhbfGiI45s00NX0ND4CQ5ItQ6NY6usVFgGozlN1CqrgeTRHE2ufS?= =?us-ascii?Q?sKbp7TUWfhA5kmi2k/zoTLllc4VaaPVf3PU3VcNNAZLqpqN9Vg6lwa/GATCd?= =?us-ascii?Q?YlV7XnLEt7OcpuS7oJYPN6rr1u8GJrramG20DNzH/xke5khxt1G1ln/RabGV?= =?us-ascii?Q?3PTkV1AknEl+L8o9QRDoZ/OFgPohlDR7KnQItjb2iQYY5BB0H31n0wgwyxRY?= =?us-ascii?Q?z/O9H0AMK7TDlc/SrdXZJc+cOD/Cl8skE9vm0ZKXv8AlQiezay1b9/5x0ilg?= =?us-ascii?Q?S6i0Wq/ClCYBmjfWElMO8OuWJOBGszrqUX3rob6rgGNtMJK0flpL6Tx2XJ7H?= =?us-ascii?Q?ofax0ML2pEGgt8YZnxRyxNGTXTTgc3Jks/gO3uzVV5gBygu0c6jOzYidexQn?= =?us-ascii?Q?0tIu1xZKKQBka6BMIAy8AT6VHjqlJBlweRBshkFsxbGC5O1iSd1u6YtEVFzO?= =?us-ascii?Q?DwpbaHrraDkF5Bu+BZKWmsYyhNFuLpl7rnORtfeWaDfLojGt8YlEh/3DOxXa?= =?us-ascii?Q?kuA6ukuPOb21Cwhd1g/9wqkdO53cN8msuqRnQXtqwYZcbJETpJ68?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 51af193e-3878-456d-1b27-08deb09a42df X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 May 2026 02:49:32.7359 (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: 1QavrpnCQqNcWtfW7AbZpi1IP3aLXnB+CEdyM4y/NfdC+1U5v8Di2Hh+rUh6EvDab9jmPd88GllCHZ3ZuP3DdQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYRP286MB4643 Content-Type: text/plain; charset="utf-8" Implement .db_vector_count and .db_vector_mask so ntb core/clients can map doorbell events to per-vector work and avoid the thundering-herd behavior. pci-epf-vntb reserves two slots in db_count: slot 0 for link events and slot 1 which is historically unused. Therefore the number of doorbell vectors is (db_count - 2). Report vectors as 0..N-1 and return BIT_ULL(db_vector) for the corresponding doorbell bit. Build db_valid_mask from a validated vector count so out-of-range db_count values cannot create invalid shifts. Signed-off-by: Koichiro Den Reviewed-by: Frank Li --- Changes since v3: - Tighten db_count-derived mask handling after Sashiko pointed out invalid-shift cases. The new configfs guards should prevent them, but keep the helpers robust on their own. - Drop Reviewed-by tag due to the added validation. drivers/pci/endpoint/functions/pci-epf-vntb.c | 42 ++++++++++++++++++- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c b/drivers/pci/en= dpoint/functions/pci-epf-vntb.c index 58e41d95d029..c3caec927d74 100644 --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c @@ -1362,12 +1362,48 @@ static int vntb_epf_peer_mw_count(struct ntb_dev *n= tb) return ntb_ndev(ntb)->num_mws; } =20 +static int vntb_epf_db_vector_count(struct ntb_dev *ntb) +{ + struct epf_ntb *ndev =3D ntb_ndev(ntb); + u32 db_count =3D READ_ONCE(ndev->db_count); + + /* + * db_count is the total number of doorbell slots exposed to + * the peer, including: + * - slot #0 reserved for link events + * - slot #1 historically unused (kept for protocol compatibility) + * + * Report only usable per-vector doorbell interrupts. + */ + if (db_count < MIN_DB_COUNT || db_count > MAX_DB_COUNT) + return 0; + + return db_count - EPF_IRQ_DB_START; +} + static u64 vntb_epf_db_valid_mask(struct ntb_dev *ntb) { - if (ntb_ndev(ntb)->db_count < EPF_IRQ_DB_START) + int nr_vec =3D vntb_epf_db_vector_count(ntb); + + if (!nr_vec) + return 0; + + return GENMASK_ULL(nr_vec - 1, 0); +} + +static u64 vntb_epf_db_vector_mask(struct ntb_dev *ntb, int db_vector) +{ + int nr_vec; + + /* + * Doorbell vectors are numbered [0 .. nr_vec - 1], where nr_vec + * excludes the two reserved slots described above. + */ + nr_vec =3D vntb_epf_db_vector_count(ntb); + if (db_vector < 0 || db_vector >=3D nr_vec) return 0; =20 - return BIT_ULL(ntb_ndev(ntb)->db_count - EPF_IRQ_DB_START) - 1; + return BIT_ULL(db_vector); } =20 static int vntb_epf_db_set_mask(struct ntb_dev *ntb, u64 db_bits) @@ -1617,6 +1653,8 @@ static const struct ntb_dev_ops vntb_epf_ops =3D { .spad_count =3D vntb_epf_spad_count, .peer_mw_count =3D vntb_epf_peer_mw_count, .db_valid_mask =3D vntb_epf_db_valid_mask, + .db_vector_count =3D vntb_epf_db_vector_count, + .db_vector_mask =3D vntb_epf_db_vector_mask, .db_set_mask =3D vntb_epf_db_set_mask, .mw_set_trans =3D vntb_epf_mw_set_trans, .mw_clear_trans =3D vntb_epf_mw_clear_trans, --=20 2.51.0 From nobody Fri Jun 12 12:46:56 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11021141.outbound.protection.outlook.com [40.107.74.141]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DCD303911B6; Wed, 13 May 2026 02:49:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.141 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640586; cv=fail; b=lDgfIiKTbQKrw/3oQg2PgAvYUHsIhoL3HMlHGvn3NVESoEq2RNKjjgT+Pohu51B/VTHwRE7amwck66MCEifSH+ke4bVSCEpmw/iaBJRGyrCbRb/JbjeR/Y7nR60f1SkiJxttPHzenSbIYkfOJokXtyGwnRnSLd1bRtxNE2RTJUw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640586; c=relaxed/simple; bh=sng3Ero/SiolvOhyfKWs4Fo1oNoc8Jvy6oAYm7rbF0U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=QFPQ3qsy+1iEiNzzqb3nODUykg9DfDg6/rXnJdQg9ct9r74oTju4NBdLq1teKAfvaLKnP101kn9roh85TGhFKY2v05KQJPF5nngxqEsU8KyQCe3kUlpPi2Cbzf69R0edve2hP5qAzCaBrpcjnOWiNCGfvVi0kOZYSAfXcSCnbWA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=AykTf6ox; arc=fail smtp.client-ip=40.107.74.141 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="AykTf6ox" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=H/HasCe43NPdwe6KnKehxK/uPJrvr381pMBZnG6s0jz0ZVc0+t4ItDe2ILGolEmVXcPd9CakS/9Msr1G0jMldpjO26QEGB7twFGA5Pxmr8vVXGtxjg5GCsiWOyBqueVdZBfaODR3N28/uBKLZZMqWsAgsaNwK/r1Dwsa8PvLeLrdxPt4cCQQhKKYsDdrHdhv2wXVSJI/ry/bTKj8+cTV3Ht+EwIu8WmIja9CHqLXoxdNxBNV/B6hXgHasAXTr1WNDn+uzgA3fdlPfeyXeX819C4VAzjXWIczzf5Ljzurv8cbX0XH9xY68/G/yUQKzvZt9xWu8d44k6SiJEAYCmf11Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=w1F8nEYX8axxQwcoftLJiLVp6UNXkY5pTZKX9D7U+p0=; b=CXdEMoOsRfKexb6gRR77FyalDlkGQPeRvpgsqH6r2W568goxGfMgylBtYTWCYKb/45aY4KeQnTniJBB7xLTSI2mwMraE6rN/1vj28aIuyFKjtiIxoHAFkrw/+xccAOm/88ztgW9jrAIePIwJ6268hTJLUvDEP3xgk4dfTr7IINxtkDT4TTtqp/67GQLMyHTSLtecZOcMDydEtDyK1NDGyXAaj6ZIRwh7YqdLrTlZAIiNCiXDEDRyFCxNNdTlb//XGUS784Gf4Z4HTPp2fJPJkn1dHMsecJ7XYFYCzLijXSpt/J5M+p1gg8psMKac3VJnBcL+rnCPsTJbG/d4NIxY8g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=w1F8nEYX8axxQwcoftLJiLVp6UNXkY5pTZKX9D7U+p0=; b=AykTf6oxFuNu/nY7hrmusEPKingsi/w+4HpA/PRzFVl0LOY7He9EJxmT6RKqJhaj8nEs0017YRUheNCC8/J9JjelYCXN2Octnws6n708eYb2UOzGsZGG+CujOC4HTnERn+EAU1oi9Vx6Fad56TE2GnTR+TSAN5H9407v5frdrHU= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYRP286MB5341.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:191::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9913.11; Wed, 13 May 2026 02:49:33 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9846.025; Wed, 13 May 2026 02:49:33 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe , Manivannan Sadhasivam , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Frank Li , Jerome Brunet , Lorenzo Pieralisi , Niklas Cassel Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, ntb@lists.linux.dev Subject: [PATCH v4 08/12] NTB: epf: Document legacy doorbell slot offset in ntb_epf_peer_db_set() Date: Wed, 13 May 2026 11:49:19 +0900 Message-ID: <20260513024923.451765-9-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260513024923.451765-1-den@valinux.co.jp> References: <20260513024923.451765-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0130.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b6::12) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|TYRP286MB5341:EE_ X-MS-Office365-Filtering-Correlation-Id: 51e014ea-4d16-4a12-a47f-08deb09a4356 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|7416014|376014|1800799024|366016|921020|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: KoC8OuK6twPW3tWPGC65TY5PkavmBdruVLlfCp6TC1KujTP32N8uepCYmW3b13XFs45w8s0LR6blgWOAEMEFMq9wNIyUluNOIUxCeE+pd7wuKxbo358N4TcN4HgmuRXq2juwBg0OGoUM1vgrYswya8sWf67jR7ldZe15h5YzHQNB16zckI9fVj5kqALjPKKpMFfO1c5oadsLttifSzvnEEjLKvEtCgMpNLZrQnp27zU1bHx3a/lxIiY3Fyixw10a0YAYdXVTdUtlwx7olFHpXKhycDP6pYNjwUhaqaztF8yr7vYpHS+m3hvzouFKWvD4ZcmqXL47kswCXIyCWARo+cMTvFJcG6BRbeCdxQkknr9/BCYYNyD4vWAaGMqOsBFvs9Qgo+49SWM9SYl98yie2v8/IuvOzn8cOdbyU5bpdjWxVWCXRvTuWz538D/p5EVLg6o/ZEK8xYnsGeMHELCAubqkAembrJyXwwo4OxAXddJTyTi8PzF1UTXLYOwky7NqccN032D2M2hj4SgvoCzNwSZ2w7QJBwSRC6btGYH66adwMTYmScs/fPX8TCidEsda7ZvVBgJppe86e0VNickY+GBv/765LRf6bDYf7eBPVkc/KJBot+9r0qkVH4htQmkfDhlf7ehxd6P6P19Vzh6uc9sEqda4pZp/4hhXQWltYqKcMaS65uGlQKN6kHfaj38JRHKJChxwVSD0DjHaV1vDWsLZjcvz3RQkEHa8X+wy5yI= X-Forefront-Antispam-Report: CIP: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)(10070799003)(7416014)(376014)(1800799024)(366016)(921020)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?LMIByMZIdLF+C6TJhTyIpNoRqbTHJpcVM46a3S14XZ/nC+nZZo6kLHGCa1v+?= =?us-ascii?Q?DsIsUP+FNIM0A1XgClun/AomjE1DslSocMFLkE5quBPP6U4TV2jutYcBYkhP?= =?us-ascii?Q?Y9gGjrJs3hxLGIUrqbsFn+QggscpKx6MKicdH3QkKWv63IhiedKp1DAbZVyT?= =?us-ascii?Q?hCJRcODvP4Ka7r3/PWO03mnb3jxZsOxJm2ufiDzni0DtH9jYRi44GBWox8u+?= =?us-ascii?Q?668oDqTjfkX+4bn5jtJlwFFDv/Hza9wCjmNYKWsaYwa8/5lBUMI7B0PO4PBg?= =?us-ascii?Q?jr3V5Hj7X4xCf7UEWT9svT+uitxi3HWTOhNIz6YVPvkqqvKaZsF8WYe9VUu0?= =?us-ascii?Q?GYIZmCw9x0oyVdGMer6ID1etj4uJnYsLVWdHhjjzgG1JGbLPVf452Q363WKL?= =?us-ascii?Q?Vk/BhYKfPpKANR+x88wSmu6LKQxVej3fmomzNiHPOSrCLim9tP88rl9DOfsq?= =?us-ascii?Q?OB7KwiW2WgadlJkWgQ1+xsljuzY7UDJfEkY/q2Kphz7jVdx51aEDN5p4AX/9?= =?us-ascii?Q?SWIgdGS7XIFeL8uFAxOVpIXZLmXnmH6uB1ItoOKJnjkhXWM7cBhSjDvGS8lu?= =?us-ascii?Q?YECSHnVElW2nKm6eAeI2PxDpRz1BWRpZEKAeW/dIp3JaySt4gjVDfOml/ZEq?= =?us-ascii?Q?JY3po7wt99dZy25rdpNbGi8I/aXpYqUFIwnwCYM0hwG9AO/nvBAwTd7Nd6Qv?= =?us-ascii?Q?hnS0W1TaJxKbUQPSIshETOGMw6Het5zdbUZdXHT11+xFJkeGzTtWK4gvU6aY?= =?us-ascii?Q?U7aq4+yNSFZrfYsRVMNmGwXwg8nMKgNN50qlhg6znkOBHnfgEyCAKZ8bPvcs?= =?us-ascii?Q?TtwrsZ/mHFXmjzpLbaI0tu3RPoMjdMbAmoTGdtFwM670OGrP/E8TvdZ0FBZy?= =?us-ascii?Q?l2wQ0p5ah7IEQfhAKLI6WbfZHhfMNXTDxnAcdP4rCKtyluOsmwASg6gTSao3?= =?us-ascii?Q?hiTRNkrmuNuahJHtlR7R20i9kZSyvEl2RC2vjjWWbt9TONEh2iRjOWY1Pjjz?= =?us-ascii?Q?9exoUxphUdTcBWoXczgThGt0ySXDybHAKihr8dMBmugzbV5iQ3m/wQPfV0b6?= =?us-ascii?Q?tn65lidP8NT9hhHTmtOVybsqtBhhzMSh3zf5Y14SxuDZ1N7zTZX8s0HTyu7d?= =?us-ascii?Q?+RaDtyszQdIthpWKQnZUIPUlSp7L286xOYlv8d7NSD4R9YcrbA3yP1ewBlN/?= =?us-ascii?Q?aq1mRhR1zLDH/3QV004WTH1Br5xFqbeZVasigsKi5yLmMRMO0aRxfN7ZEKA/?= =?us-ascii?Q?ohoc2sxBVLvFho8PTQTuSRs1qz/fyi5w05CPRJ6IpAN/HEG6SsCvuJUTjJoP?= =?us-ascii?Q?kYdLJggM6jRM4B2EKQ5g14NAKFeyz7dnu1V2KkWwrZRqScfU3OnAYSbpPP6L?= =?us-ascii?Q?htU/DTTWwbsFnZvEk6cI5WdRcfsGXt+bQtlqV+swoq822cK33IpdV1AlsByq?= =?us-ascii?Q?xoS2lhEgmgtKi8ZjMujyejF1LNITFHZTAeWF9c7/QfdILpzq/APsW27CYtb5?= =?us-ascii?Q?Zjq+13TrFb3vBEK9m0oL2Nr4JAH1MxLcrQiRFY+yvfEeIsyZ3zDEPE8sNHlP?= =?us-ascii?Q?OTgVyS00HkqLGk8u4Uvk06MTmKy0EeWzwQO/G3BPZO0tv9YUeBpXJLE1uOEe?= =?us-ascii?Q?INTmNZYCNtEH48ydASzHso4ayvYN4InqQ6sEwK9SgoVVLKsSSYHD0b29Aane?= =?us-ascii?Q?hVnkK8MO2eQiXwkGKb8Si72dy7MjxJxLChdVs50osWug330WM0QSlMnPaW8k?= =?us-ascii?Q?h1B5iMWEh24v6wJGYJ5PI4twxQl2rP7yXV0UNyvfYhg4nTavZAEO?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 51e014ea-4d16-4a12-a47f-08deb09a4356 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 May 2026 02:49:33.4905 (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: 68VmXDrZ/Q4w+S9l/z/Tu6CAtEW8hYx4TyPYNiXCDwL/LDqf3euq3E26uByrD908gl6/X1uoxumB+wNRLnJjxQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYRP286MB5341 Content-Type: text/plain; charset="utf-8" ntb_epf_peer_db_set() uses ffs(db_bits) to select a doorbell to ring. ffs() returns a 1-based bit index (bit 0 -> 1). Entry 0 is reserved for link events, so doorbell bit 0 must map to entry 1. However, since the initial commit 812ce2f8d14e ("NTB: Add support for EPF PCI Non-Transparent Bridge"), the implementation has been adding an extra +1, ending up using entry 2 for bit 0. Fixing the extra increment would break interoperability with peers running older kernels. Keep the legacy behavior and document the offset and the resulting slot layout to avoid confusion when enabling per-db-vector handling. Reviewed-by: Dave Jiang Reviewed-by: Frank Li Signed-off-by: Koichiro Den --- Changes since v3: - None. drivers/ntb/hw/epf/ntb_hw_epf.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/ntb/hw/epf/ntb_hw_epf.c b/drivers/ntb/hw/epf/ntb_hw_ep= f.c index 8925c688930c..21d942824983 100644 --- a/drivers/ntb/hw/epf/ntb_hw_epf.c +++ b/drivers/ntb/hw/epf/ntb_hw_epf.c @@ -43,6 +43,18 @@ #define NTB_EPF_DB_DATA(n) (0x34 + (n) * 4) #define NTB_EPF_DB_OFFSET(n) (0xB4 + (n) * 4) =20 +/* + * Legacy doorbell slot layout when paired with pci-epf-*ntb: + * + * slot 0 : reserved for link events + * slot 1 : unused (historical extra offset) + * slot 2 : DB#0 + * slot 3 : DB#1 + * ... + * + * Thus, NTB_EPF_MIN_DB_COUNT=3D3 means that we at least create vectors for + * doorbells DB#0 and DB#1. + */ #define NTB_EPF_MIN_DB_COUNT 3 #define NTB_EPF_MAX_DB_COUNT 31 =20 @@ -473,6 +485,14 @@ static int ntb_epf_peer_mw_get_addr(struct ntb_dev *nt= b, int idx, static int ntb_epf_peer_db_set(struct ntb_dev *ntb, u64 db_bits) { struct ntb_epf_dev *ndev =3D ntb_ndev(ntb); + /* + * ffs() returns a 1-based bit index (bit 0 -> 1). + * + * With slot 0 reserved for link events, DB#0 would naturally map to + * slot 1. Historically an extra +1 offset was added, so DB#0 maps to + * slot 2 and slot 1 remains unused. Keep this mapping for + * backward-compatibility. + */ u32 interrupt_num =3D ffs(db_bits) + 1; struct device *dev =3D ndev->dev; u32 db_entry_size; --=20 2.51.0 From nobody Fri Jun 12 12:46:56 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11021141.outbound.protection.outlook.com [40.107.74.141]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EEA4E3911C1; Wed, 13 May 2026 02:49:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.141 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640579; cv=fail; b=i4kYbEDdhqcK5EBREiSLW8QFTt+FGF8jqqRj4PwrsOZu29GdNCOkiyLoNlIFZHNRQmHMqkzRLcP2qI/4V0fk3LFX+sEusXuLKnNH6RFbfS2b1/g+aGrBLbg59AYHyPn8qr6dC+aCT5KrbtFPI4I9de+VI+QmlRm8CMIJmqUHzDQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640579; c=relaxed/simple; bh=HLNHMqc9p1a07F2u6h4tcUwtkJx+z/vXO52UNO3sME8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=izpLw4hqvfG6Nyhi/M5ktKr3gJRlEv402jcwdUm3+wxXoT8l6YkZoYqHgK6upASuzwx9MCGy7whbmogNaICp+G9IPEGRwNYy7WF5va36RswtRdrEpRXvqd8b6dZPNVhJ06ewxeSCD1+SmodO9FmuKIIVZUW5s95RynRTPgqvV9E= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=nsAVDmM0; arc=fail smtp.client-ip=40.107.74.141 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="nsAVDmM0" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=a45p6EzBN9JVrnmtXkFxo/MhMCLgJhVTRsyRHn/1Jpg/DuvIJlnn8FLXfSgb0To3oUq7ncXQ6ee5kFEX8pimM9MYsKQ4sYgHOpOd7RzBqI5d1vPwuSqzuf5lS/Tx9qUiEZf0zU13HD1bs+YoQPmDsftRF3FOfIu8V0EW5A7Mp40qbLGHJ/8Ce0tYAigdAZnk0sf15p8AFZr3pSfMVa0VAcClI4J4tCMvbTBuK13feEfJAnZIv8fYL81mzZvAmYlrPGsepP3sQ5szpClyW4Wvy6Sfd03OQLeiQbAA0bVAjmKCoz2vcbDjdv/w6m9jFAvQXuOgKK315EGUwwW8Qzv4Ug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=zt/2gZEHEcFJ6VfJYLaOdL44dg0jQNSThMRI5XoHRi0=; b=eYFoL9pKTFUmZV7bgFfsU9YLNThSSDjXO6DNsbtM3zadCS4U/3RXaefc6LEIaF79V3wJUIit7iDWViwFFG/ixuDgAIz5YVuqx1Oa539+c3Rawe1qdXplMErccX1ipkfnsem+or8vPX0uSTVuyTwHcizkekYUJamGo5zb49nmVwwlCWvqR9vhYCmLrg4WTllXAOQB8BBoiDLFZYupm0+R44zzmWE24Enjvt3kg8fM2GOaA10dl2KrbqvLQyAiv8tsQ4Wj2GJgHGBfyFr1JQ1T6xbLX41NEo5o3vpnUcu9xJU1IvaS4GFbfKTY38Stn5+ufqAORKOZfJZjH7pfDtmOfw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zt/2gZEHEcFJ6VfJYLaOdL44dg0jQNSThMRI5XoHRi0=; b=nsAVDmM0E4gsKunFu2cACkg/DC/E44Rz9pO0lXgAbd49+jE55zMRfy4GNree/Qw8dRCL+++h9Y5pxWQLcRqrhvCDsekm4aiVCpMi4DQL4XuCF0I1Hf+XYKJdVVVV2tZwdg4Q5Qpa3dUChnVOcJDNSwz/s2WKvV1+kEkzeXpf7sY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYRP286MB5341.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:191::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9913.11; Wed, 13 May 2026 02:49:34 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9846.025; Wed, 13 May 2026 02:49:34 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe , Manivannan Sadhasivam , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Frank Li , Jerome Brunet , Lorenzo Pieralisi , Niklas Cassel Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, ntb@lists.linux.dev Subject: [PATCH v4 09/12] NTB: epf: Make db_valid_mask cover only real doorbell bits Date: Wed, 13 May 2026 11:49:20 +0900 Message-ID: <20260513024923.451765-10-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260513024923.451765-1-den@valinux.co.jp> References: <20260513024923.451765-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0343.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:38e::11) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|TYRP286MB5341:EE_ X-MS-Office365-Filtering-Correlation-Id: c40a9ff5-98a5-4b2c-9c3d-08deb09a43cb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|7416014|376014|1800799024|366016|921020|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: vXAqga/8HdfKVLuwfmm166Z0RZ3uWAW1LlcUMawlUjw8zfxcSMOwk2vC1atYk4qsYfivGApmJQH84v/viTRuENPenGosXn8Sk4cAk4xW+WANQSqKlUBzsas3NqPclm2iccMFuFjxPYx0+ZbE+UOm0bGrFi2drHBjvxiEEuN397iXfwxTFNB5xXN9bHZE2i6gB70NdORzq0HLMeAlbtHzlQX6IRH8R1G+zyMYvOcpe/O/Kc7I9MnRYsp1WyPBZg39Zv2OlxMYaD6EnXDGkLwPThyPThnhM/+Qhwa+UCk7tVa+q9Dx3qhRvQM65gvkaPDfVF8r7PYkFSL9kJ+X0fIsyENxs7HjMFt0alLRsQvbtq4Qwe6vHY4WlDqxJ8X9GislG4UBqSwALcrG7d5NTkIG4ZeLnOVy7v0LtlbnszsgWLjPMUWc8fQ/xzoWkSqcuRKPwRa25FsFPREddhIUWwmXzie4gVAf4BP6ZvE+DWb0KsyLajty4PvbORmaIYF5tY3zYN4QSXQWWIMGQ4owK3yNOGf5XxKxxm9ez+NmAAML36y59DmitMbRuZD86r9mt4MCFdOsbNrcQblEQRaBCwUlX/MMDVb/u1YTkvTjsndOVUyg5JtqXBfrkB2oxoBpxFGNEmgIDpLQLEBnufnKvz5CQ2CcpYJ9kicEiDFad71e91MgyfQB2vGLatfd12l3IFaxOs/lSUYvU6V2KQXeBsUEczyRoGEb7pz4Tubq7KNjaz4= X-Forefront-Antispam-Report: CIP: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)(10070799003)(7416014)(376014)(1800799024)(366016)(921020)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?HaRwhb4sB1ogxtUx0zO5rfV0nhItlm/PlgNUtiWrxEXHZEXi+Wz2FzKg+Thr?= =?us-ascii?Q?9rxxQTNOAKbFuzEbkWF/fE4qzdnnPvgi3/zDMSYFSSIqAg4tgktzKUOwjcbP?= =?us-ascii?Q?KbOMpMBWLJBxsUTL4p6Ryv87mNO4Ql2Nd3+YeqVd1WnbolY4JGmE9QAChsV0?= =?us-ascii?Q?UrXGAuPI3SlbROVr8Lh+rsUx1TK26bbUnzlD6BWdF24SkO9dlkNDpYeiCOON?= =?us-ascii?Q?KjeVGqUk622JTvawq7wIa7KMXeMm3k5V693nj4vpdfJ+6ihmhybHqqXQMzu0?= =?us-ascii?Q?JFJ6c1gkImCGRSEOjrF1ImdJC+VnJXDnPArwSbaJEOpceo2UR9NdPVLwjO4f?= =?us-ascii?Q?YM64Y10f2I6w+GdduOv6XPHm2A4NKdbuK2wfZHI2wgNmFate0p9ZpjBkYtPa?= =?us-ascii?Q?RLObZXl29D3KFhJbiS6mmoQSy/WkYwO5N3xAe3VN9y+62x/BLQ4fnQiBmmWR?= =?us-ascii?Q?iqxQdfHHWPfBqZqTyHYeXxLpCOU21lIK/6NuzqJ21qNNFhDQUymmMT4HVoST?= =?us-ascii?Q?6Nqkc0A+8FsZU8V48WkQcqeAJjuj1aYHQOsw+NWTMqku61tm0JWOYo2vcdJf?= =?us-ascii?Q?8e/XONUdK/80GBlsSLMPPKmT7hhXBwcNWTQ6ZrdM/0dmbc3jtdi5yCIeVwfa?= =?us-ascii?Q?UtPASQdAvq6damSG4/kvBY+QyZSjuuxfb/+MwnLt8ovltFU628628i+AEEYe?= =?us-ascii?Q?5bGyzPSFBb0l7juAVUKQPOiW90u5DGb2T3NdG1Z9de6Drhfbkqyj0IITDYSL?= =?us-ascii?Q?QwjHi5GtsjAHMGJFGL9szoyvj3dKzp8E2BsdNxglf0t+XTshuU5c4Z2gZLvH?= =?us-ascii?Q?FMbuladcuHNFR9zOYl7eZIyGMmwSJ7b/wPDxN2yQMQvZh04e1Zfoo2l6wdf+?= =?us-ascii?Q?WUTdlkS64ebq6g08+sAFIAneN8sxXA0clYJ7tdcDFHUsXGYeRNjbUyKCJd0L?= =?us-ascii?Q?Zkh6E+OHjJYrmSKtbUIDkL+twFWos0u/b7GI5vJhj3aGuZcPsyiucY7rBWg2?= =?us-ascii?Q?sahZMk2gbJGfP30jDoWlWbzI9YwhmiVEqyFFsfvsGTtT5moPIaFfbYojIXpP?= =?us-ascii?Q?Mm1ZWyhyFIxgsS0VvhnT/XDMvJG2eXbaVwURClQP9sEQVdGQimyHQ6QpyYED?= =?us-ascii?Q?D+3Cu7rxuqcVt2/77NzPi/CqoLYKJW7oUm2CTePyxCYlxisyEvbk9dvxQ3AY?= =?us-ascii?Q?GazYJLpkOunaR/PDTmhjCma3DthazS4WFNRKjVQGn+j7Pb08sEQY9+YWZcsa?= =?us-ascii?Q?6SuoaV7Gy2v0KAOGVivL4qFgP3GhixjWsfrSvZ2aMRCvSO215kg5v1ZN2NzY?= =?us-ascii?Q?92rxaAVL+58kBlpfXOEZaDCyg+JTHpyUb5WfwZ8+WBSLogEWEuBukERpRNpg?= =?us-ascii?Q?gFyzCMeNXasyfx80h+3O9ns1GCWa0gMe7lrNHX5mf3BTM7HQnqY9ESPEWsl9?= =?us-ascii?Q?J1KgTv0CT+P/9jKPOBZHESON2tml++zbFJUzJznDH+DqqlkJdKwjcTDzgPel?= =?us-ascii?Q?EUtIyFSOzI62ViUq2zuTe3NwJnmC9x1uavFARLJu/OHU+fbo26jyN8xh2Rap?= =?us-ascii?Q?+untizlK3HWMpMSn2BP06Wn+J831GMufeUrFzoVLfiheq3i2f5w++pHYcAot?= =?us-ascii?Q?cKc1CuS3+Ms3SHbY0bWQcInnhpO0nHiWQRpL84pwqKc+4Qf9TAOAK0aWfpaM?= =?us-ascii?Q?qajwIvcKxztTgkRry8c4gC2W2AnQejE7Vc+u2cQ65pHwfFb13g5sZEMmX/E7?= =?us-ascii?Q?d/h8TAipYpn+kcVuVetT3UGF1Ymz1Wa3D4tebrz6VYIlwNZvbwA9?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: c40a9ff5-98a5-4b2c-9c3d-08deb09a43cb X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 May 2026 02:49:34.2554 (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: rnZnRFhtL/RKNxeexCaQVraLkwB7hyeXdNSjRC1MQI3wxRPkZSYlEcvnXH2hssQ4mCqbgqlsASRoB0W7vBEvJw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYRP286MB5341 Content-Type: text/plain; charset="utf-8" ndev->db_count includes an unused doorbell slot due to the legacy extra offset in the peer doorbell path. db_valid_mask must cover only the real doorbell bits and exclude the unused slot. Set db_valid_mask to BIT_ULL(db_count - 1) - 1. Fixes: 812ce2f8d14e ("NTB: Add support for EPF PCI Non-Transparent Bridge") Reviewed-by: Frank Li Signed-off-by: Koichiro Den Reviewed-by: Dave Jiang --- Changes since v3: - Drop the post-init db_count lower-bound check; ntb_epf_init_isr() already requests at least NTB_EPF_MIN_DB_COUNT + 1 vectors. drivers/ntb/hw/epf/ntb_hw_epf.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/ntb/hw/epf/ntb_hw_epf.c b/drivers/ntb/hw/epf/ntb_hw_ep= f.c index 21d942824983..c0bab3292075 100644 --- a/drivers/ntb/hw/epf/ntb_hw_epf.c +++ b/drivers/ntb/hw/epf/ntb_hw_epf.c @@ -580,7 +580,11 @@ static int ntb_epf_init_dev(struct ntb_epf_dev *ndev) return ret; } =20 - ndev->db_valid_mask =3D BIT_ULL(ndev->db_count) - 1; + /* + * ndev->db_count includes an extra skipped slot due to the legacy + * doorbell layout, hence -1. + */ + ndev->db_valid_mask =3D BIT_ULL(ndev->db_count - 1) - 1; ndev->mw_count =3D readl(ndev->ctrl_reg + NTB_EPF_MW_COUNT); ndev->spad_count =3D readl(ndev->ctrl_reg + NTB_EPF_SPAD_COUNT); =20 --=20 2.51.0 From nobody Fri Jun 12 12:46:56 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11021141.outbound.protection.outlook.com [40.107.74.141]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E8F9E390606; Wed, 13 May 2026 02:49:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.141 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640589; cv=fail; b=NN3Q/bHmkC579c98uAyLXKuynz7AwXoaLaF/KAkSzVp/24t510GGL8tjXEXFwHGVngS+HrAw6Luf4aazLV43Zu40K29PhqRM8xY5WO+jrKiZhiRN0lPRwt+RLEPMFJW/GlJoHrVS30u+QVvLv0QlLDy6cIR1GRRNFBYtLRxsumw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640589; c=relaxed/simple; bh=xSd8lOVWsRQNtitO6qlOasBMnElJlu8Bpnh4N0itxmI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=b6+ndphllWnK9NxWOaItT3CjdVqMm+L+j9jLaRFcOXfdexuD/j1QkwYAHfc9C3mMiE1YVuivEX8b2tjRYd1tTeaJF4AID+H0u0eLRx6SBrG/QuxUzT6eDykyTXGIgMe9iiu22qIvnG8JDieW5AlNihPtW8mooa0iasi9JtqdBO0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=jeN+aeMv; arc=fail smtp.client-ip=40.107.74.141 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="jeN+aeMv" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=L1bPI7ChIgaHfVTDPzqqKocq0GDpTSAIFRD8gSdm0a8L5Tb+HeWxIV+cgu9vFq83JmZjiuiPzxzngxDS3L1p1y0aKjF/UKjCEQHBrECRUKzi6NSncL/Z72wHpUbjtvfPTaFhaT94xjnmpt38kj42umpA7FY1gbkumOYm/LTb5MnF/b49/4dvBK8AsiLgiYxmbfFTXQ3RsWmSUsdLA4Lj0/GVF3FjozJ1h1f3uxXm/wzzL/gh//l79ZYxemHV060lMOwnQvt6tUwLgQeZczEAJkhb7eBTKFX3bxbFUgQ11JrzahT9HI13b/hViKKfhxsMgrxbU1QcyuexIoHrmdqSYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=ICftA60HuY7VjDTJjLlfIAwtcws2rXGNj1ohtNRniOE=; b=BkxasBxrwXwdawHlyo28crD9vXGTaUBx6L8cEj1z7jAKRE9B0tuZz2ZVUSAfzf36aEy4kIrETjOQ8+XtoDHq1OIgCfDmlN5SToza6huR4gZYqV8QjTCZRN47kEHIqJQXQ7LN6N2Osn1Nt26WfcV78S+LuKBaqZga875wi91cZWwwftRGhw2Xkvr6tfK3dKunAv8IbJpGO4wcCKezs1rGkU+mNDCldhI5mLw6HH/XnUN4Pe1d3yA4a0VX8oudPcVqIz5yyfB8xcPOCPj6pSerpKjyEPtE80lCoTqK8HWPWkBe1IxnbC5cuUi/ticLrZCEtvqvG4Ugk5UmO0FzIYx11w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ICftA60HuY7VjDTJjLlfIAwtcws2rXGNj1ohtNRniOE=; b=jeN+aeMvKkcnrRI+++j5hgmZd0jSVlprAOR23gu5/tXzkpckcCfyamPJXTkjSnDFSAoN3jVDzjzyVdQvinagSp2hFZuYKBgTArgJ//EQlLpaLG8J2rSZKxg00oZzIXhSdNyP6qgdfh3jEQKruRnnIuzSBS6x+K3q6wMNkijlm/0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYRP286MB5341.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:191::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9913.11; Wed, 13 May 2026 02:49:35 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9846.025; Wed, 13 May 2026 02:49:35 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe , Manivannan Sadhasivam , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Frank Li , Jerome Brunet , Lorenzo Pieralisi , Niklas Cassel Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, ntb@lists.linux.dev Subject: [PATCH v4 10/12] NTB: epf: Report 0-based doorbell vector via ntb_db_event() Date: Wed, 13 May 2026 11:49:21 +0900 Message-ID: <20260513024923.451765-11-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260513024923.451765-1-den@valinux.co.jp> References: <20260513024923.451765-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0085.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:37a::15) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|TYRP286MB5341:EE_ X-MS-Office365-Filtering-Correlation-Id: cc370c27-2ddc-4d20-83ff-08deb09a443f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|7416014|376014|1800799024|366016|921020|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: YSIGS3QGV0b0Or1ImMKLdoJrM7QtvoqXJL1x1AjbteMkTMtq91kB09Om5WC5LTNQPy/i3tfMNVWmtfkIUK4ZlJt5WSJoIwGsgU06AdRx6gcFs7MaoICGTBcJEvyRX5rmeKHTn1/W3fOkG+BR9NZsFk+vwQHFgXzUTeBP1beAIWZ1/1vLZKHJdf4ILre1Ap/cnlRX/XV239BJ9S7GucIsqhVfjSXRJ6gnNLCuzI2EWQ5Zrq13ovzpBVJSl2HK/0qMFryF3PDNdjAIT4pEUAV8ook2rIsuciVyP2Kn9fBy8IkiSQ6pmOja3z/5gyXnhdTQW3CdKGqJ2oIsVSF9E5ns8ttg1Hpwaj9UNIkY+xivLeUx0S1ZKhiIsxPT+kG+cMmixU21416IrFGTeDLdw6gEZ6qf/YtsVulqGJKeNIEJ183RYWd+2why1A0ZwHyE24qzJvzMX1OHC9PEW3E1/POdAOOflBou67m8REXF8pt3So7CKXrkjfYJXinoWDnsBCsHDVDzY1UPJf18GTHPwYZMs+wTW1jIUKfdZXAT/bZKgamXX1Wuurm3/bsXSCrFGyk5INeqZia4CBtcR+i7c2AWYWhXI3XsEqyUKhhiFFSiqDDuYasRgfPRjyhpYoY6ITjynr2M2x/DIGA/nRDrYjKS3NYSZMDtKq615jR2F9GjtHT40h/BARDsfOtPaqzh02uoDpsMgA2G+xxY7dkB3zS8vWGpl6+3JfKcvDbc4FAAkQc= X-Forefront-Antispam-Report: CIP: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)(10070799003)(7416014)(376014)(1800799024)(366016)(921020)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?23z9RVzagnkz9RZu+P9ik2xS/irzCMhwLk6YqoqiIm0TIyNiPFTkSrBfqhz8?= =?us-ascii?Q?LJXQXWLhVFBQWJaPXzkrGmFeza4xOSpeu00YjzIPtFQA8GnYh7QGvtuFQeet?= =?us-ascii?Q?vddUKknbnM2oY8Mga3Ab/AgjX9j2jz034TW4FphJrvZBrbugTgRyfNo1QMw/?= =?us-ascii?Q?JqhGKfFNNNFtbrRLQ0NRG5AbVWov6ltO/crfxk3QGX8ZhRh3HZ98dSwazH9z?= =?us-ascii?Q?zPTp94RzCbGO6hzj5J0iwvwDQOTrDdQ6Uf2i03NCfXJLh7rQfuF1lmolAjNi?= =?us-ascii?Q?FXoBgB9MEvpzTIg+vbGQXjQp8LBEgYdpIzAnaO/jGlYMqO+1LOgo7KIGzI8M?= =?us-ascii?Q?84SJFufRmBjgT3J95hHxB/iSNs3phy/OreEpqeIHtqc1bWwExXl2b2A9PA9E?= =?us-ascii?Q?5u7w+gUjFPvRnM+/X7Pzo61OjCVoBmF94D2J1sY1RgX6smWpgouA/UrbhsY+?= =?us-ascii?Q?lNQfVLdrP5qNNbrJc9bRwTfhm9EnUyAVFMGBGXEcq/6FOToqxeC+Wq6RQp1X?= =?us-ascii?Q?NYhY+t2156OOa6Ggfd/xRSKaMk5gpuS9SFE8+AsQezKd/z9w+BPxuIBSA97w?= =?us-ascii?Q?hDhPGDH9SaM7/WKo1Kw3BV2L8ovX/iGPHwegPxZhVWrES98UYKou9ADiLDXr?= =?us-ascii?Q?JPewd9JPo0AnDyh+08bos66FJRkkEjxa/raB9b2TcP9PxUyKou5WWqZKi5vW?= =?us-ascii?Q?ozrDvcm36U6BKseYy7N0nqCNBSTXAOzVfGUmVLkWAvuosp/yV7ok2esMPT59?= =?us-ascii?Q?q2jfqch2evUqC6Oaf5GX0s6OsX51srTZEfbbQiY96L5h404BE1sSHoXANmAM?= =?us-ascii?Q?X8pqlhbMR7WyumRQOeL09i9QURZ74U0qTgmJ/KNKuVG9IeVUMLS7TRYICqDL?= =?us-ascii?Q?7RWQMB8mLNGXgVxmRfYSE5P+WWSxLulcDLJipj+23W8haZ0/BBOkcu0V8Af/?= =?us-ascii?Q?kzBkUmwvYrgENB7oF8gQS4R6p/LgU2gBmQSbWMlVMoPyKr8idC9QxBvGf19e?= =?us-ascii?Q?yQuptlvH7KounTWW0UgI8fVRtC2+rMYqvrl7wF0gy5Uaul1zQGVZtddnHGFu?= =?us-ascii?Q?cjAzVRlClspbJwrMXn2xM30wMz9E3d6g7iOnqBdMvmptvREsE47ldBU8xP9a?= =?us-ascii?Q?/JQtWw3jqpf34w/h+JDnpEBxMT5P/NglO8+9HETiDQG6eQ+D/pKM8NdQ/clV?= =?us-ascii?Q?X1RKqrN6mQEh8sbwXQadH3Eer06+4lJ1w4EKXvQaFjltnuZ9WP8hmSTjynGM?= =?us-ascii?Q?UlhqVbKtQzJ58TulzQJkRltMOqXANzlVzi0zVbj9a+HRO6dw74gDPVXZTwuX?= =?us-ascii?Q?I0kt0y/uKWpUC6L487sxCYQ6uYCa1EI9LXNiO5v3oztRoYyj2FxluVaCetGn?= =?us-ascii?Q?VRAN+Cw93vMSQv+pVoBUGCZsRTi9rE+aaxVOf2aD2cOgHBm7uRyBmm1jF3aa?= =?us-ascii?Q?1Kb5IWK2F/qPKNg69tXf+hEI0fH8v3F5as+QTccMOa9ZI0zfoCFBLDb4wvrr?= =?us-ascii?Q?GKI2lcGeD3MtrYjKeRVciC3u2VysdwE3D6zQN8x1e6YKCVdhYCxYB9ZoeGUy?= =?us-ascii?Q?wfh6tYea2rAj6GquatmCuCkm9f7QmiXP+XLHhM8rQF+63jQeT1QEiqufXQLd?= =?us-ascii?Q?AXYlx9wizMLTjA4FsAIYt7CFjQB7gNWdYCju8obLiz6migx3KUpNZxvZDub6?= =?us-ascii?Q?zd0rtJjSDYRpzRlo8iaamtddj1FivWJidL/7oMaib5g3Rc59ELjXpabAnHMW?= =?us-ascii?Q?OCx1jO8RnbCccwwznByAjzoQnDUElKwoRTCPwhB1bCvfpp7jmo+K?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: cc370c27-2ddc-4d20-83ff-08deb09a443f X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 May 2026 02:49:35.0187 (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: qoduH8NHk4eLZ6LuQBcw00WoQ7gOfJ4RaKs0VJSRf+qwwVde1Sry0L+8NVGZx5xvdfQMovI0aP03dg6zsUk/ag== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYRP286MB5341 Content-Type: text/plain; charset="utf-8" ntb_db_event() expects the vector number to be relative to the first doorbell vector starting at 0. Vector 0 is reserved for link events in the EPF driver, so doorbells start at vector 1. However, both supported peers (ntb_hw_epf with pci-epf-ntb, and pci-epf-vntb) have historically skipped vector 1 and started doorbells at vector 2. Pass (irq_no - 2) to ntb_db_event() so doorbells are reported as 0..N-1. If irq_no =3D=3D 1 is ever observed, warn and ignore it, since the slot is reserved in the legacy layout and reporting it as DB#0 would collide with the real DB#0 slot. Fixes: 812ce2f8d14e ("NTB: Add support for EPF PCI Non-Transparent Bridge") Suggested-by: Dave Jiang Signed-off-by: Koichiro Den Reviewed-by: Dave Jiang Reviewed-by: Frank Li --- Changes since v3: - Ignore the reserved legacy slot instead of reporting it as DB#0. - Drop a Reviewed-by tag due to the behavior change. drivers/ntb/hw/epf/ntb_hw_epf.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/drivers/ntb/hw/epf/ntb_hw_epf.c b/drivers/ntb/hw/epf/ntb_hw_ep= f.c index c0bab3292075..7b0fc7ef00c6 100644 --- a/drivers/ntb/hw/epf/ntb_hw_epf.c +++ b/drivers/ntb/hw/epf/ntb_hw_epf.c @@ -81,6 +81,12 @@ enum epf_ntb_bar { NTB_BAR_NUM, }; =20 +enum epf_irq_slot { + EPF_IRQ_LINK =3D 0, + EPF_IRQ_RESERVED_DB, /* Historically skipped slot */ + EPF_IRQ_DB_START, +}; + #define NTB_EPF_MAX_MW_COUNT (NTB_BAR_NUM - BAR_MW1) =20 struct ntb_epf_dev { @@ -334,10 +340,14 @@ static irqreturn_t ntb_epf_vec_isr(int irq, void *dev) irq_no =3D irq - ndev->irq_base; ndev->db_val =3D irq_no + 1; =20 - if (irq_no =3D=3D 0) + if (irq_no =3D=3D EPF_IRQ_LINK) { ntb_link_event(&ndev->ntb); - else - ntb_db_event(&ndev->ntb, irq_no); + } else if (irq_no =3D=3D EPF_IRQ_RESERVED_DB) { + dev_warn_ratelimited(ndev->dev, + "Unexpected reserved doorbell slot IRQ received\n"); + } else { + ntb_db_event(&ndev->ntb, irq_no - EPF_IRQ_DB_START); + } =20 return IRQ_HANDLED; } --=20 2.51.0 From nobody Fri Jun 12 12:46:56 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11021141.outbound.protection.outlook.com [40.107.74.141]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6FF6D3921C8; Wed, 13 May 2026 02:49:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.141 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640591; cv=fail; b=GivLOXXSGgHkTmAWz8blhgaQ8HypH6m4qfMUHZBmUGQ2jX2oLsQ7KPqusbJT0VZD7XoXcn/Wo9VoUgCnoYygaKPrPyOKHA0zSDBOT7D0Z/YaW0ODY0IY7BiKm0J2ILFsvz0NkMysePfr55AyCShOTpatTCBv6gzKEmCUk/EEdaE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640591; c=relaxed/simple; bh=WjglBI3JqJxcOzocy6RXnF9bDxb5alQnNzUEOZBFD64=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=aqH066Lj9YAi1ZVWbZzYqHHZJGUz9Eo0KwTXRN91p3jcyEZFKkhOy2Fxne2yDL1DvBTEKW8FSz0Hf8LgqtX8ineCJvNQFQJMESWH9XBsrXRF7r0TqofLwECoGLQtmzpM2cntzUHb2ngTlyQDpajUBx0Qq2NvHFdSa43mkK+qIhU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=T4QgNunX; arc=fail smtp.client-ip=40.107.74.141 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="T4QgNunX" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bmPBcgm0DSe7nAUSOYx7+hv0fxlGeU7q2+LA4ggSUnJ9mJ2a15lkF9lbXtczFFenCWVYKYVC1Ud+VlakDxrF1Xb/n1T+d1Xs2Om2zCG3+uUwcsZmsbuTdkk7MoPKiP2MnDpUlDr1Jlil2jeXDSCYMt8tGjlEm0TXxPSVa0hR+x4yglfI4fcvRZZlbXVvPbyQkeRY3Qyk6l2K/qTL9HcGfdIi+KXPzNcqpPDyiZR1bmqG4t0X+DCnWv54OT7eTPbbMyxB9zhpV7uVS0GFk9S3z4Q+wyDsae/1SazoLlzYmL6+MdcHYqrudb0W8+pORM86nKazMBpU0+viXjBJCWUuUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=ZptvUX83CzAg/Zs850886lNM+IoulXKUFrzZKBGkB6o=; b=Jl+y7M3c6t7q1I1aX1phWOnlSdM5LdUUMfVjyO1EXRtsLy+37KkHfMTCpKJ7wrxPPzGbPshDy6UhBhV1kwxECmrj3ARGDgF3ANU8znwYD82Z+hLKSa4ru7UNYejmCgqXmzQ/a8UWtqmXXg1YoBat0ebJqIO3Y9RjnXykdwRABt1lRFA7AsUVYNf0LVyX5jluDxRZBHCyncXbi4+EgBJMMwSmmjnZKPYcHbkQDEl1fve0xkTgoSYfSTa4qVCQGduZIgWYYidbgCAlfOVJ54K2kjeEv/v90WXZN2abfjXzqby2sGp4JP8uYoAAIaIqB0ZHpMuea+GZdL0uYiyhIqjssw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZptvUX83CzAg/Zs850886lNM+IoulXKUFrzZKBGkB6o=; b=T4QgNunXCkdYF8K6roVg5PNU1akTGBr1nlAqS3DdyV+E2uxKRkcbabS1mzictjs532uC1S0KOFiMrCP85fwmr83PQ8BgJOPRnCrHH0ADdScE+QnH2PwiJXIirQNshBtPmhL6gsByUdYJWGCkMr+d69A0HtotPJrlPDINaq3sEqc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYRP286MB5341.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:191::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9913.11; Wed, 13 May 2026 02:49:35 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9846.025; Wed, 13 May 2026 02:49:35 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe , Manivannan Sadhasivam , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Frank Li , Jerome Brunet , Lorenzo Pieralisi , Niklas Cassel Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, ntb@lists.linux.dev Subject: [PATCH v4 11/12] NTB: epf: Fix doorbell bitmask and IRQ vector handling Date: Wed, 13 May 2026 11:49:22 +0900 Message-ID: <20260513024923.451765-12-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260513024923.451765-1-den@valinux.co.jp> References: <20260513024923.451765-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P286CA0094.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:369::13) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|TYRP286MB5341:EE_ X-MS-Office365-Filtering-Correlation-Id: 2d2a6755-ae9e-4adb-4dbf-08deb09a44b8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|7416014|376014|1800799024|366016|921020|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: oWNEBasdmYLn5dLzajq3ll7R0U2//iNVkTQzrMtFSevmoB0jvd3a1OoJNggqVCK5wHSQgTqBGdK+s8djzgyJgr4yJCX0pkDzdFE1UI01hcCg7AVcRill+RLxI78FVGe96ylJ+GFjEvaVgzNbouUZ4a8hsCJJiFmNf3s/jmUlnGtkf8tt2IyR3E6o4Fgw/wYmKLHjEpiMTLUeyEYh+9UGEuMsEq7m8oyHen4jBvlqoWx4cgZRlc6sEAohykFM1zJ86nd16q6e0VIP6mRs9eI0LAdt4Umlqc6sIDeLop++mV1w1baQpWAZYi2U980wT8cVl/Pmx6HI+oETplL8z2zPZTYGZH14frHyceQcBDU8p98uC/it5mpbhLFdfuoOK5wIpyBSbYCkAS5rrhTL27AHY8oAQ6ngdyXaI7KebJUQjP7w7zCoNgJsMxK1Z+8ofhLKhVFAtkoEynySecKXzpNTuS3RvvVV903w+UPkWHW/fvug5TOfON7d9KaMZ0Nam3H2Mvb/xf8BDEJc5caqqR9q04rl0LC98O7pan6wWTCI5FqhEEcsEDpDFCN7xLzoL2ZCIpS2UaEYgwlfw08Cjkk9Yrm+CSHkO0X9diyVukwYlhbLzELicEChpl05HX7D6ayPsNZrqP9e9YULo3Gei9ZFmwE7f9HTcKFPyojxv5ZT8G+MoJzGYhOzVcWPovq5MKXNc2yApFF2DycQoILcErwi4oB3rAF6DQ20XdwU3Z5xJ8w= X-Forefront-Antispam-Report: CIP: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)(10070799003)(7416014)(376014)(1800799024)(366016)(921020)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?a0fd+p5GGHN5ch7WBbFfabsCqVXd/Mx5efdS3TBAfIBpsfT3KQ+JcYxm8JmD?= =?us-ascii?Q?AOK4pgOPAmO+uU0GJiAhucX8niC8l27mq38SmTk3AwZWDM4W1sBdp/OMEM//?= =?us-ascii?Q?o7YYf9SF1rIv4ub7hbLF3m5SOV/mK0lAisoa2gHb2ZtGu8g2YCLXaG+M0REs?= =?us-ascii?Q?EP5eLhwKmL4/2b6Tr/ERUUokiVk70QL4dyUhVxl6FoYaRyNPL2Wf1A/okcty?= =?us-ascii?Q?aStlUB45nYjsTG7Hk603yTGXAA+ECVdh1rmQJOrRgulQ0fKZsOkUKgZMGyn4?= =?us-ascii?Q?bMweeY/Rc58TKPhOBsyABGYOS3iV/Q8ohSA1UsdI5AviMQM1biCluXJMt8HK?= =?us-ascii?Q?DWR7FvxztR2TDp1Vzhs1KPA2LyJLk3Q4kLiaiuHCBpc6yePaqsRcd2sQ89mD?= =?us-ascii?Q?O8umZDYazeAMduzYWBSWsldYN/iZfiAt5kx2Lyhu/qCPQzZZDedB5eEP9jqg?= =?us-ascii?Q?/fXXsh8yoWDEkbQ+UN4aI/kc/skkRTB8AHG+AQRtFUEr4rcphPy6R5Y8eVbs?= =?us-ascii?Q?NKFWVYJz1myFGWcxk73ukDfqyKkDAsKv2fCTi9taMgdzhtcTN68ruDSE8VBQ?= =?us-ascii?Q?Fo0xkNBoUUHIgQQZGt9LPTNkmWi8YThSfcIZEDF0SAyhcyIvKntDbibhF/r0?= =?us-ascii?Q?WYrtggRVPk4FFPwKixbzojvlTJwrKy/aZMO/7b4FbSC1EblYcRuytiwi6Qk+?= =?us-ascii?Q?Ko+Yrl9up1NOsh8pgzWXaB0Oszok0acTGUFJn9m9TknNcEkNh0PBxyRpwZNy?= =?us-ascii?Q?nz1FFCoal+0s1ExbEKj+oqz3kGHbmohnfVXyiwbZVCana0oV58q0+1PAOAjG?= =?us-ascii?Q?4AEzbW4RaO/Zo+0AjDEsHhST057AcgtYjn4U7CCl/DYCLhsHPDit7DDf+sCO?= =?us-ascii?Q?H2Qx4JYzd1dkBxll/dLNLdJdagjD+5TyxMsMsOGN1uwzbcfSQxLF620ie1Pn?= =?us-ascii?Q?ZbZ/qG892ZklE+hSVUsoLOQGh9UwoR87ZKVv/wkrG7nMSIPb5BGzva6pq+yS?= =?us-ascii?Q?n2QqlF5kxV9bmlHKZ1dyn5wYh+c0mQfYhY6aZ47eEs/NyK37n0YV1vgJwcWC?= =?us-ascii?Q?Q3K+57lPC51MOXzRNKkRtfkTaAazug8Ffw00FZQ9WWD07UySqyo39FOU3qID?= =?us-ascii?Q?nRciqNBpTkiYIvJ+Z5eYRdxDRwiMDyKQc1/7bFmi0b8Z7i5fi8MBAqY8r2ad?= =?us-ascii?Q?hlnwz+NRR8lsVfSXLnN3WIBTHcdf5Ubde/osSL/L0yZZYo0qNYOzC+hFonA2?= =?us-ascii?Q?y5PC5iGUEN1B3XXkBVyD3AqbyxUKvkVIxxR2RFfnSQpKwB/BVGNHOFuTYMgm?= =?us-ascii?Q?yX5Qh9PRys83xKg+tp2fqsR342IN5boJkWfx/Y20WdclaeUq810cQDeC4MGB?= =?us-ascii?Q?SwgacB/1jx3bsJm7i8vbV1TmQFktWghMPu/2tO7kWDHGH2Eyi1JRCBo0jdIW?= =?us-ascii?Q?PDm12VuRWl6DXLM8/CV1ADXCHVnjvDVgytDdaDjYnd7vWRztNMf1NKjMmix7?= =?us-ascii?Q?oPO+DknYhpHxL1nm7o1lZPTrhb2Q4IrY60aAIYJedJvjC47IWMExSe8Bakso?= =?us-ascii?Q?4bB2sFOrc4SwsJTfnqx70uu9WlCwwqtLzp8u4WZpk8ifdLqq7TIVbyy1n3UE?= =?us-ascii?Q?khXCmoDKEqvJJr5rodhNbdpZNa2PbR3opzhGyiY1t1RhAkPC3nxozYVw2KeT?= =?us-ascii?Q?1/R8yijuAmVsn1AvxKxHYhgi9WNz77iiwOOH449AV6tDy/IhDzfLc2WGrq1t?= =?us-ascii?Q?3yfGRQu+7umIKHklwE1OdufMy77IKwJ5wgiVM+oWM+3K/EM4mNB1?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 2d2a6755-ae9e-4adb-4dbf-08deb09a44b8 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 May 2026 02:49:35.8206 (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: 5vBgcb6+vxFZWuAZBcfZQF4ifQ/KlaNS5NOwe7kR+sD1huS9zvSj10avHSklH9ViNijmth0sfBuyX1eHJ2SHAA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYRP286MB5341 Content-Type: text/plain; charset="utf-8" The EPF driver currently stores the incoming doorbell as a vector number (irq_no + 1) in db_val and db_clear() clears all bits unconditionally. This breaks db_read()/db_clear() semantics when multiple doorbells are used. Store doorbells as a bitmask (BIT_ULL(vector)) and make db_clear(db_bits) clear only the specified bits. Use atomic64 operations as db_val is updated from interrupt context. Once db_val is stored as a bitmask, the ISR's doorbell vector is used not only for ntb_db_event(), but also as the bit index for BIT_ULL(). The existing ISR derives that vector by subtracting pci_irq_vector(pdev, 0) from the Linux IRQ number passed to the handler, but Linux IRQ numbers are not guaranteed to be contiguous. Pass per-vector context as request_irq() dev_id instead, so the ISR gets the device vector directly. Validate the doorbell vector before updating db_val or calling ntb_db_event(), so an unexpected vector cannot create an invalid shift or be reported to NTB clients. While at it, read and validate mw_count before requesting interrupt vectors. An unsupported memory-window count does not need IRQs, and failing before ntb_epf_init_isr() keeps the probe error path simple. Fixes: 812ce2f8d14e ("NTB: Add support for EPF PCI Non-Transparent Bridge") Suggested-by: Dave Jiang Signed-off-by: Koichiro Den Reviewed-by: Dave Jiang Reviewed-by: Frank Li --- Changes since v3: - Stop deriving the device vector from Linux IRQ numbers; pass per-vector request_irq() context instead. - Validate the doorbell vector before BIT_ULL() and ntb_db_event(). - Check mw_count before requesting IRQs. - Drop a Reviewed-by tag due to the large changes. drivers/ntb/hw/epf/ntb_hw_epf.c | 61 +++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 22 deletions(-) diff --git a/drivers/ntb/hw/epf/ntb_hw_epf.c b/drivers/ntb/hw/epf/ntb_hw_ep= f.c index 7b0fc7ef00c6..10618e462229 100644 --- a/drivers/ntb/hw/epf/ntb_hw_epf.c +++ b/drivers/ntb/hw/epf/ntb_hw_epf.c @@ -6,6 +6,7 @@ * Author: Kishon Vijay Abraham I */ =20 +#include #include #include #include @@ -89,6 +90,13 @@ enum epf_irq_slot { =20 #define NTB_EPF_MAX_MW_COUNT (NTB_BAR_NUM - BAR_MW1) =20 +struct ntb_epf_dev; + +struct ntb_epf_irq_ctx { + struct ntb_epf_dev *ndev; + unsigned int irq_no; +}; + struct ntb_epf_dev { struct ntb_dev ntb; struct device *dev; @@ -108,9 +116,9 @@ struct ntb_epf_dev { unsigned int self_spad; unsigned int peer_spad; =20 - int db_val; + atomic64_t db_val; u64 db_valid_mask; - int irq_base; + struct ntb_epf_irq_ctx irq_ctx[NTB_EPF_MAX_DB_COUNT + 1]; }; =20 #define ntb_ndev(__ntb) container_of(__ntb, struct ntb_epf_dev, ntb) @@ -334,11 +342,10 @@ static int ntb_epf_link_disable(struct ntb_dev *ntb) =20 static irqreturn_t ntb_epf_vec_isr(int irq, void *dev) { - struct ntb_epf_dev *ndev =3D dev; - int irq_no; - - irq_no =3D irq - ndev->irq_base; - ndev->db_val =3D irq_no + 1; + struct ntb_epf_irq_ctx *ctx =3D dev; + struct ntb_epf_dev *ndev =3D ctx->ndev; + unsigned int db_vector; + unsigned int irq_no =3D ctx->irq_no; =20 if (irq_no =3D=3D EPF_IRQ_LINK) { ntb_link_event(&ndev->ntb); @@ -346,7 +353,17 @@ static irqreturn_t ntb_epf_vec_isr(int irq, void *dev) dev_warn_ratelimited(ndev->dev, "Unexpected reserved doorbell slot IRQ received\n"); } else { - ntb_db_event(&ndev->ntb, irq_no - EPF_IRQ_DB_START); + db_vector =3D irq_no - EPF_IRQ_DB_START; + if (ndev->db_count < NTB_EPF_MIN_DB_COUNT || + db_vector >=3D ndev->db_count - 1) { + dev_warn_ratelimited(ndev->dev, + "Unexpected doorbell vector %u (db_count %u)\n", + db_vector, ndev->db_count); + return IRQ_HANDLED; + } + + atomic64_or(BIT_ULL(db_vector), &ndev->db_val); + ntb_db_event(&ndev->ntb, db_vector); } =20 return IRQ_HANDLED; @@ -373,18 +390,18 @@ static int ntb_epf_init_isr(struct ntb_epf_dev *ndev,= int msi_min, int msi_max) argument &=3D ~MSIX_ENABLE; } =20 - ndev->irq_base =3D pci_irq_vector(pdev, 0); + ndev->db_count =3D irq - 1; for (i =3D 0; i < irq; i++) { + ndev->irq_ctx[i].ndev =3D ndev; + ndev->irq_ctx[i].irq_no =3D i; ret =3D request_irq(pci_irq_vector(pdev, i), ntb_epf_vec_isr, - 0, "ntb_epf", ndev); + 0, "ntb_epf", &ndev->irq_ctx[i]); if (ret) { dev_err(dev, "Failed to request irq\n"); goto err_free_irq; } } =20 - ndev->db_count =3D irq - 1; - ret =3D ntb_epf_send_command(ndev, CMD_CONFIGURE_DOORBELL, argument | irq); if (ret) { @@ -396,7 +413,7 @@ static int ntb_epf_init_isr(struct ntb_epf_dev *ndev, i= nt msi_min, int msi_max) =20 err_free_irq: while (i--) - free_irq(pci_irq_vector(pdev, i), ndev); + free_irq(pci_irq_vector(pdev, i), &ndev->irq_ctx[i]); pci_free_irq_vectors(pdev); =20 return ret; @@ -529,7 +546,7 @@ static u64 ntb_epf_db_read(struct ntb_dev *ntb) { struct ntb_epf_dev *ndev =3D ntb_ndev(ntb); =20 - return ndev->db_val; + return atomic64_read(&ndev->db_val); } =20 static int ntb_epf_db_clear_mask(struct ntb_dev *ntb, u64 db_bits) @@ -541,7 +558,7 @@ static int ntb_epf_db_clear(struct ntb_dev *ntb, u64 db= _bits) { struct ntb_epf_dev *ndev =3D ntb_ndev(ntb); =20 - ndev->db_val =3D 0; + atomic64_and(~db_bits, &ndev->db_val); =20 return 0; } @@ -582,6 +599,12 @@ static int ntb_epf_init_dev(struct ntb_epf_dev *ndev) struct device *dev =3D ndev->dev; int ret; =20 + ndev->mw_count =3D readl(ndev->ctrl_reg + NTB_EPF_MW_COUNT); + if (ndev->mw_count > NTB_EPF_MAX_MW_COUNT) { + dev_err(dev, "Unsupported MW count: %u\n", ndev->mw_count); + return -EINVAL; + } + /* One Link interrupt and rest doorbell interrupt */ ret =3D ntb_epf_init_isr(ndev, NTB_EPF_MIN_DB_COUNT + 1, NTB_EPF_MAX_DB_COUNT + 1); @@ -595,14 +618,8 @@ static int ntb_epf_init_dev(struct ntb_epf_dev *ndev) * doorbell layout, hence -1. */ ndev->db_valid_mask =3D BIT_ULL(ndev->db_count - 1) - 1; - ndev->mw_count =3D readl(ndev->ctrl_reg + NTB_EPF_MW_COUNT); ndev->spad_count =3D readl(ndev->ctrl_reg + NTB_EPF_SPAD_COUNT); =20 - if (ndev->mw_count > NTB_EPF_MAX_MW_COUNT) { - dev_err(dev, "Unsupported MW count: %u\n", ndev->mw_count); - return -EINVAL; - } - return 0; } =20 @@ -696,7 +713,7 @@ static void ntb_epf_cleanup_isr(struct ntb_epf_dev *nde= v) ntb_epf_send_command(ndev, CMD_TEARDOWN_DOORBELL, ndev->db_count + 1); =20 for (i =3D 0; i < ndev->db_count + 1; i++) - free_irq(pci_irq_vector(pdev, i), ndev); + free_irq(pci_irq_vector(pdev, i), &ndev->irq_ctx[i]); pci_free_irq_vectors(pdev); } =20 --=20 2.51.0 From nobody Fri Jun 12 12:46:56 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11021141.outbound.protection.outlook.com [40.107.74.141]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 866DC3955D5; Wed, 13 May 2026 02:49:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.141 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640593; cv=fail; b=OWI4Dm7aaV0gEaRNqZDnXfyCnFt6pvFocknasrAfo/reFlT+FAzvQWmom0ar7hLFM6nDRDRSl11lI1uYj/kcY/HBgHg/C8Hb/uWa4HTz+lqNyVcSgXg/xusNZ9IiVac6W5Y3amcxpqoiOEV2s6ZwogdN7TlUoHHECE2OP6KdC/M= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778640593; c=relaxed/simple; bh=rSNa5GdSieh2JrgTXN05hXZmGomfIzxTerPvH8zLZ8Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=svGBIbQlajE0N8jP7zHnB4cqXr5K026nZ4Ik+ocDlRl8lWKVAJCY26KUSGl4uXjPRpE1to1TLH4nkBv/kbM4UVjjotYKI5Rq91KqQuvynkuPKw3AVtPDKy7HPh3qFvAJd0j1ZzqRFRcUBD8+eyk5rBoxvUfWMoZBmraX/AWhm3o= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=wkOqlJbJ; arc=fail smtp.client-ip=40.107.74.141 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="wkOqlJbJ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=S4JxyO27jp6EJcXU6T76fe1hu0KMJtb3j7rZyKSjImbzFFVIp2YZuYnzdBqYyqfdsdvezMcvv+ONixwAYkg38SurxV2LlMaTqKv2WrG6DRiNx3F8+aUf6fIl+PDBKbCQKusi77jeuKFiD9AWMq9WAD+8EelzdHK+zaZd5T8IW3CAKPMH6lcQqMq+zgVz6CUKxi4yd+TBK0fFOVVmBGTz52F9NpJElcuS9OvdyFm/8FXd/QZ5vcmElu4TkEXG+Tn091MITeNFvA//QIc8afVui7wKoM1d1uyEft1My599TJ0XnY9GIbliDI6FimmR9Djs3Hf0ijuxqo7a48Z97G9QnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=KKuHLLbTi5qHpvX+OPrWd55qEw4mRBx93vObvXCWRnQ=; b=UCR5Q3VduITTzQ/XEZEE0iTVZ2pKdi2GrsiKu5TT0gZoSEUA5XTi6sRIEUCGodAPyauxZ4KESGIMUwGFLaJkXu4gSh6vWWTGMOrDssMxVW8tn4/a+Y1262ok+8VWw8247X61CqTA6JbJ5u4w8jcU7S+j1WT/D+zFWgmF0uf7mCoil6DZyWO3VoE1D/rTEhUD7H/2XfVg0dQOLcDY2y0fExFtOK1LLHPD/VRPi2Hjdnmvo6UqO3MZm8F6BodQg7qnLJqftZ3w4Nzf0KlXRPqzl19VtOWGZu3Qbrty/GTHYz5VgyJUGD1c2VO68OffKv9aSPU8JlbaXfDQSJ/6wKIeKw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KKuHLLbTi5qHpvX+OPrWd55qEw4mRBx93vObvXCWRnQ=; b=wkOqlJbJMCGdG+2ym0sH8I5mDT/UhdZCqHp5v+EDy4RRyQqngYi1Y0Dbe9aW87IGvHoXun5WiM31AT/5PUUF6uYTUlUcMfb2XinGTLnwMnVzz0IhLIJBSA5NEZq+vLE0RWvahkGyWHKkK6nMfs4TcdBp5XzeIVSBi6ygxFLTDbE= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYRP286MB5341.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:191::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9913.11; Wed, 13 May 2026 02:49:36 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9846.025; Wed, 13 May 2026 02:49:36 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe , Manivannan Sadhasivam , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Frank Li , Jerome Brunet , Lorenzo Pieralisi , Niklas Cassel Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, ntb@lists.linux.dev Subject: [PATCH v4 12/12] NTB: epf: Implement db_vector_count/mask for doorbells Date: Wed, 13 May 2026 11:49:23 +0900 Message-ID: <20260513024923.451765-13-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260513024923.451765-1-den@valinux.co.jp> References: <20260513024923.451765-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0240.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c7::16) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|TYRP286MB5341:EE_ X-MS-Office365-Filtering-Correlation-Id: 9dba584f-c089-4dc5-1986-08deb09a453d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|7416014|376014|1800799024|366016|921020|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: GrNbonOmiTKIgRnbp6WJqcMS+7RVnjlwH3hu0ynBkMrKpAdsQL5Lme2y9YCv6sc+GLZohC8fKZm2XhD7GFKFn1uMXKVts9NyC+D1SDChxmr/R21/v5z6prgJDJNdR6/9ymDx2aO6SkFAPhv8UIgF3sXDKjC1K6DZsYtkbeMbm4vB5rjBiK6ted7KB3C5+qZnPPv3Awvcj+4wDvy8JNTKYXpgjFRJPOW5pbUAnCq5E0TYJ4idnBqXdPW8FYco7Rrt1KpghOTciu3T2cwTzV8nyOvhjMZMp1AmzxLm0C7brBiP/YeXf4nivb7VddtrnlnWwt2JxRhF4MdivcX6ATFjguDfbf41MHWefDZiC461CL0iAdVc9XFpqSbqSKiq8FxfEiKK/xpk0FcbyZWO+5SkONM+oX968pxZPdws0lV1Gto20gPcSGCCbKYM0W81Q3Kt3YokesYERrk5mrX3RjntKqgQYW5v/SVd5Xj0FIhUYRO1kiFCDHBnXpqN28XiAaxwKBvJ/3HKNVIai+6JUH9RkPo4slEkMb+wjF3N/WSzWIcPoKMGSdYOd9/9Uivi6UOMlZMZnMw1JHSbjLMHjCvK8zNr117dc9/RNjFA3aDs51rO3Q8LbWJDqmf0MZr06vetB/gD7gxsCzDemD7XgSx1rN5UnxSBz/hNpwmKeZYjZvcckfX6QZNuMYL/SEe5Pfw2gygdcBP7zA3yhAETIhQISyNO+t6yC6w2ecIUlZ+UbH0= X-Forefront-Antispam-Report: CIP: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)(10070799003)(7416014)(376014)(1800799024)(366016)(921020)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?NkRoPflSrss+RJB1soZQrNOJ7vgiRuo99Q3rhX7uS/Ln//m4/1UwP7Azja6V?= =?us-ascii?Q?fMIImaqv1HEeug8uzkj0NYkV2GzUhAK0EYTjC6tPPlwgF3uR5oZqc1xSCNmo?= =?us-ascii?Q?XWpVJT3FbFd5ceA+QgTWvyfi5gUoLwMUyIzpWLRIlHuBAEkUPRynEyZbcr++?= =?us-ascii?Q?1OFMe3CE4KFQ3SHVmCboyvzp9AmCv9Nk7xyt8G7fHuPoLtIIXtNuFEGqrwW9?= =?us-ascii?Q?2JYCk0QCVAzX5xbovJPiRD34/V0PEglBX6yF/OGjk9NUNiEWogAqkOfCB0eR?= =?us-ascii?Q?ui3/XLoQkbE/JAT1D4rPndqSIkn77leMNbVEtIczL61zaXNvOixWzbPJujc4?= =?us-ascii?Q?ESOlnjgZDvb/vAfY3sQH24YUkhzZ79XIQpGgIfbFUTEViJRbQFWAI7qy7Fw+?= =?us-ascii?Q?w/vcwe3hc0zab+QhTdwoRigTdOySuSqCjASUDo7SCh+vBq5JtheeYITi57fn?= =?us-ascii?Q?BPSnuejHYdxqUNkZeaTmZD88JBd90RgR/+rY36dmGTdRvDkdJQ8GGBD5jbtt?= =?us-ascii?Q?CrdNvjBnp9S0iPn80hqo5MrwFTZsC0CO6wVA4SEERvRUGnUntaxNMuDBp049?= =?us-ascii?Q?86b2+8lTxitXUzpZBmnJc4Ld/txJscEK4Kzt4DR/cVEumTICtI5N6Mcab7th?= =?us-ascii?Q?yPAyzKNtyK0i8yUAn0XVE/8Pny85m4ONSnjlU+DZX2DbqsAL0GuJrtbYSrIj?= =?us-ascii?Q?2l/Jc4Oou9dOyAP7LpiXTFrtGPYWfEmQAJxLTiayY8FW9I1+Umev1QQlZLpa?= =?us-ascii?Q?hVmJof5oDdJnHiUVVVVZpN3fgNNn6mc+WHJBa4AuPPRYFHlf9+oglq95PD4u?= =?us-ascii?Q?YK23Na8GgjvZm29w8IWc6A7fRqZAad4FpzIKi7iq3nib3xKTGAXPkMaD4TKR?= =?us-ascii?Q?iylfCDJxHIfk0MfMQVbDf9dQa71cKHq3T4B5e/95JLRsXfNJrIcDBTbmkj7e?= =?us-ascii?Q?P8Z489MDHb/z1pTawHhdGnS6pI2CDK7IviT/O84Lv5G6I1PeHWoDKnBRVa2y?= =?us-ascii?Q?3WBgeOvdfmr+hj7wnRXsG9Oj1IC4Gwv0sbnsQkGhCN39pOyw7+WlXL8qs1Sl?= =?us-ascii?Q?nTEZ92iOepERXpt97M0kHr3AcFfFP9i+tyiYZ9sKyXiyPrC+/Uu4Ei50t8cW?= =?us-ascii?Q?BH6hDGBaoiQnlOOVmtpQM15XULhYlpYh1H0NkaQtdR6WPkMQzZTwkmV+5+PG?= =?us-ascii?Q?VQI2fY7BdHRcLg5Iz0gK2PotHe1n+ZdQ7ro0RbcjhW1wgHO3sAIO/QEwvTGv?= =?us-ascii?Q?gMUIqku04aEwznsltkus3Kr/OWL8rff4Pewum4yzD19LGtDyAUQ9STA0316U?= =?us-ascii?Q?XUOZw5H7x6riC88m7T9XWeEuqJdpCED7WWCPKSWVHii7RGkDFXYiTnl4SP/F?= =?us-ascii?Q?kGNugVPPbxv4KIlL6ziXMA/WmCY8jpceSuk1Q089iWuczKyieRiVU3W8a415?= =?us-ascii?Q?Ycv7kRdIBZEnNktYlDsMjlsYSVJS9Nb7Sn2GA1hupNs4+ZhOb9I9pFnWBcMB?= =?us-ascii?Q?aMSB0GeKfxRO8pYyG6x0z53xt++luzltVz4cwZMHs887JwbdufCCaE3ljNEM?= =?us-ascii?Q?tj+AWq7xln+1uYhTZD/gQ9Pk8DE6sTGULgq1qbNayqQiJFLtT2mOywWJbSMM?= =?us-ascii?Q?7TO0m9N7DTmrJoni44eeYglSvUf0jvK9DbjK+DWyfaTh6zP/Kqh9PmwsP+q7?= =?us-ascii?Q?Ej36SQVF/zj/Ldx7BVdI6TKehLH1ApuQYYfVVR9zi3aUzaKljBsHBAKWI4LE?= =?us-ascii?Q?Rdf342giYsM+odQgInW+fHPGCPnhf2r9CuTogG0vB7IBYA2RkilZ?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 9dba584f-c089-4dc5-1986-08deb09a453d X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 May 2026 02:49:36.6864 (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: SpCusXmzrimXrKEvSgLFxDR3ppeitLrXMDmY+Rzewf8aTMms7n5q/1kjFnupHkL+ejZipWtfp8T1rN7TZMCjPw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYRP286MB5341 Content-Type: text/plain; charset="utf-8" Implement .db_vector_count and .db_vector_mask so ntb core/clients can map doorbell events to per-vector work. Report vectors as 0..(db_count - 2) (skipping the unused slot) and return BIT_ULL(db_vector) for the corresponding doorbell bit. Use ntb_epf_db_vector_count() for bounds checks in ntb_epf_db_vector_mask(), so the same lower-bound guard is applied before building the bitmask. Signed-off-by: Koichiro Den Reviewed-by: Dave Jiang --- Changes since v3: - Reuse ntb_epf_db_vector_count() from ntb_epf_db_vector_mask() for bound= s. - Return 0 when db_count is below NTB_EPF_MIN_DB_COUNT. - Drop Reviewed-by tags due to the changes. drivers/ntb/hw/epf/ntb_hw_epf.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/drivers/ntb/hw/epf/ntb_hw_epf.c b/drivers/ntb/hw/epf/ntb_hw_ep= f.c index 10618e462229..af5755472842 100644 --- a/drivers/ntb/hw/epf/ntb_hw_epf.c +++ b/drivers/ntb/hw/epf/ntb_hw_epf.c @@ -434,6 +434,36 @@ static u64 ntb_epf_db_valid_mask(struct ntb_dev *ntb) return ntb_ndev(ntb)->db_valid_mask; } =20 +static int ntb_epf_db_vector_count(struct ntb_dev *ntb) +{ + struct ntb_epf_dev *ndev =3D ntb_ndev(ntb); + unsigned int db_count =3D ndev->db_count; + + /* + * db_count includes an extra skipped slot due to the legacy + * doorbell layout. Expose only the real doorbell vectors. + */ + if (db_count < NTB_EPF_MIN_DB_COUNT) + return 0; + + return db_count - 1; +} + +static u64 ntb_epf_db_vector_mask(struct ntb_dev *ntb, int db_vector) +{ + int nr_vec; + + /* + * db_count includes one skipped slot in the legacy layout. Valid + * doorbell vectors are therefore [0 .. (db_count - 2)]. + */ + nr_vec =3D ntb_epf_db_vector_count(ntb); + if (db_vector < 0 || db_vector >=3D nr_vec) + return 0; + + return BIT_ULL(db_vector); +} + static int ntb_epf_db_set_mask(struct ntb_dev *ntb, u64 db_bits) { return 0; @@ -568,6 +598,8 @@ static const struct ntb_dev_ops ntb_epf_ops =3D { .spad_count =3D ntb_epf_spad_count, .peer_mw_count =3D ntb_epf_peer_mw_count, .db_valid_mask =3D ntb_epf_db_valid_mask, + .db_vector_count =3D ntb_epf_db_vector_count, + .db_vector_mask =3D ntb_epf_db_vector_mask, .db_set_mask =3D ntb_epf_db_set_mask, .mw_set_trans =3D ntb_epf_mw_set_trans, .mw_clear_trans =3D ntb_epf_mw_clear_trans, --=20 2.51.0