From nobody Sun Feb 8 14:07:15 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010016.outbound.protection.outlook.com [52.101.229.16]) (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 52C172C11F7; Thu, 23 Oct 2025 07:19:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.16 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203968; cv=fail; b=r4UD+AfEdX6ACGBu/CB7R2AE7DzGCZJFD3lczuRDZOET+Eqt+niOOWeklgpMHaFA+MEQwc3OOWMkdhDp/uqxSIZA1T+6A02lf1etYT85ihqyicFWV6BtkcZklvLLh8KS/wIls/gQqYpyMsWqtXW+FvgX5J0Tw7qMC7JAzv2TSkQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203968; c=relaxed/simple; bh=kYcPo/e+76X7vQgmNhDlTUiJS/yKrpJnAPxmXms5ArU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=BZRFErY44Bm/OCWzmY67yNtZqheBqeNhp9pTzgdOo0zKAHBN+4VeNPZ1AHOtEwlQ+SdTHNLJitjOufV+G7D0NXHq7BBDijTDmwRmdGhNYCTNaaljpWuY2H+ZvUx6w3Heb3sxJY33N7pOZ4NR0hzhDqGuzVYM1aB4iK6duN7r/QM= 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=qZlc5vYi; arc=fail smtp.client-ip=52.101.229.16 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="qZlc5vYi" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XPAMORpSCqpspEXxpuRKPwz6mmCzvPTCJ4kANapl1Pnf52aUv6Vbs4sqAzOINs5Un4RxTeMuLtKB17sDpl3SYO0avl0arC4ulgJbQKSbvEQm6k2L/94dXEMF/B0fkmTLMiYG4Ws9Kjzel97TrryHYERKaAuCDGbaEnj8CNZaj1j5kLAT0/NCYjHX4sH61ZuQh24xYNIOpb6R3tkur33iFsKXqeI//N+azBAtXCHdcyJ7i2RFjHYWufbJdTtDyu9nhmCdnx+7KNGr/ISYNXe7ntm2jGHUZ6abnfyC1D21K5NRrqX49UjjqwKRDGDF9JkfHptZ1fx2TVbWVdfUT6bzHw== 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=/ts8xvUH71Ep3aN6nBzFjG4X0+NqfIZ80CmoQcpWyQo=; b=r7vnEguG4JxWR5F9BK6qnYmWLQ1x6JTE8K7xM89RorilrGMcusI46hqDltvkucfhjFZH7PZaUo9tPNVVVFjOTGdcZnrWPsJOpV37Zd4dmEwY1UWz96TXgiy0fTVmi8O8EaWHgLQukcEygQ/yC+RVXmU8Qbps3W9GuZPoDVcthtU5D9dnH0wKwrt/swO3wnKEfo3GcL//QgssRy2Uwmsucol2jxNLm9kQVgsP5BHsSGJ1Ko5lGBUEQ4zd0f8BXGsRoD+7FepEeDiHMrJm0pWsgmgGB4IImdrCU0qRLPde+edS/hlj0rDjh7lEdBUofJKkW94FK/umEUdaM4wisTJAQg== 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=/ts8xvUH71Ep3aN6nBzFjG4X0+NqfIZ80CmoQcpWyQo=; b=qZlc5vYi7ydweoP5RbEEYOMbZTeGxT8+8LLh3c9SldlZSkOS5TuACjpqHERVqowj3IJFoOQz94WnZj6pWQpn9uwLwvR3v+GEFvII6C9/0sPEgcXyz8y84i0GjQQHfG1zyhU799H5xSRNqWgqiORfhkLWEKLTIqffRd2nfsZPGSY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by TY7P286MB5387.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:1f3::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:23 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:23 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 01/25] PCI: endpoint: pci-epf-vntb: Use array_index_nospec() on mws_size[] access Date: Thu, 23 Oct 2025 16:18:52 +0900 Message-ID: <20251023071916.901355-2-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0257.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:455::8) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|TY7P286MB5387:EE_ X-MS-Office365-Filtering-Correlation-Id: c370deb5-21f9-454d-ba9d-08de12047d8e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?djfQ9t6OyRqWpPV2e7w7LZVhtGIKM51T7xk850Zxuc4GnO5Yj0r3AXeZJjQI?= =?us-ascii?Q?OplHL8zuqME1LP5q9cNNSYzk6ZKDM5n0OIolG+KyQ2VKs0ooAju2AfnzuEe+?= =?us-ascii?Q?ZmsihuNGxjv8Q/ovV4TQJq+JR07oYQS+sLnZKyXyIGdPQHboI7betjx4xpua?= =?us-ascii?Q?QRBK1EdgBjrzUzD18wVIaVX1sxqkSNnPAI9P7zmnIOeo0M6X23byuqA/imFp?= =?us-ascii?Q?lVY3IgGcSi3ck66KsakDdQWu5Jqo7DVDlMOCXiQFeOaJ2HTCPIka0LSCIVAC?= =?us-ascii?Q?Sq5WvqM5rVec8dRCwkhBXyYRV6Bu9/euagt3uoEp6LqamZeiRIPrb9/De7e2?= =?us-ascii?Q?J43nrlK+0M8+yOUFEJIhV9QvoPWn/feqItKZ3mbmICeSFkk51j7c0fJ5dU2J?= =?us-ascii?Q?kYj4Qjfc/bGGGwqGaNWyBz17nY3g82hmKWIvQJAdGMx8cNdP37QBG3rOnJxX?= =?us-ascii?Q?QlXDvtJi7GcTQmE94OKKsa6B6k/ULAxTLqg6EdC74NzOAGkLRfDQOLz/NZbM?= =?us-ascii?Q?ubYI3Uny8VV7MEiCYfIbP1iw9/BVKJiQS1pbCEnkxNOSGKwF+/uJaslGbXAR?= =?us-ascii?Q?GxFC2LIs6guJMXXFnPTDbXQTJEFJZiuBJoRuBu32k/Rop8QUtyITi9mtn8c0?= =?us-ascii?Q?Uc/75bu5R0d3wiFzT5K1Cn6kGjH2hlvlXOLqjcHIERxSbKJK4/36gRkzGHXK?= =?us-ascii?Q?MJmP5QyVW7frqIfyyIzxKidgIHOc6CxYuI9dfv/MsO6onItaUGl8AX3Mcrmb?= =?us-ascii?Q?3H673ifG977jY1paPPC6vhSeVuXngo8rig9pE+mXMsvJMV6G5N/i0+UAvSUA?= =?us-ascii?Q?k2MNTZNWhFKGHN+5O5mYN6XfGLlYq7QPLdpOu10eLk3Ojy4IajHur9A134mE?= =?us-ascii?Q?QdPfnDfp/ztPtC4WTzbgCdQGMfFfzHgPwmHhN0s/7K6qPL4wI3DXXW/6H3It?= =?us-ascii?Q?z09oPvRv00yG0OuutoAo255GmtDOQB0DaLjZu6p0TG/Xcisx8RgJv7A4oNJ1?= =?us-ascii?Q?S9gQWRf7rJXWN9r+1GF32v5C5eAaLkDJXbnOxj9Go3lVD7l+Rq8zO1LkRiYU?= =?us-ascii?Q?6LRlnjqYfbAkISaFFcGXWVy5HDW4hKjZTtw3IqFIGXLcad0NCD4N0TkoKvJk?= =?us-ascii?Q?V9kAz1pvhVBWVtHc8EjZCGpl3GLb17OeTIMJ2rBH4BjIxa2SD8vyzcZpqeOO?= =?us-ascii?Q?mX7e4eQ5bCKau/nmgaPDTzvcD1rF5trUHPTdDREwI2wfZ+vE40k6cSsntO58?= =?us-ascii?Q?AWzEhpFuDmkS7rPu/oUEGbw5i7V7BkaaI6nfvpbwCKNevchnpTAkRb6wrqvj?= =?us-ascii?Q?o2IboNrgyOSr6P38jw0kM/S1g+NYH2i2kC1xUibF6UKzw9IHzUIWrkPxzF9w?= =?us-ascii?Q?ICnGe9AOJerR6rs7dbBwxqFYVFfVbhxAnznw8CER0bY3bErOGIvwwctTp3XN?= =?us-ascii?Q?SM2s9q3YnmrrRvX0OXG4CSuuhnHuHcvD?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?YXW8EwTbhPZJWtyUGTVNy8Esz7ZFNN8GuAIjwPN9YddkDSZbUKQpreNzx9dK?= =?us-ascii?Q?qHrL3lsOjvlBHwQMka+YrfQ7faAGxUW85C7nKyVHh+IFw3T3PxhuTiNabBf7?= =?us-ascii?Q?mCCCizDaWLIWlu4fynadY7LdDKvYgg/fxStfPlnuOkSt6gIF3qEygy0PKuNv?= =?us-ascii?Q?WcWPro98745Z9o2qSlXlYqEYbS/sCtlM3lo6mn4BGGOMwsCWuH98/ogmHn8O?= =?us-ascii?Q?BpJQDSDMnqZCA+ZRcJjZbiTX3Mk3K1v/wjkgeoAHPLfuDzh9bZXPOph+tJhB?= =?us-ascii?Q?fidIHdrJG9STYJj1DjT4WLhC5VCA+NZmZXyuX4FDq0Ybxbim4LKej/ZVxtZm?= =?us-ascii?Q?B/jygEr/Kq8BBnbH2UO7Ns5LRCgQ53a+HoK/Vg8/2Cez5SH1haseJ5TCy+f+?= =?us-ascii?Q?rif/1Jdx65N5kQ6lMO6NoJgj9+AsKP6mmlduomW+qpPtEuM7tiBFILUl4351?= =?us-ascii?Q?dP10cOdnV0G3gUmMr2L7Sy6/71CjoBUCvOG8nFL70ttAHiYF1TdnXutYX1iG?= =?us-ascii?Q?c+J+GRO1kNp8DkuKQM94ole0IyEAoWvjBtSUHyGi9pMGtlywO5IKnlc/mtaf?= =?us-ascii?Q?Xk+leMpWLVHPl3r8md9XypK3f8pGJroNgnR1/FXo7qskGecex/HnT0EtQcbr?= =?us-ascii?Q?ZrRo6smmSjTntI4bnLO+bteypcFNhDHsyZA+ExoRbv9hlEM+OYQ+4McT6Z72?= =?us-ascii?Q?MLJRxNenvGIxBmeHx+pAFElU9YHvgvS8s4H9As8+ZjJBDJuiBNNMXOAqaPV2?= =?us-ascii?Q?A61nHkUJHthwBgVKSVfElPyiZUz59hI+ZIDABGD3Lea0MMtn7l6BvKVpee48?= =?us-ascii?Q?3r+j/Tb9CmlOeIX2lvgOlnXJ/HGCN3V1pxYeLf44LHBTFy21dZb2+1Z95meo?= =?us-ascii?Q?XY3anFSItQbEaz76FWd9uS7aqm9JSHMqagPES7cFCH6yqUspMlgflqosuUFQ?= =?us-ascii?Q?utkrBlfE6T3NKnMPcHMuLSlkCHGD0rxtG8F9VIkt0NwJ/NQm756f3U/DouFl?= =?us-ascii?Q?RRLMj+Uwcl/ZVSDO60er3o4z8rEamkadfWS8zxsdcWYow/9hSedmpdOLJSbg?= =?us-ascii?Q?EuOxgL/flzMYClku0/EycPfgmIuJN0tTQIeZ0YWYC13LyXFl1AWkaUTGiVPK?= =?us-ascii?Q?KPKlKl44G10xkIaiDW84ullMofKvk/Ux2hZWVA1Y6vi3+yVS+IqCqy/DIuP+?= =?us-ascii?Q?Sji2puJ5QcoVVKYhhUZcCXDwi7XcZ06uPveumKUZP/iCEu4nEgZ62834btev?= =?us-ascii?Q?Su0lRufs+Y+5I/Lj5GaaMs+2OODgyZpjgZAFJRU2DMX3M4wxY8lQOgwHvkuR?= =?us-ascii?Q?CX+ZDmYZZ1ow36/MBMGj8pQ2mBz+ysyD4Qr5DG8vnbQ+ab5z241iZI/xqRKy?= =?us-ascii?Q?djVIIyOaYprz4TwuK2d0Y+/YNwGxD7zVy/VJQFukU3ZD3LT5BpZTrjaIWm9u?= =?us-ascii?Q?pP5JDNESzvMt1JEraKPSq90PrgL1ezUMfHg44hZq0csM94OyK25f3cX1Ha3o?= =?us-ascii?Q?/h+3lVTbNkTUj2+IJnzR7WghStCTkiPGpg602UQyupstZRBZvutVBM7UZ0pB?= =?us-ascii?Q?nVqWQ87rBfJ+sQ4dSJ9RGZ8gwW7v45DxtEveF4t6p9Ji2HG3N+C/pOP0NALc?= =?us-ascii?Q?wyCxTkVBBhtI3HSzd/xSodE=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: c370deb5-21f9-454d-ba9d-08de12047d8e X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:23.0378 (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: k3TJllLrko2R06pKWE5P6/ojJcxyt6jddRfU7t27vWi0D7zNFnaZZmM48LXOP41+vFBRjyWUVZuZb+mNa6Whrw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY7P286MB5387 Content-Type: text/plain; charset="utf-8" Follow common kernel idioms for indices derived from configfs attributes and suppress Smatch warnings: epf_ntb_mw1_show() warn: potential spectre issue 'ntb->mws_size' [r] epf_ntb_mw1_store() warn: potential spectre issue 'ntb->mws_size' [w] No functional changes. Signed-off-by: Koichiro Den --- drivers/pci/endpoint/functions/pci-epf-vntb.c | 23 +++++++++++-------- 1 file changed, 14 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 83e9ab10f9c4..55307cd613c9 100644 --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c @@ -876,17 +876,19 @@ static ssize_t epf_ntb_##_name##_show(struct config_i= tem *item, \ struct config_group *group =3D to_config_group(item); \ struct epf_ntb *ntb =3D to_epf_ntb(group); \ struct device *dev =3D &ntb->epf->dev; \ - int win_no; \ + int win_no, idx; \ \ if (sscanf(#_name, "mw%d", &win_no) !=3D 1) \ return -EINVAL; \ \ - if (win_no <=3D 0 || win_no > ntb->num_mws) { \ - dev_err(dev, "Invalid num_nws: %d value\n", ntb->num_mws); \ + idx =3D win_no - 1; \ + if (idx < 0 || idx >=3D ntb->num_mws) { \ + dev_err(dev, "MW%d out of range (num_mws=3D%d)\n", \ + win_no, ntb->num_mws); \ return -EINVAL; \ } \ - \ - return sprintf(page, "%lld\n", ntb->mws_size[win_no - 1]); \ + idx =3D array_index_nospec(idx, ntb->num_mws); \ + return sprintf(page, "%lld\n", ntb->mws_size[idx]); \ } =20 #define EPF_NTB_MW_W(_name) \ @@ -896,7 +898,7 @@ static ssize_t epf_ntb_##_name##_store(struct config_it= em *item, \ struct config_group *group =3D to_config_group(item); \ struct epf_ntb *ntb =3D to_epf_ntb(group); \ struct device *dev =3D &ntb->epf->dev; \ - int win_no; \ + int win_no, idx; \ u64 val; \ int ret; \ \ @@ -907,12 +909,15 @@ static ssize_t epf_ntb_##_name##_store(struct config_= item *item, \ if (sscanf(#_name, "mw%d", &win_no) !=3D 1) \ return -EINVAL; \ \ - if (win_no <=3D 0 || win_no > ntb->num_mws) { \ - dev_err(dev, "Invalid num_nws: %d value\n", ntb->num_mws); \ + idx =3D win_no - 1; \ + if (idx < 0 || idx >=3D ntb->num_mws) { \ + dev_err(dev, "MW%d out of range (num_mws=3D%d)\n", \ + win_no, ntb->num_mws); \ return -EINVAL; \ } \ \ - ntb->mws_size[win_no - 1] =3D val; \ + idx =3D array_index_nospec(idx, ntb->num_mws); \ + ntb->mws_size[idx] =3D val; \ \ return len; \ } --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010016.outbound.protection.outlook.com [52.101.229.16]) (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 3E2A22DA77F; Thu, 23 Oct 2025 07:19:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.16 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203969; cv=fail; b=kxZcity/lwfcFgj5uu6G8fOc5KjAonmE1HDdGqJij5h5FsrBPy/DvKraJ+Q2jNSG7DUe3w91b+swh4CXhSb7iXhVp/QyH1v5Thhb4MPIE3ZvYCuzTt1bRfCsXn2Nh5po7fbkxpa2GbKlERIDFswVI+2WMk77FtjmDZo62dNrrOw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203969; c=relaxed/simple; bh=GGZG800jBLkONYisiaJ+eV/sNBaqpbjLwt+UEdUldzY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=qT/6gS7aCQP7NrtI1xUAJEtltmFhKhNhHO18lWQoqGD4dPZPSrDLlmpgEXZS+UEwBkv5G58MvQ8aoPzE8+NiUJnetKfk7rJXtzypFxEe7xBgMK3smYkMjN7cw7rEDKf7uGWrd6hLlZqvRPFoUL+qIMXtj5xDUlMZARQni5zCrO4= 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=GeVw6kO5; arc=fail smtp.client-ip=52.101.229.16 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="GeVw6kO5" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QtLnvJFvIpyf6zWuhiWLdjEqrjTg1kGx38FhGJtS0vxFSv4W8kIfHesz+e7Rum2nOBmiY8fwiQ+7Ke3zWM9JUoeWoW1jG8lxhAe6BjPRVL/+35Xv6seXmJ/7NuOZprnwVdaldEBSio5XW8w4kMY9McHds6L0oCZ6Kt+ak4toXTlZHur6qysxNKrs4pNZTXvDY6/+03eYCRUOidF2kGJsidHr3NhIqVj/rtyH1E5kCD1dgkUXUcKtTj28g5olAulq7bpiDrSuwUk3gLK1JlKk1fu5bjqdBE25e+ILoY39pbvUpGaKfBY3wKgwsnvQ7LoE9xpm9dVmhVwlt90FYde0kA== 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=eX57IsAeReO1+bV31cUwGNzJUOPUeNIDaVWEQTlUbr0=; b=QHV92Yc2Sv/R6JAl8UW6JdqiPPFA5CNT4zQK93b8S2yQ3+ro+u6zVVvYLRI4QYmNFfsVdhCZbAqUeCfpQScEODA7t7sW3vZWounEYW+rmza4azZFm6TRB5Z28cpg2rKjwMrAp6OOhJizdR5/1UTKED+V+/oWuegSjB7PuR8jz/fa6/2n/cz1ylKcr1oSD4K0R2rSZHG6B+16ixu1MHWsdBIXZGWgFo/EUqPUhI9O4Bdpm5s+ZTV2FHU9gd3JmZ3rvA3z4z5NPo9HavfYiOZpLob/1yQ3IFLgf52i0qYVAanFF1qiC0PGTPrB/gb/GekxsDrcGl0kVyh3WHx6vhdvGA== 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=eX57IsAeReO1+bV31cUwGNzJUOPUeNIDaVWEQTlUbr0=; b=GeVw6kO57N2vZ+YXoMjuvlP55+PHdVF0xsm6h2EvM902i8YREWwc6rhZrr+qjpxQRRqAFJQjLx5snhhOFFhAIwny+SvxcbhOgdYl6eTWW4+ZQthTUrairVaVgsJdPbSQ81IqqwB0IXAikeaEwiyoaQnw3Nad/etMyVcBdEPi1xM= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by TY7P286MB5387.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:1f3::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:24 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:24 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 02/25] PCI: endpoint: pci-epf-vntb: Add mwN_offset configfs attributes Date: Thu, 23 Oct 2025 16:18:53 +0900 Message-ID: <20251023071916.901355-3-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4PR01CA0079.jpnprd01.prod.outlook.com (2603:1096:405:36c::14) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|TY7P286MB5387:EE_ X-MS-Office365-Filtering-Correlation-Id: 658e70e2-1cc9-42ea-030f-08de12047e53 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?/HPnpe89Z4vxCsbz9ynIzDF54qgPjixwn1QJSugF8zDBtRRinaqDiS0m/Ru8?= =?us-ascii?Q?A9tizFwaCKEvLPW/eftmNajmJK4aePX9SSQKteDLJsvL+PNKStnHv0wedhQ1?= =?us-ascii?Q?T9dKvL1ktOQs0hFpH9+yRRK1j2VN4wREI/c94e6ueDSbb50BtxF0O/JxGJfQ?= =?us-ascii?Q?+4npCDvJt4GTrXNCz2npJ+YYPjl875ReK45zY8biNz1sp2BJpBTyisUZAiyQ?= =?us-ascii?Q?r5d8dvUJBCroa+rJLDLvpScXl2qd/4LNWt7bznIFqQSCJLaGzg2NUYQ1ggol?= =?us-ascii?Q?mdGLxK4A6GTSyfZ1RnXFzOutYZI2grqd8F/hrCrgw9e/Aqha9K7qXG2jgAnb?= =?us-ascii?Q?+kL//PuVlesZ/GUOYs0YLHKkkdqIBNRlPpwMfMMlcGF5w3qY9qIsrqdyctkw?= =?us-ascii?Q?3WI7yzPgG5V2Zu09ElRLO2fEKcH6+JOcpwBOM8gL1VkbloiSihgT8d7OLkdf?= =?us-ascii?Q?hvzRTK6J0E9SnhavYMjs4J+O4MRKD7VHFg/l+316Gb6YAWGv4LuRxogNaX1S?= =?us-ascii?Q?5gUPDCtNHdRN7Qe9pvgrXLit53AE8BE4NLmYrLt8s1kKuzVr8qg149wTRrLu?= =?us-ascii?Q?gHC8rvvhM24M6gTzDE6zV6SOQ82gSX5CfMNcbZNEc9vktefgtXyx3MXM+lnO?= =?us-ascii?Q?r8rbR1ZKSoCF2Nf5D2S96l4L4xWNQNIuewyqNZOOjNcl2WqMy6b1WikkWIki?= =?us-ascii?Q?3jwkCDIvxLWo9tulRddeqK0rNrA/HNSE6Xo2/6Cfy3w9h5pbregzUjSbhD6V?= =?us-ascii?Q?mulgFx851/U9OVUO1MRCwjOkgukYtLdWqMBnneerWLxNq+SwGek95eFCOS9a?= =?us-ascii?Q?BOjkh8rTy8nq/kaXYwoa3hQBQLiul/yvCNMP3X7+E/SJPIy8RQdU0yeY7mcK?= =?us-ascii?Q?nINeildMNdUlgreXxQm1pGeoZNL7WmggU1zdpfoO8U/yJX+9YxoDVTjb92cs?= =?us-ascii?Q?h2GGt1TDEGcFgpt5UZSHmUtb+oVa4L81z6Kg6WGOGjpcYW3dKsiRjaDshb4z?= =?us-ascii?Q?0IB7Ogm8kOE8g8ud+owLhm4HfZ1NpaNTh2/23xD+JJ5uL35UI8fwz4oEXePF?= =?us-ascii?Q?dxZdMAUGMfAbbZyce8MOpai9uDypfGHzDMKRcFBsXaMYWTYc0nCyvVSXGDhj?= =?us-ascii?Q?nzyAA/m3wM5OsE7Llycam82WfjOouqNxM6hsmuGWN06Pv/H1hR49g8nXhP0Z?= =?us-ascii?Q?pqRsh4WPR0JdN62YwV41OtxVIKF1u4ByOdi0zjw26GhoIYXOZ7/Zd6bwh5jx?= =?us-ascii?Q?XIRWxav8XLq9CXJ/DznvaCmg505NSYv8kZgJ+0ZQupvBNf5F5Mn75XFffq/0?= =?us-ascii?Q?jo/6uy3EMzSkYYsSiWQtcn0i0I/iCxTa1ryOZdnjWyxmBL/ktVTpQMZVYQGB?= =?us-ascii?Q?UFsTZBQ06eoelqdNISZ6oh76/VVqZuHrGxeC0bqt+uDSJY5QKk1RGdgyBD2b?= =?us-ascii?Q?0Ia+o7fTL/tPh6V5WesIJbedE6/trAv+?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?mDEtQnBEUszCk49mIwU48sjvV0QO8Z0UaHfycpml8qvzexiIYgaAI1ozVd09?= =?us-ascii?Q?bgLJN1ic5YoHkOeEDwvLny7hkKlTo1lJeTg424RwSAFz90rk64cv2rsTK+N1?= =?us-ascii?Q?Kd0JQfaW5axAXU+VHlX00p6Vummq1FOws3+/dx85WzKxVbGpWqhLwSrbXqA7?= =?us-ascii?Q?rRvZNDlxPN1NeY8A3si87PLZwVNvONzhtKtTvyipVJCItIU/KujeWtmeh+V/?= =?us-ascii?Q?k7IMTRXkGJPyaqcvS6MfS0I4Oari7KIqCJD5icim2BlKSU2v6crja3jVFY8B?= =?us-ascii?Q?HzSfJh0Au8T8kUi1L5B+VLOQKMIl/sZWmHApkq/uOUweQV2zDPXfoFM3f+s7?= =?us-ascii?Q?gwRYnHXs+fXxBFS/32zQwekmAZXHb0SoeHRxlUhxxsAH0Q5fqodlL69PVVkX?= =?us-ascii?Q?3OnGwjMwt+qi/8/uT9pcmT5+hpFvOgr/huxtUAoKjfDC34Nx8QZ76mnkcX00?= =?us-ascii?Q?LBSKpBMEyFg10bvmncyb93UxSoBUCqy1MXnHp8foPZjoIdI1iMllet2beTsb?= =?us-ascii?Q?G4w5GyOcc46ZCbrxwp9HlanIuv1obvlQuHxuxXtegx7Yt6fTI7NH7ihmFmwL?= =?us-ascii?Q?d1e66SuFD/HEIIu3AbAWpRU4w3TjSVRTSazc6/woZstSIr0I6CEtCxjxEx+g?= =?us-ascii?Q?2kB5F7yDv6MXy69XPmtuQ5JD5k3jk64wlZThbccyAaYjG/n7w0lmGERcY8NG?= =?us-ascii?Q?pwBLhbh2KbfY8u8UOg/ov+g6wYept/5DAaHx1aIS4DzBQKAywIApCkW2IQlW?= =?us-ascii?Q?pmxmyGvRLBi8UOTUEvtyCjtorvSrjoM7ReCYZwThnjCE4NJuSY8pKUA+Jo13?= =?us-ascii?Q?O3A4CW1jpB7TwYPydy2a3aSE7lLMTvQBkGA3eW0lM81KUBmb+WwJZ4SBo/E0?= =?us-ascii?Q?nj6H+qx+6qViScNM7hMuLFkec76w5fZ97S9INp+hqG6/4RlFoH5OURfTOKW5?= =?us-ascii?Q?xtDXHjfzM+Xe4g/WWj+kPKZKaOeM1IMQ/o+z+1WZ3F6nAHts2urT9cjunWyS?= =?us-ascii?Q?Pi1BPRthJ6KMHrWZQGwRZ3jzQ4Bf0Gnw1JViTjiE8SoNIabmBC8Qruw3alFW?= =?us-ascii?Q?QUNXUES2x56D6Eb8ApuX1CXKAURmlvMq+qfUpIFE9rrKk8eTYxUnYPOlrhas?= =?us-ascii?Q?2A/9BeeLdzNiQ2o+b1c4fuNsct/oAgo+1xPEDKlL4OQl0pwzc/YuOZdGwLkr?= =?us-ascii?Q?u7ckSJtrgTK6f8YSKESvWA2ZxJ/n+drAAgex1tKcBHMVZV9CJA3SXAKsZhuQ?= =?us-ascii?Q?UKGxGxMqOx9U4e0q5xIi65kJwqKDCrJGOI2J2npRbiyZQ9lbA3R3Sbd3N1e8?= =?us-ascii?Q?ZlkQQroC3/ODr50ByJGOPEATl1Smba8CPxxhapor3pNJGPsLnRftzRjpcNg9?= =?us-ascii?Q?7Eo8WHw3fpR5Y3b62VUdVOlbmMry5HfPR76Ps4Qk293wbvNmdxGSInjOWmpC?= =?us-ascii?Q?92M9yehJgx1zExv/SnDTXJBYt1nG+Y8KWDJfHz3RqtoNY08eXXyancWbpxdX?= =?us-ascii?Q?PRyltAY82pRk3HUup1+uxr5+wHJzaAxLgBlOxw4ZAEx59BjG+b2eFPyPo2YQ?= =?us-ascii?Q?Awxn7bIlyqHHbrIK5e8EnCe4ohbw7kcGpSdXLNTxveilvBGGzLw8ZlLonnWS?= =?us-ascii?Q?Tj0gQJD6Kzh5L+V/MnQjFk4=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 658e70e2-1cc9-42ea-030f-08de12047e53 X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:24.3211 (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: 72ouAP6OTlRWcyWozJic1LHVeYyjI+710Bw6pXFS034SO4hLI5fdg+j5sJqhCKOG4wZ2euCGuBrTppPqRyO3uA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY7P286MB5387 Content-Type: text/plain; charset="utf-8" Introduce new mwN_offset configfs attributes to specify memory window offsets. This enables mapping multiple windows into a single BAR at arbitrary offsets, improving layout flexibility. Signed-off-by: Koichiro Den --- drivers/pci/endpoint/functions/pci-epf-vntb.c | 133 ++++++++++++++++-- 1 file changed, 120 insertions(+), 13 deletions(-) diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c b/drivers/pci/en= dpoint/functions/pci-epf-vntb.c index 55307cd613c9..6953abb2987d 100644 --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c @@ -38,6 +38,7 @@ =20 #include #include +#include #include #include =20 @@ -109,7 +110,8 @@ struct epf_ntb_ctrl { u64 addr; u64 size; u32 num_mws; - u32 reserved; + u32 mw_offset[MAX_MW]; + u32 mw_size[MAX_MW]; u32 spad_offset; u32 spad_count; u32 db_entry_size; @@ -126,6 +128,7 @@ struct epf_ntb { u32 db_count; u32 spad_count; u64 mws_size[MAX_MW]; + u64 mws_offset[MAX_MW]; u64 db; u32 vbus_number; u16 vntb_pid; @@ -441,6 +444,8 @@ static int epf_ntb_config_spad_bar_alloc(struct epf_ntb= *ntb) =20 ctrl->spad_count =3D spad_count; ctrl->num_mws =3D ntb->num_mws; + memset(ctrl->mw_offset, 0, sizeof(ctrl->mw_offset)); + memset(ctrl->mw_size, 0, sizeof(ctrl->mw_size)); ntb->spad_size =3D spad_size; =20 ctrl->db_entry_size =3D sizeof(u32); @@ -570,15 +575,31 @@ static void epf_ntb_db_bar_clear(struct epf_ntb *ntb) */ static int epf_ntb_mw_bar_init(struct epf_ntb *ntb) { + struct device *dev =3D &ntb->epf->dev; + u64 bar_ends[BAR_5 + 1] =3D { 0 }; + unsigned long bars_used =3D 0; + enum pci_barno barno; + u64 off, size, end; int ret =3D 0; int i; - u64 size; - enum pci_barno barno; - struct device *dev =3D &ntb->epf->dev; =20 for (i =3D 0; i < ntb->num_mws; i++) { - size =3D ntb->mws_size[i]; barno =3D ntb->epf_ntb_bar[BAR_MW1 + i]; + off =3D ntb->mws_offset[i]; + size =3D ntb->mws_size[i]; + end =3D off + size; + if (end > bar_ends[barno]) + bar_ends[barno] =3D end; + bars_used |=3D BIT(barno); + } + + for (barno =3D BAR_0; barno <=3D BAR_5; barno++) { + if (!(bars_used & BIT(barno))) + continue; + if (bar_ends[barno] < SZ_4K) + size =3D SZ_4K; + else + size =3D roundup_pow_of_two(bar_ends[barno]); =20 ntb->epf->bar[barno].barno =3D barno; ntb->epf->bar[barno].size =3D size; @@ -594,8 +615,12 @@ static int epf_ntb_mw_bar_init(struct epf_ntb *ntb) &ntb->epf->bar[barno]); if (ret) { dev_err(dev, "MW set failed\n"); - goto err_alloc_mem; + goto err_set_bar; } + } + + for (i =3D 0; i < ntb->num_mws; i++) { + size =3D ntb->mws_size[i]; =20 /* Allocate EPC outbound memory windows to vpci vntb device */ ntb->vpci_mw_addr[i] =3D pci_epc_mem_alloc_addr(ntb->epf->epc, @@ -604,19 +629,31 @@ static int epf_ntb_mw_bar_init(struct epf_ntb *ntb) if (!ntb->vpci_mw_addr[i]) { ret =3D -ENOMEM; dev_err(dev, "Failed to allocate source address\n"); - goto err_set_bar; + goto err_alloc_mem; } } =20 + for (i =3D 0; i < ntb->num_mws; i++) { + ntb->reg->mw_offset[i] =3D (u32)ntb->mws_offset[i]; + ntb->reg->mw_size[i] =3D (u32)ntb->mws_size[i]; + } + return ret; =20 -err_set_bar: - pci_epc_clear_bar(ntb->epf->epc, - ntb->epf->func_no, - ntb->epf->vfunc_no, - &ntb->epf->bar[barno]); err_alloc_mem: - epf_ntb_mw_bar_clear(ntb, i); + while (--i >=3D 0) + pci_epc_mem_free_addr(ntb->epf->epc, + ntb->vpci_mw_phy[i], + ntb->vpci_mw_addr[i], + ntb->mws_size[i]); +err_set_bar: + while (--barno >=3D BAR_0) + if (bars_used & BIT(barno)) + pci_epc_clear_bar(ntb->epf->epc, + ntb->epf->func_no, + ntb->epf->vfunc_no, + &ntb->epf->bar[barno]); + return ret; } =20 @@ -922,6 +959,60 @@ static ssize_t epf_ntb_##_name##_store(struct config_i= tem *item, \ return len; \ } =20 +#define EPF_NTB_MW_OFF_R(_name) \ +static ssize_t epf_ntb_##_name##_show(struct config_item *item, \ + char *page) \ +{ \ + struct config_group *group =3D to_config_group(item); \ + struct epf_ntb *ntb =3D to_epf_ntb(group); \ + struct device *dev =3D &ntb->epf->dev; \ + int win_no, idx; \ + \ + if (sscanf(#_name, "mw%d_offset", &win_no) !=3D 1) \ + return -EINVAL; \ + \ + idx =3D win_no - 1; \ + if (idx < 0 || idx >=3D ntb->num_mws) { \ + dev_err(dev, "MW%d out of range (num_mws=3D%d)\n", \ + win_no, ntb->num_mws); \ + return -EINVAL; \ + } \ + \ + idx =3D array_index_nospec(idx, ntb->num_mws); \ + return sprintf(page, "%lld\n", ntb->mws_offset[idx]); \ +} + +#define EPF_NTB_MW_OFF_W(_name) \ +static ssize_t epf_ntb_##_name##_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); \ + struct device *dev =3D &ntb->epf->dev; \ + int win_no, idx; \ + u64 val; \ + int ret; \ + \ + ret =3D kstrtou64(page, 0, &val); \ + if (ret) \ + return ret; \ + \ + if (sscanf(#_name, "mw%d_offset", &win_no) !=3D 1) \ + return -EINVAL; \ + \ + idx =3D win_no - 1; \ + if (idx < 0 || idx >=3D ntb->num_mws) { \ + dev_err(dev, "MW%d out of range (num_mws=3D%d)\n", \ + win_no, ntb->num_mws); \ + return -EINVAL; \ + } \ + \ + idx =3D array_index_nospec(idx, ntb->num_mws); \ + ntb->mws_offset[idx] =3D val; \ + \ + return len; \ +} + #define EPF_NTB_BAR_R(_name, _id) \ static ssize_t epf_ntb_##_name##_show(struct config_item *item, \ char *page) \ @@ -992,6 +1083,14 @@ EPF_NTB_MW_R(mw3) EPF_NTB_MW_W(mw3) EPF_NTB_MW_R(mw4) EPF_NTB_MW_W(mw4) +EPF_NTB_MW_OFF_R(mw1_offset) +EPF_NTB_MW_OFF_W(mw1_offset) +EPF_NTB_MW_OFF_R(mw2_offset) +EPF_NTB_MW_OFF_W(mw2_offset) +EPF_NTB_MW_OFF_R(mw3_offset) +EPF_NTB_MW_OFF_W(mw3_offset) +EPF_NTB_MW_OFF_R(mw4_offset) +EPF_NTB_MW_OFF_W(mw4_offset) EPF_NTB_BAR_R(ctrl_bar, BAR_CONFIG) EPF_NTB_BAR_W(ctrl_bar, BAR_CONFIG) EPF_NTB_BAR_R(db_bar, BAR_DB) @@ -1012,6 +1111,10 @@ CONFIGFS_ATTR(epf_ntb_, mw1); CONFIGFS_ATTR(epf_ntb_, mw2); CONFIGFS_ATTR(epf_ntb_, mw3); CONFIGFS_ATTR(epf_ntb_, mw4); +CONFIGFS_ATTR(epf_ntb_, mw1_offset); +CONFIGFS_ATTR(epf_ntb_, mw2_offset); +CONFIGFS_ATTR(epf_ntb_, mw3_offset); +CONFIGFS_ATTR(epf_ntb_, mw4_offset); CONFIGFS_ATTR(epf_ntb_, vbus_number); CONFIGFS_ATTR(epf_ntb_, vntb_pid); CONFIGFS_ATTR(epf_ntb_, vntb_vid); @@ -1030,6 +1133,10 @@ static struct configfs_attribute *epf_ntb_attrs[] = =3D { &epf_ntb_attr_mw2, &epf_ntb_attr_mw3, &epf_ntb_attr_mw4, + &epf_ntb_attr_mw1_offset, + &epf_ntb_attr_mw2_offset, + &epf_ntb_attr_mw3_offset, + &epf_ntb_attr_mw4_offset, &epf_ntb_attr_vbus_number, &epf_ntb_attr_vntb_pid, &epf_ntb_attr_vntb_vid, --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010016.outbound.protection.outlook.com [52.101.229.16]) (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 2A0B22DEA78; Thu, 23 Oct 2025 07:19:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.16 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203971; cv=fail; b=Ha9oUQk6scImcEUVQcnCzZ74sPYy9ivAJjxOuy8fjcidRlXaBe1dlivzM6wVQJvtGgSrUXtiIdR3GD5UhdgCgm7Q0Qoymp4CqaKbDVjThVlln6469t4Vj7qzcxvufXqxMqIJs6fWyaHkue5alq5vp7BD+WOpLQR4MuBI8rwTF0Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203971; c=relaxed/simple; bh=2nUA1zCGpabdSGOuh2wWne0BwiG/Kh26sCnNrLWPgrE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=SK6Axx6WAp2vEIVk2YrQvHvJuOo+3yeabeC+MeWRCFBxTG7MEH98lHZs9i0FH0atRA0WKAcwY21TyZLwPf1pwzAOgPjeNjmebH+OBnWITOYOydxpEpH0BPHpE3t71TamMISVXe++lb9TpOALKhcIfiHUxsQ3uuhAe2XlZARX16U= 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=ubyZfJb2; arc=fail smtp.client-ip=52.101.229.16 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="ubyZfJb2" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rDExRlG+UyyGLiM0I4r3Q2GSRp5GT6ozozlBKVbBWj7yIPzXla33FvSfLXXK0DfjuYZIMX7lx6jfPrn0rnvTIxeWcnzg4LMSC6sVD6ct1wcQAzBW5zbPDTxBwtx8jXv8AdsTaDikIX64rKL0puqArHf9YKK2+kyDQueNiNxXMem/lIJSnRd8exrD8x1mmjnzASZH64M856Uab4drNF1VBhD/xh0QPK3aVTunu/nt9jg/MkZL6qFZoF7rOUyhvwOC08OqqwVRkc0UsQKbMa/96ajBGu0P5MrnFqVhSDthIWlR47+kk5jz6Uqw6xMillcZPaqP2aghO1C+sychsnJK0w== 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=FhIuzA2RPUAu4BgyrY1Eb8OqCdUGvZHg++B5Ffmmt7g=; b=eEwKnns+kwkn775PBsasTBJ6NN6E/L1WseEu9GMMvSbA6qHQW4VrF4Es4oOJQHdQECVSN6l0knjSv/xwcygFVYVCTQ3LpEm7L0eh7oe30FPZxvDCuyFHuBJoXhjAWrvEKdqu6M5p264RRwUhpibf0JPU/YRAlt8VAImsgfefyyEv+9S3EKZoczxhesug6OFYvuyL/AcyQshTR6kp32DcOMSWUUvc/taHo9IZAw56HhQnP6Nin3EVc0eT/doMf6SUTsgl8Exc/EyyaSDozlHKpTv+UFDkj7pLJpFyGgIqtKI++GY8daSucqMtXvGSHsSid9LRJyTtcQYgemWrfsd6Sg== 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=FhIuzA2RPUAu4BgyrY1Eb8OqCdUGvZHg++B5Ffmmt7g=; b=ubyZfJb23O3Aw4XsXO/MRaZOT9D9H18DNQdATlf+2mEaiT7BtCJr4Rf0/NVjyNduT5wCOFBVVf5C0BsCQt2L16G6bw7eD64ePFgwwpLPQqBUJvh9TRgnu6IRSCWQj0UtbgWpy/pfZy4RMBf8sDUXXRUcx1o0yqzz7UtdswHjoss= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by TY7P286MB5387.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:1f3::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:25 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:25 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 03/25] NTB: epf: Handle mwN_offset for inbound MW regions Date: Thu, 23 Oct 2025 16:18:54 +0900 Message-ID: <20251023071916.901355-4-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0094.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:37a::13) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|TY7P286MB5387:EE_ X-MS-Office365-Filtering-Correlation-Id: 8a5881ee-fcc4-4618-4852-08de12047f3b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?oaPAhRc0EkdLE4eKJ1H4pIqlFQsph5oIUSPe14XFnZmkP7VaTufUWzfYThPT?= =?us-ascii?Q?7vEJty6KpfZo6YO3d3ktg6NaCHK8/5VAiZBEeO9rkMoQzek6AFNoh3pxfumL?= =?us-ascii?Q?mx9U4gjHOw8E0RvACqn/bBDH8eWVMy+Yhb+v6pLqrACA8dRY2hNH6GXyL3SJ?= =?us-ascii?Q?m84ZJrxKkhcpXZ2f8gPgjf/cMSPvizjVR+SbH0GReRlbavKomI42AOh/Jfrc?= =?us-ascii?Q?3i+hq/4XVaTT7e+AljlgqLK7+Ez2SDeDhOT2SVkchgJaAd3KRlIDmBP+e+SJ?= =?us-ascii?Q?fyH0AkNdMTdKZbrsqknERuqhRQ9UKD419x9pZ0e4mkgdN6nWpiF9PeCg3qIs?= =?us-ascii?Q?rX38PrW2UTJJcW/+VJ7KuyHZZwkh4uQstKX8jDFceu3QLi2966mx2D/YXisQ?= =?us-ascii?Q?uCFduDBJklcwNpJBVmNIqxNqUfBBmC+dC+bp3GI2H1fTPU0HPVSfgtbgzbd1?= =?us-ascii?Q?gzO6cEBPt0gVndzUrb23e0TFIeatxNVd3rWsJ/5yzBxGIpALM6Aeu2QiJse4?= =?us-ascii?Q?htlYZ1+Cv6Ku/ShY5SP00/ln90hejPUfhJFJZ3O3lusfSVEZFGMCod48+Di6?= =?us-ascii?Q?/n2Bl459+nMN/ZUmIKF10LnFD8nSoBy1LNiUX+WdM8gTTGBNsYf5Y/PWmyKP?= =?us-ascii?Q?wk1r5nTkdR+Iq3P1f2dX9S+Es9kS2QITmZO8t9lbNyOe9nw2Qt/rh8l+/3Y0?= =?us-ascii?Q?rX/oqDp0JBS6zooxQDmHAPDLFwEMPOEFgUvws3ncTludZeCn7Z1VdiNTs2oh?= =?us-ascii?Q?rVmDJbIflXPPyy+QqjImBaKdpMjkmgPX/X78/Zn06zyvHDeiTMNL5JvMr60d?= =?us-ascii?Q?mBCgvrKGKRhmhUf/M21LsWZiz7V84aheIHDZ+SbBqIAsTGTNOF/hCCKWoWuO?= =?us-ascii?Q?yIU/Iffv+602MVkWGeT7s95z+b75D66+JhzDZ091m6CZchYUjj2UrXZpZ/lN?= =?us-ascii?Q?EzGcPf9VtgDVkpwGvKU1Y40ofmGuxwBkPsOg/zI7/Nv4Fkh0nHm3u7LkDg9x?= =?us-ascii?Q?xm0MdBXjzVSP1MH0vdTNvXI7CJNt7dEvjTtKldzZBxSKHrHQLEIjVoavRDpb?= =?us-ascii?Q?tYJslCZhUR+Np5m7S630G+ab8oslQxrV/6UncHtOTZBClnK/0mrNtECRUhY/?= =?us-ascii?Q?+le46q7Q3OtgbQVf/RLvlS8aJgKeC5gYP2WLA8KQPxiGKQ0sx2gZbgHREqDm?= =?us-ascii?Q?I71llvSxP8mZ99RZjjBwWvrLLMSeJedoJ3n5utwDgkPSgw1KbppiofoZR3ES?= =?us-ascii?Q?JFW5ngJQbVQuj7198bN7n7dl56cZZRymPT928BaiFLLzUl5Rw2ueJ4uVdPry?= =?us-ascii?Q?VfMpEjyTWFET2okYJ6tV6Zf1TylVymzq255bfPI6Fe/2DSw+LpgeemfbMfPd?= =?us-ascii?Q?jX5Iew3NIxxsr4RRt7hS3JLOecA47vAbmlJ/sC+1LROgGIrdyQPdb2n/Ajez?= =?us-ascii?Q?xNX7ovR17pvFjqa+c8hWonieybvkTcaW?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?261+Slxg+vWUTowBuZQxXSY6lw6uVcyIMe9Be2Q2BpWSZFuuyyM1cCxXH/cU?= =?us-ascii?Q?tFnkOI5gaBaVilwwLdKvOjv2KaEiSJE4Yy8PDPkNlRbv16dOUurijH5IlVMo?= =?us-ascii?Q?nibUY22qQjWodXi9Z7P6ksjsWyuOUCaGzO+CP80X/WfJfn8C1iPHdNIFtFeb?= =?us-ascii?Q?daU9tmkn5B1SMamPgykbtQpnom+bOiSPjlORvqZVTTI1T4D8i6AWfkQqqrFb?= =?us-ascii?Q?MEkJBDauII1W3G4TaM6UMlmHX1wAtt6MWkJNGlDv9/c2BazbNc2DO7quJxgL?= =?us-ascii?Q?yDqIpKP+SCKEByUKughCdEZrEHgt2xhQh+4Z1qvcdcXuFyQ8Wpyo0a9Puhom?= =?us-ascii?Q?eQ0GcLroVIzJEG4gvI9fXkIJqRKppcJU8xXR0CabPoHJBuyP9NpjYBPsAibJ?= =?us-ascii?Q?6C0uqaC0JVWix72SK7Dg+z6S45vvotde09D7XK/8hUXqwkhr4tfzH+MFXa1L?= =?us-ascii?Q?zqDBVNs/NR7frvTuI3ENW92LeK9vO8cZvMNZQv8m9/Gj0jEgloFbgfMd9poj?= =?us-ascii?Q?wQNPExQo3g+0CVID8ipPxFmxfiLpqySD9/FsDPVys5d9uneVxEtCgCmjE8of?= =?us-ascii?Q?t3ofNx3oiEvQYVyluhZIweNp7vcrjx5ix+3qb8uP6QrHlyalJ+oAZ+WdYhEe?= =?us-ascii?Q?nEovxb0hWDRpVkq3O/vteNSPW4H39z0zScO8k5kISzhu8fknF7T+6q5+766j?= =?us-ascii?Q?6hM6u6gj72Lgp84rMSjCKvBpDt1nwJwWXkZQ1ghpf6cAiP1tyLH4VxiN4Xtt?= =?us-ascii?Q?IN6iFdkmVLGZ8vAreWD6ddHF+lngAPRm64WUaEN/YL+Wu6ovitKqG1IQX7ay?= =?us-ascii?Q?7oFDBFl6twQFdpTkfJ7+kT8CpHCdpx43MKLJxQHRyOVaZ7dnCUvHWEH/vfXq?= =?us-ascii?Q?ksRwCJBgeC0K4VD0nm/pzL7kOA9+yHXI90g4TcDGEPXu42SSH51/YY7COscK?= =?us-ascii?Q?fxRwdoeteh707PCBIMTrqpmCE2OOKWzGvZKK8sJCmr/Cc+ph1pIfNEf8eknC?= =?us-ascii?Q?TILPm24DjPJ5t3q6rg7KZ81Gqqy3CicDGdEn1B9A1byHbBYe5l000SAmhDXM?= =?us-ascii?Q?/rdJ0Taio3gYaa5hxYZ7hiCbMpP6tQX+C1BVBv3g6+ozjFd5KPds7535wank?= =?us-ascii?Q?8dYHqIQ2tAyj1XPPnTtVmc5SUhFvbrw2SX9i6bS5IxBM3jxgcA1meUKPpI2t?= =?us-ascii?Q?yUDvv/SEAVUWbDEihk5BewO4VZC6Lap23MgS/OXd9Kxu0ME//237B1/aEWf4?= =?us-ascii?Q?Fk7PXXMmrG8e1FxCLzZDNya5kJwmx1vgir9X0+xocYrSLJGxSpfrZthG3+ps?= =?us-ascii?Q?CdYFfEnUB16oP06S2e1hE0VNMEy9jHznKUMsjZyEtwV9G/y1g7kcQWur3mEM?= =?us-ascii?Q?VMIcrsX3bLqQG+n96ODWO7lrTcSZlJMRJgcR6X6dtNEmZ9LfA+be6bHI+tLR?= =?us-ascii?Q?AmlBfOD8rObD5/BFmPHoOu8i61xG9AujJDfq2JhFUwpf5P452jxDT0DtJuLY?= =?us-ascii?Q?xbtocaXGSfO/+UHMbK1ibOuYT2YEjrpm8COoiIw2LwgKBzCrVYgSxh1Pd0ib?= =?us-ascii?Q?77pjsDCkB2tDdMxYJrBgQwkzrdsuG10mLwubeR/XY4RkCM/eCA9tP5f6tjaX?= =?us-ascii?Q?vditVNhQchYWtGZF6mRJI04=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 8a5881ee-fcc4-4618-4852-08de12047f3b X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:25.8046 (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: smXErNaZfhBImgS8cHUwBTKJ0dTnrmbqrjm414VWwNDhsAuhbD12Ii78z8/3d0DLNfToF8WpnH0JS6qJium0IQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY7P286MB5387 Content-Type: text/plain; charset="utf-8" Add and use new fields in the common control register to convey both offset and size for each memory window (MW), so that it can correctly handle flexible MW layouts and support partial BAR mappings. Signed-off-by: Koichiro Den --- drivers/ntb/hw/epf/ntb_hw_epf.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/drivers/ntb/hw/epf/ntb_hw_epf.c b/drivers/ntb/hw/epf/ntb_hw_ep= f.c index d3ecf25a5162..91d3f8e05807 100644 --- a/drivers/ntb/hw/epf/ntb_hw_epf.c +++ b/drivers/ntb/hw/epf/ntb_hw_epf.c @@ -36,12 +36,13 @@ #define NTB_EPF_LOWER_SIZE 0x18 #define NTB_EPF_UPPER_SIZE 0x1C #define NTB_EPF_MW_COUNT 0x20 -#define NTB_EPF_MW1_OFFSET 0x24 -#define NTB_EPF_SPAD_OFFSET 0x28 -#define NTB_EPF_SPAD_COUNT 0x2C -#define NTB_EPF_DB_ENTRY_SIZE 0x30 -#define NTB_EPF_DB_DATA(n) (0x34 + (n) * 4) -#define NTB_EPF_DB_OFFSET(n) (0xB4 + (n) * 4) +#define NTB_EPF_MW_OFFSET(n) (0x24 + (n) * 4) +#define NTB_EPF_MW_SIZE(n) (0x34 + (n) * 4) +#define NTB_EPF_SPAD_OFFSET 0x44 +#define NTB_EPF_SPAD_COUNT 0x48 +#define NTB_EPF_DB_ENTRY_SIZE 0x4C +#define NTB_EPF_DB_DATA(n) (0x50 + (n) * 4) +#define NTB_EPF_DB_OFFSET(n) (0xD0 + (n) * 4) =20 #define NTB_EPF_MIN_DB_COUNT 3 #define NTB_EPF_MAX_DB_COUNT 31 @@ -451,11 +452,12 @@ static int ntb_epf_peer_mw_get_addr(struct ntb_dev *n= tb, int idx, phys_addr_t *base, resource_size_t *size) { struct ntb_epf_dev *ndev =3D ntb_ndev(ntb); - u32 offset =3D 0; + resource_size_t bar_sz; + u32 offset, sz; int bar; =20 - if (idx =3D=3D 0) - offset =3D readl(ndev->ctrl_reg + NTB_EPF_MW1_OFFSET); + offset =3D readl(ndev->ctrl_reg + NTB_EPF_MW_OFFSET(idx)); + sz =3D readl(ndev->ctrl_reg + NTB_EPF_MW_SIZE(idx)); =20 bar =3D ntb_epf_mw_to_bar(ndev, idx); if (bar < 0) @@ -464,8 +466,11 @@ static int ntb_epf_peer_mw_get_addr(struct ntb_dev *nt= b, int idx, if (base) *base =3D pci_resource_start(ndev->ntb.pdev, bar) + offset; =20 - if (size) - *size =3D pci_resource_len(ndev->ntb.pdev, bar) - offset; + if (size) { + bar_sz =3D pci_resource_len(ndev->ntb.pdev, bar); + *size =3D sz ? min_t(resource_size_t, sz, bar_sz - offset) + : (bar_sz > offset ? bar_sz - offset : 0); + } =20 return 0; } --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010016.outbound.protection.outlook.com [52.101.229.16]) (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 316952E6CB3; Thu, 23 Oct 2025 07:19:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.16 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203973; cv=fail; b=X9Vf2bPRWx66/YVnriLKqMb4/3k0/khPxHCoBjCntTZO8fOb4giyA2X3BJnGkbkgRxPbqcXlqTy8ID8SXpGOq8IIZGOpEITYwRazI+LEnKW82M5reDZN7sWN5cP6fiL4MqWEcJ1UHIg0WxLWtfnD/OXH/O0nB4npcXHIYtTI+5I= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203973; c=relaxed/simple; bh=AfSPc3yS9emtbnkNJoSAjd+6NNVAsQLDanUDh+E6FUQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=cv374rY7929RPUsNl6YLVOiQFwVxhevKUP//6D9HoiDgl1Om6lAvhYhfSY540LemPfsMrVwZUtP5MCIeRBZ/9bsHzTCCONmd3d2CbEZxw5nE9YKdQvwluWvlJYMXw304iNk9hFigzLijFhX2JevPj7dGODEsQ4H9ikgzgBR65q4= 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=QdnMMO63; arc=fail smtp.client-ip=52.101.229.16 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="QdnMMO63" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=a9nwU7ktcxD+yS7gGjB5H63lYMUTdGSOMFmx91Vg8iezNqRx1gLL7NvBo2tk5SFLmFuPNT/szjgXu2zKtgCMBA4T+pz+Q112PgGcUwMO6w/bCReyT8FnZ+BS7pBhmlmzCQ5X2hI+DteNYpg/9OE3z5LwMTaAgnQ7WXqPsCQQtSNxVeS8Yt2Q15jiJ4FOF0JsFT1J1xHTkgxAIJGc0Tup7l5CD2IHLWquIadodGVX88w6y6VxrA85cfTqEiwmIf0sMAT4TF38qX52uO06YammXC5sGTGBWXbLn4YbIw5725inHlTo/iGmLDItDOfBatj0Pn5RpSw0qnhcBZ/qDOjJMQ== 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=2gnenupYkY5PlWslXZOMojW4YoQk3SqrA0lesD6JlE0=; b=C6X05EA23qZ/+ckQKmkvHPY1sASvK0zAotAHPABBFqP5aTSaljL/+VnJKP2ZCBw7y4CN2JijXDnaodUwDt6aqMXtIudbXOpWB5OwDrXgq767qrMr74+KORdCfHWt+GfY9YJ8rtY1/P3BWD6htF1pTZBzcotut+SBh3SS0oLxiQgWF0TKOZE1YIU+pavioVZuRZWWLGBATedBLrqM8pf9g7cemgSpIrHubeSqS/ZPvUMis3UY3IrQlgAdB3n3t+DMFwcqHibDpPuyvjiqDno+BYCODCYaJwXQ0T4GqRs69CXeb1yu0cgfl/cNwDmGAcgobFm/+Vw0ixPsVVggBOE8eg== 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=2gnenupYkY5PlWslXZOMojW4YoQk3SqrA0lesD6JlE0=; b=QdnMMO63iJJxSu7Mub+EoVP7GdpThJ42RiZJSnPZ/EVPXn3ubb+W0AHWiRdVQZdT6W4kqm+L2FYgBFFBf28S1QkllKfCwA1nnB0rN3oA37m/H6wtoh7OONJjiA1lp/EeJpT2xuFM6hdKOPTsYRykYYK0yjW4LOeODVuMqcs5Pr8= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by TY7P286MB5387.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:1f3::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:27 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:27 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 04/25] PCI: endpoint: Add inbound mapping ops to EPC core Date: Thu, 23 Oct 2025 16:18:55 +0900 Message-ID: <20251023071916.901355-5-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP301CA0058.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:384::7) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|TY7P286MB5387:EE_ X-MS-Office365-Filtering-Correlation-Id: 3f25273e-2ff6-45c9-3ca3-08de12047fe5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?aPLRtKzeLZ5eG7Bq2vp/59lnVIJsX65nzoF4o05B1ksLV/OwFcCOaJ7bLtnk?= =?us-ascii?Q?pyXESO36r701nNBCBCVFvjYoBVwuvGPFS6/3Leg+PhcZQvlvujiAoorJKPkd?= =?us-ascii?Q?Fn+xl/ZczcDJVK7wNkmLrddZiD4QanqYEdC0pGgVexsmMqRwiAIhzu77EPMV?= =?us-ascii?Q?77tsVqhzqsvoWpbFTW9+32HeayMyaDrU3b3mw4Pj9hKXnpxcxc456NzuLOcd?= =?us-ascii?Q?mMpQDsDadQ6Z/0cJUWf282tCfwCSJHf5tg1IlfB/UUoDxEaQ4Nr4jHRClcbK?= =?us-ascii?Q?BqTZT/CY7sWC9gw4Ofu7s6b/7Qit9cCdai8AarU/MZav/91j+tdJxEQqv66d?= =?us-ascii?Q?7w6iKO/yM44AyVdnjXIzS2MUtM1eAzNGWAsTd0/QHzcdElQHi5iUBsa2tYV1?= =?us-ascii?Q?VKpCPMIXqs63t0Pf2bijb56gG1AK2I/jwEvDD18/WPS4AqaEhtU0cabpwhDO?= =?us-ascii?Q?nlcSUhvRJD3pd+z6Zzk3IQhEAFs5+otaiZmOYtlm1CgpSu0rlTrJMSKmdh1j?= =?us-ascii?Q?ls8c5bYME7dCnNrjAo4yjUwbh9mMtYG12Hpp2wa3b+8aW4fZQKUJF36SSrTG?= =?us-ascii?Q?KguWyp0L9Y+PRk3ZyBxQwe0oxVkmAE7MdB+/0eoIFaYh6aAsu360GwDKD8Ix?= =?us-ascii?Q?MG67IAhhGJztTW4S6X5cNLHbPc0Uam0Q6RHcxbC4/BvWdXiXnHJ7YCmhAX9W?= =?us-ascii?Q?/euYl9U2Wmx70BiWrTHD57kgShUWryb1lZQjKWNxvvHVkOyCgUbekEG2jfKJ?= =?us-ascii?Q?VFCWeWjTDM05eH5iS+Fh839IgytIlW4j/pyYxmMk7pGt5dpM3tGoASpK4l5Y?= =?us-ascii?Q?ZQoeBoAHLm8rUQkZSRswf1Nrb6lshmbQJNRIaI8UQY81UUMHvlZ/luj459iI?= =?us-ascii?Q?yTSjnYtsoRQpO0YM+p0BYik5dJNq0zwgh9Ix6cuL2i5840g4czzdtGCXH90z?= =?us-ascii?Q?4UJUq83hzsAw/NkwcQSPtS3ZwCGYmb08U8jOX1LweAsRf8gdwqN/bOe48x70?= =?us-ascii?Q?Oh8KCyxTuyJAvJC3Ayg8zik1RNVE8j3UuQtZ88cUYyjArbNOGms8Wvf32hXc?= =?us-ascii?Q?l6FiWTjpSOvKUY5yDaqkDQtBCJwkcBWc9VLiY4kFr6HOXr6HlpgaQgj/Cnyt?= =?us-ascii?Q?Q3AwHcUHReTNt9Tzu1XZuAU+fS/X95YAUoC61xjPA5oth7msBT5OrKQR5DvU?= =?us-ascii?Q?MMgUXjQVh7+mTGf5e8qT5gFyeUm/a2pNSOCknywLdp7GtqwygeQUBFAITAOl?= =?us-ascii?Q?k7pi2BT5vZbGfLiRUANkmrkQJiaz0I2h717FyVKJt9ar1YuyKhHXdnRYZCNZ?= =?us-ascii?Q?zNtyNmO8BPnn9awZlXB3YrS8+Pg+HMkctbtdzpqRfrkuijJqCuV4uM3fOi8P?= =?us-ascii?Q?jvhC1MaCwaF5MGhJeZEwFFhpbR5Edq6+iF4iGcpYrmU4tmNW7TEn7qMdDKQR?= =?us-ascii?Q?ib4LJSdXxoSKZSLz57mZMWxtuuT4Esxu?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?mKp5hUZAdY0d7nMNi8afQTF5J9b/cvfkYwWaVzOFYPwjw0btNNVcJ9Tvd2zK?= =?us-ascii?Q?yNeauJfBxY+yZxpv7UlwH+Bv0brEfbuSUfl82bdt19/8LC88V8CupMnMbDga?= =?us-ascii?Q?IX6Hoq5l2HCQKRTZfpg6z/8SMqwBEns6RYB5PTmY1aY7QSXgfLgrcDd8cwu9?= =?us-ascii?Q?PKNMNzyWV/2s7MK3CDHWwhYlYbLr3+wl5IMUtYLgZBbiJtIrLIv5NYsD29Gq?= =?us-ascii?Q?XkaAYKGPPg/Ggi48hCC19zSOIPRd4FzT7nU6eR1KwV/6591dAFJ+3X4cmSXe?= =?us-ascii?Q?rTqd1tSpVvg/SGDz4rZlwmdQGI8mJSEGUcS5d2W5h5LeG15srLku6Iw4kLry?= =?us-ascii?Q?zZUrI1kR9XER7ri9A0541iXkoneorX5KabyxHhUgiPMZAed7xohqCtBLM+QZ?= =?us-ascii?Q?uHn7hUAwanlcizMgtUe1dn3qtkjLljNCxHpa0fkrWGFKYcz3U1FpP8Bwz0y6?= =?us-ascii?Q?Za8u3Ak10xpDn6/935ERMJTAlTcbD08P2QHFn3xVXHaxGofiaLVNIOOeISoU?= =?us-ascii?Q?pFKarnm1dlv671JHZL7I/GNFihFWef4E833pk8Uqs8izrT0JplATwfIUgSTX?= =?us-ascii?Q?kQIPCz+eR5m4SXMiYOlevuvfFK5ko8FC8jm3nIs3wAzNP8XEDxhbaPSQYFw3?= =?us-ascii?Q?bJzqocboF14SFkEha4fxesxh7EDYnvlwQvxw46HMjdk6y5Lf3+aFnnptSxB9?= =?us-ascii?Q?KmsrMAnMY1Wj3B1L7+rmnqJVYkOKTQS8Yw0lXmQpuwkJsv3EIjZwzRoI+JPR?= =?us-ascii?Q?Y/r6daIjw6h0tSj70DxnE+ZKveP31hzkeliHfhyYpa1yzlAqVxLomFWqj8dX?= =?us-ascii?Q?3gQ0nGBASip3P0XuTlZ8iXN+Lgy08Q+5L9vZdTHEdOW0eK3HPlWcKRNVDxhI?= =?us-ascii?Q?SdZZFwf5NhzQTR/2A3pt5bMnRr6EBaK863lyuc153r1+++sSkmuWNkAg/hzZ?= =?us-ascii?Q?h0+Dz463PAL+S3Ivoudnvnplekoe5EkBBZVUdzNmnaaZhpDSZGdAm6e1x+kc?= =?us-ascii?Q?r0KE3WgR2FR2W4Ba2oN2qr+gc1OI3bo2Qsa3yz+D3KVcHUu/ZbEDyi2iYZ7M?= =?us-ascii?Q?HZ47uiFll5xtmzp01LnnLTM0H8ADqujz/GkTEUIpIB7FFwH5oS/NZ6qcM9gb?= =?us-ascii?Q?Rht9xuwaWsw+yxrlQCEnEXc8/hpB7OMsOnsoFvnhFfS4NTfF1aDnl+rT04eL?= =?us-ascii?Q?Lp8HCrBOboI/6F8LOTMks4VdxbimFSzMXK0Cb6GxNuM2QSofraGpUAeCvbp7?= =?us-ascii?Q?FTf22adRWaRN9hrtutM2u+TQwSjBGnBW7lD217U2FRngqoIEUYmpG9Q91CDe?= =?us-ascii?Q?ZnS39uLoovmfn9F+2Fq5KyH87g1oT0KikQ0W0HIdJNwPjRjX/389Db00Hawt?= =?us-ascii?Q?oOwrgLZ/WQzlNFWWJmB7ONj3j+S0nVQ2IgPOdXB3gkFL5QbxuuVvJQ14+lyW?= =?us-ascii?Q?aGMoM8MX48Cve1+u6paMNuaoFvL0l0gOjKQLlRwKH3vXL3d0OHtYYCnGUMMU?= =?us-ascii?Q?Hr/c7Rq2IgdaJmkb0aQN6+8K9k/+qkB57iQn3jCUAmBW0SRPvuQtOeMKcyVs?= =?us-ascii?Q?YpEnAQdDLVYtgHUj3OpcTiLpYe6IctbfolvhPJrVxAySy7maRKXowhezcoUF?= =?us-ascii?Q?8+2wO6/9ZP/YciTlCdzq3Fw=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 3f25273e-2ff6-45c9-3ca3-08de12047fe5 X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:26.9585 (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: JqX7jw3Aa2Nio1bPD21cs89+RxQywIyhrsGP4A1h9xe9daXxk/AR9ngJNms3W0PhKb0J71GFIHbP9Fmi6lz0Ow== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY7P286MB5387 Content-Type: text/plain; charset="utf-8" Add new EPC ops map_inbound() and unmap_inbound() for mapping a subrange of a BAR into CPU space. These will be implemented by controller drivers such as DesignWare. Signed-off-by: Koichiro Den --- drivers/pci/endpoint/pci-epc-core.c | 44 +++++++++++++++++++++++++++++ include/linux/pci-epc.h | 11 ++++++++ 2 files changed, 55 insertions(+) diff --git a/drivers/pci/endpoint/pci-epc-core.c b/drivers/pci/endpoint/pci= -epc-core.c index ca7f19cc973a..825109e54ba9 100644 --- a/drivers/pci/endpoint/pci-epc-core.c +++ b/drivers/pci/endpoint/pci-epc-core.c @@ -444,6 +444,50 @@ int pci_epc_map_addr(struct pci_epc *epc, u8 func_no, = u8 vfunc_no, } EXPORT_SYMBOL_GPL(pci_epc_map_addr); =20 +/** + * pci_epc_map_inbound() - map a BAR subrange to the local CPU address + * @epc: the EPC device on which BAR has to be configured + * @func_no: the physical endpoint function number in the EPC device + * @vfunc_no: the virtual endpoint function number in the physical function + * @epf_bar: the struct epf_bar that contains the BAR information + * @offset: byte offset from the BAR base selected by the host + * + * Invoke to configure the BAR of the endpoint device and map a subrange + * selected by @offset to a CPU address. + * + * Returns 0 on success, -EOPNOTSUPP if unsupported, or a negative errno. + */ +int pci_epc_map_inbound(struct pci_epc *epc, u8 func_no, u8 vfunc_no, + struct pci_epf_bar *epf_bar, u64 offset) +{ + if (!epc || !epc->ops || !epc->ops->map_inbound) + return -EOPNOTSUPP; + + return epc->ops->map_inbound(epc, func_no, vfunc_no, epf_bar, offset); +} +EXPORT_SYMBOL_GPL(pci_epc_map_inbound); + +/** + * pci_epc_unmap_inbound() - unmap a previously mapped BAR subrange + * @epc: the EPC device on which the inbound mapping was programmed + * @func_no: the physical endpoint function number in the EPC device + * @vfunc_no: the virtual endpoint function number in the physical function + * @epf_bar: the struct epf_bar used when the mapping was created + * @offset: byte offset from the BAR base that was mapped + * + * Invoke to remove a BAR subrange mapping created by pci_epc_map_inbound(= ). + * If the controller has no support, this call is a no-op. + */ +void pci_epc_unmap_inbound(struct pci_epc *epc, u8 func_no, u8 vfunc_no, + struct pci_epf_bar *epf_bar, u64 offset) +{ + if (!epc || !epc->ops || !epc->ops->unmap_inbound) + return; + + epc->ops->unmap_inbound(epc, func_no, vfunc_no, epf_bar, offset); +} +EXPORT_SYMBOL_GPL(pci_epc_unmap_inbound); + /** * pci_epc_mem_map() - allocate and map a PCI address to a CPU address * @epc: the EPC device on which the CPU address is to be allocated and ma= pped diff --git a/include/linux/pci-epc.h b/include/linux/pci-epc.h index 4286bfdbfdfa..a5fb91cc2982 100644 --- a/include/linux/pci-epc.h +++ b/include/linux/pci-epc.h @@ -71,6 +71,8 @@ struct pci_epc_map { * region * @map_addr: ops to map CPU address to PCI address * @unmap_addr: ops to unmap CPU address and PCI address + * @map_inbound: ops to map a subrange inside a BAR to CPU address. + * @unmap_inbound: ops to unmap a subrange inside a BAR and CPU address. * @set_msi: ops to set the requested number of MSI interrupts in the MSI * capability register * @get_msi: ops to get the number of MSI interrupts allocated by the RC f= rom @@ -99,6 +101,10 @@ struct pci_epc_ops { phys_addr_t addr, u64 pci_addr, size_t size); void (*unmap_addr)(struct pci_epc *epc, u8 func_no, u8 vfunc_no, phys_addr_t addr); + int (*map_inbound)(struct pci_epc *epc, u8 func_no, u8 vfunc_no, + struct pci_epf_bar *epf_bar, u64 offset); + void (*unmap_inbound)(struct pci_epc *epc, u8 func_no, u8 vfunc_no, + struct pci_epf_bar *epf_bar, u64 offset); int (*set_msi)(struct pci_epc *epc, u8 func_no, u8 vfunc_no, u8 nr_irqs); int (*get_msi)(struct pci_epc *epc, u8 func_no, u8 vfunc_no); @@ -286,6 +292,11 @@ int pci_epc_map_addr(struct pci_epc *epc, u8 func_no, = u8 vfunc_no, u64 pci_addr, size_t size); void pci_epc_unmap_addr(struct pci_epc *epc, u8 func_no, u8 vfunc_no, phys_addr_t phys_addr); + +int pci_epc_map_inbound(struct pci_epc *epc, u8 func_no, u8 vfunc_no, + struct pci_epf_bar *epf_bar, u64 offset); +void pci_epc_unmap_inbound(struct pci_epc *epc, u8 func_no, u8 vfunc_no, + struct pci_epf_bar *epf_bar, u64 offset); int pci_epc_set_msi(struct pci_epc *epc, u8 func_no, u8 vfunc_no, u8 nr_ir= qs); int pci_epc_get_msi(struct pci_epc *epc, u8 func_no, u8 vfunc_no); int pci_epc_set_msix(struct pci_epc *epc, u8 func_no, u8 vfunc_no, u16 nr_= irqs, --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010016.outbound.protection.outlook.com [52.101.229.16]) (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 19A312DFA32; Thu, 23 Oct 2025 07:19:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.16 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203976; cv=fail; b=BKKGGxZGzVDB96lSpAcvkJTCB13IxUOVZ9X1Cdvnbtr++HCORFCga0wkenqiRO0vrNbDe46fAUdBbwCZjrh1nhVWfjbQ6AJZFBw5+hFkxaFwArqO5ryrOa3ETXSMZbrlsbhzj6DxB7JP0Tw0Y70gkF1cJ2184vJXtao/A+RbM6A= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203976; c=relaxed/simple; bh=zj0MDBt1Q18cuJqMuhrvdnz1ZW+zdRfvoE/NEVkwimE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=PcuMnbWO9MOsY1RFwLeK0j12PYLsSzvhV+Iz5yKwBZ21HG7GQfwwtGcJQ78iCJqPxQ6NBfnmG2yAmaQz39Xm51U4lrmk+oFctgfWohuM6XuiF+4JB8B6JHjavVwd/LkQQNOcphQkZA92MKaIarEuIJwXjWN/mtvVbP/MtdGkdOY= 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=veda5yPe; arc=fail smtp.client-ip=52.101.229.16 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="veda5yPe" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=I5whIAAk/QbFREX4nZNblrwenIt/oYA6+oNogdRLOOJbEuTacm54YvTQCWE4O15n8hfKyk1I2iMzHcS0csdXvgckw9Y93+83w0Qbcc/pCSplYrfB8KB0u/MzwfGwSG16HCx871of+kclvN/CNfQ+1vgFKF2PLCXHqCVVSHbhvUpFze9ChANzGijp5QCE6IMZIIw1GLHJZzdcMEEPHPfhb9lU4aVQITpkA9tx/1LThMsyJoI60lnhLGOBCHzBrwmf9LWROenzE2iZyDHnDcIuiH6O4shSXAHy05tLeP6RGhyXcn7CqmwwPpJDWGEGMywRytJc6LzxjPBchH99jvesLg== 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=1DDJ44a4/+kK7QOu8vRtPl6X9aDe7dHhQk+WGycFLuI=; b=pNiyH/i5tYQ6LVvbPKbHh0XLwXdTLalGKnJrle02+Zq03zdnEh7CyniLNx3wi64imSxXzPprLlT5yitJP7ZKO66L9YLoHuLqV/LOgpwPZbUY/+2Ww6HNzCJ05dj/JFEFw1KlwsDSto8xrfBPFciemQdJG8GxhXo+c/4I6DdQETWZriabjyxix1tQJkqT7UBjQiBuUl5xq6UeunmjrTi/bADQq0JQMpK3GHAa4QWTmxG3MkNruEb1N7O/znOdxB5P72V9mQbCMHiYHA/ad/+urj7Qo6V0YYF/MRAu93YyeQ0bdkje1YnwiayCWB8uLq8BPHrRwvY6mRmJKW/SvzggZg== 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=1DDJ44a4/+kK7QOu8vRtPl6X9aDe7dHhQk+WGycFLuI=; b=veda5yPehwjhmKW0d8vYPBUDCz7ygldrEi/6iftD2gWXpeJrtsfAczOoD8heG8oHBklLonFfPmguL1uW3S5c5LlpRpyClhDJpKPMG0Z/+wMaM6Ih0wQeIU8S6lbB2Jz4+eDPE2qImhxN3xFvV15fE/PPsUBaxm4mfhgpGBFaRSw= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by TY7P286MB5387.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:1f3::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:28 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:28 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 05/25] PCI: dwc: ep: Implement EPC inbound mapping support Date: Thu, 23 Oct 2025 16:18:56 +0900 Message-ID: <20251023071916.901355-6-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0246.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:456::12) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|TY7P286MB5387:EE_ X-MS-Office365-Filtering-Correlation-Id: ffa28bd4-65dc-454a-cbfb-08de120480ce X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?m2JDeseAahcmrOXOIqc2o4Levk1HKFhMR7R8BJZO0Su5CWHDF8A4FtukMr6q?= =?us-ascii?Q?cY3+h/hOdOefBlBu+MLkXelCbbV2tRv2MaSnqAuVZxuLG6HgeystA8KxkWTl?= =?us-ascii?Q?ujmQlsA6xrL10oB2wi+5+o7zANZBaiTIMtW8FvVvS2PZIY9UCg1fs7TL4e4v?= =?us-ascii?Q?0sI6441AEUpM2SgJkqz5r1TD5gzFi5kn+rYAVlNxA1vj0VB6jpPQ/lliZPlz?= =?us-ascii?Q?vrEJ+Jj/i/DWjyrvP3J4lTAWD7uTHKVa5PxCqQBwrLYaVv8uMr4ab/TxG8N1?= =?us-ascii?Q?FWquHYYLhVnPd2LCGf733F5qn30Kwg8kxUBZULnRqKMPSA1nIKonzBFLIURN?= =?us-ascii?Q?QjeOLR8lffudKEJs/TwDKTboEidnAZjbFc0keuj1F3YiSlsta8nQbOF2Mq01?= =?us-ascii?Q?be8tL2BD4g46oDnzT2ovMzK3YVPPcE4lAsVuXV/YTJY2GHCAGO0HbI2792tt?= =?us-ascii?Q?82gGm8pbQyynci0mAD6DVbFRwajWdZrt8qzo0T51Z0h00cqg3D9oom6q49uK?= =?us-ascii?Q?CqY0aVO0JmBSdDPFk9QtpYOshap+Z9lllbPThWC8ub2MPQH+XbKGDHR8hYUc?= =?us-ascii?Q?A0o5kTu4qCZJTXnCLOk3vqlECSzDGZ0fOt0w2KOmdWSIPOj5Xq8WM+wPI1Iy?= =?us-ascii?Q?QPaCWjRPAutlnV2euxKbRKpccd7ykLwtDNHTb+zp0HqYCX0u2lotifBBZb0g?= =?us-ascii?Q?WiwdnoNyOiVJVEFHOHZjdDI+c5oO6zDuIInvypMkyGnAY0FS6ML9pBmMc6gC?= =?us-ascii?Q?I3lCREaxcxYivm6QhOKy+LFKxLHQgUuqZcPgYlQ5wZOF/avpwTeWmU+3PU8U?= =?us-ascii?Q?h69x80UezgjDQxf1561yTIXJSTdxLw/azUahW7Mefxp8Z04zC3fvGVCCsDzT?= =?us-ascii?Q?uiV1K0pNRCYsOuaB01qJre1dG/TFItrJmerQEtD3ptiafcUisErBJUEMkNxa?= =?us-ascii?Q?JI5B51u/iiOhTqFxYjXHcR2JWjWU0gpbl5vcT+i7mTv2FPEsUb0TXrVmpkMa?= =?us-ascii?Q?hT0ovFHP5NLFZF2QbTMyB3PTDa03EZeLoXkSnxs7xds0Q648EXKjtVxnMWXm?= =?us-ascii?Q?rKx0ldCpnCoj9OSY/7OQlgSqHhF8Fum2h14KjNHFi/5kW+HsicEvaHBckmmH?= =?us-ascii?Q?K8+OYpf1zQ6+yjEDHIu7zkBaj1eLjIiJA1N4jhHD6JBCxoyB5O6fA+j4c+tp?= =?us-ascii?Q?oZ2cde+sSCNS62BuEBQoa1VQknFRAmcj4x5OxRdm84Eb6UgmJCsB6d/oc3CJ?= =?us-ascii?Q?hQo3lIA17TpBFfkeH5LZLB8A4HJzDX4+KRWSJI8B/arnEGZAp6XOJiXmw3Ni?= =?us-ascii?Q?TaO9oEiL7ZFmxHC/e07/HsJ8h62glicD0wcwZcwvPYe5ulaiDCTOdhncvfmT?= =?us-ascii?Q?NSvOewYonoFLt+fT7S1Vf1ccEqdkKQtqJ+PMbQgv0v5JXMcOe0VSXrp3m/rp?= =?us-ascii?Q?Y0BiWtyjasbiz3h2CjUhVnLXI245rOtb?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?l/JyiMhH0TpCwlAfQhPMoTQAsP+mbXH+qPVKfoh3Bg9MRd2vlVdYBaqXCEXX?= =?us-ascii?Q?FrozHG3aVtNWVARnvHybB1ntjXTyi2W+EbRe+LLdRJZHHiZO84M/lCa23I40?= =?us-ascii?Q?4HPwl6HiSQ7e4sl+XfSWsYHc8ofmOg4pSqz18S25ARlq8tm3ox40aI/vOCDn?= =?us-ascii?Q?mg2hM7mGlKHtfp2dhFcLrc0CeNHjhxyse2up52G+c8NLjB5xO7GirWj5Obt9?= =?us-ascii?Q?Wq2fT6T9fSVlVyj+WSyC14bEdsdt2x++XIafGg5+3xHCNL6fYBL+oAmt0TaY?= =?us-ascii?Q?PfTawBfRVTiCNBaVjQrqYciRs5B/tyJlGvE/KyBQInHi+P8G+GGoa0SkOE7o?= =?us-ascii?Q?vA7WOXiTO2/hcxFNrbWzcLcNavQFfI4pUTDoMyLbGuwG+FopTe/R7pyAGFDi?= =?us-ascii?Q?KRWJAvqiXP1b1WtflVPhASeusQZGAVuTZPizzF5w1vhREfdEqNqmCx/jraQ8?= =?us-ascii?Q?Mrb8xKTd1g9WKlhcXffr23dEGYwdR2TXHjWTa2N6gjTC6MsHZfHxhhpOXFQI?= =?us-ascii?Q?8m+zyhKLHfMVjWoR4Mqxc+zCyaQHvCGLp2e9axKIF0HLYCX1aL2ucPVu5Qgc?= =?us-ascii?Q?3rd71q8fg9O0RxECx5ZbgK0+aTMD5cyGN3/EgY/05QqvdN2Z5iVP8vmNgLzR?= =?us-ascii?Q?4bGFbFN7M62Q61azoTaQ0uNDW8ObWDkq840dbShrbZoyQv/uOYiDdjjsCuEb?= =?us-ascii?Q?yyKVaVHCUY7H+m+r9vZg1TKVZfj2OGmfYI+Nbnt4b7hXwb0UDbGIOPiOnwbf?= =?us-ascii?Q?7Of+QWYTW8MktyuQPycx9IpzIXHmUeKVE6obzDtt+vq4lkMOOcr0vakRda/k?= =?us-ascii?Q?Lb406spCgcUfmLOxN/EEvfJOr5WuF9YjGa6BQWf4iG0Gp09TnR3+aZndgxxK?= =?us-ascii?Q?mp1SBQ4V6nBZgk0xgFOdmAG8+T5g8qVJOwX42i5qMpY9E9CpXVnykSYo1lVj?= =?us-ascii?Q?eilVG+4axkWGvh97IvwiM7YVFXZzrl8w8E6q6pFqdRfTfdENOWbZs9l6uZU9?= =?us-ascii?Q?1rrBZOA8h7q7jCtsnp3/sF9VbCpx0fbFrtjzoHS1VfWAdUBNLSQc5CLeKPp4?= =?us-ascii?Q?LXv/t/PwtvRRZjQKq//A97WOK+0k7uL/MYd7zBfdbCWvo1Sv5yXsr/PlciGC?= =?us-ascii?Q?Y0BKQxhWx+lJLx0KssTQIwfgMH9rDtV+75YikOLzdlAj0RK5F+xuQk2UdwSY?= =?us-ascii?Q?UYf6Lmel239hmjH0FvmV8DTwDqlAkwkMdyzuLeDemut1QQUtLIMCS3lQ8mqB?= =?us-ascii?Q?e1XGKXvPsOCAe6g/ZWKOdWQWhM/CWYmF3R4wx0n/C7y+ERKcIrbt8SIyVOre?= =?us-ascii?Q?UrkaetNA7G5BqjuK4iAR2KVVeWgS5Dfpa1/PcSg7cpYt8ibTX433XE4ISM/L?= =?us-ascii?Q?pVxZ1FqqnBAyChpFTFm4Nfi8Prw0MgCDeiMuLAsLsiCy38gFXMD/mPovIOkq?= =?us-ascii?Q?5+NQ3+0AtUEYxYtDMidPhrXstrw22Xi/Lg0V9ie4Mw8z3GZu29YqSxGkyqow?= =?us-ascii?Q?Uf6viWsc+reA7ZFlSA6C//ev0ZnOq5mvh2xt3d6Ms/OWwdFyvKUYk+14Z5IJ?= =?us-ascii?Q?OdV10ZRPzCFyn2OzQ3qoo9cfeXGXQ0a8zsnaj4yvta4V7LT7LTLyAYesWYPw?= =?us-ascii?Q?9syWDe2rrHvqhccfEvHuwgM=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: ffa28bd4-65dc-454a-cbfb-08de120480ce X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:28.4857 (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: ULVxSROm9IaclEoaZnsP2wl9uP+qr97pXlQxcU8Qfbib9MUFI+rsI1Mij2uDcMRIKefW56Nt4MGHmcFYwBSvNg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY7P286MB5387 Content-Type: text/plain; charset="utf-8" Implement map_inbound() and unmap_inbound() for DesignWare endpoint controllers (Address Match mode). Allows subrange mappings within a BAR, enabling advanced endpoint functions such as NTB with offset-based windows. Signed-off-by: Koichiro Den --- .../pci/controller/dwc/pcie-designware-ep.c | 242 +++++++++++++++--- drivers/pci/controller/dwc/pcie-designware.h | 2 + 2 files changed, 215 insertions(+), 29 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-designware-ep.c b/drivers/pci/= controller/dwc/pcie-designware-ep.c index 0ae54a94809b..d7093958a916 100644 --- a/drivers/pci/controller/dwc/pcie-designware-ep.c +++ b/drivers/pci/controller/dwc/pcie-designware-ep.c @@ -8,13 +8,25 @@ =20 #include #include +#include #include +#include #include +#include =20 #include "pcie-designware.h" #include #include =20 +struct dw_pcie_ib_map { + struct list_head node; + enum pci_barno bar; + u64 pci_addr; /* BAR base + offset at map time */ + phys_addr_t cpu_addr; /* EP local phys */ + u64 size; + u32 index; /* iATU inbound window index */ +}; + /** * dw_pcie_ep_get_func_from_ep - Get the struct dw_pcie_ep_func correspond= ing to * the endpoint function @@ -232,6 +244,7 @@ static void dw_pcie_ep_clear_bar(struct pci_epc *epc, u= 8 func_no, u8 vfunc_no, struct dw_pcie *pci =3D to_dw_pcie_from_ep(ep); enum pci_barno bar =3D epf_bar->barno; u32 atu_index =3D ep->bar_to_atu[bar] - 1; + struct dw_pcie_ib_map *m, *tmp; =20 if (!ep->bar_to_atu[bar]) return; @@ -242,6 +255,16 @@ static void dw_pcie_ep_clear_bar(struct pci_epc *epc, = u8 func_no, u8 vfunc_no, clear_bit(atu_index, ep->ib_window_map); ep->epf_bar[bar] =3D NULL; ep->bar_to_atu[bar] =3D 0; + + guard(spinlock_irqsave)(&ep->ib_map_lock); + list_for_each_entry_safe(m, tmp, &ep->ib_map_list, node) { + if (m->bar !=3D bar) + continue; + dw_pcie_disable_atu(pci, PCIE_ATU_REGION_DIR_IB, m->index); + clear_bit(m->index, ep->ib_window_map); + list_del(&m->node); + kfree(m); + } } =20 static unsigned int dw_pcie_ep_get_rebar_offset(struct dw_pcie *pci, @@ -363,14 +386,46 @@ static enum pci_epc_bar_type dw_pcie_ep_get_bar_type(= struct dw_pcie_ep *ep, return epc_features->bar[bar].type; } =20 +static int dw_pcie_ep_set_bar_init(struct pci_epc *epc, u8 func_no, u8 vfu= nc_no, + struct pci_epf_bar *epf_bar) +{ + struct dw_pcie_ep *ep =3D epc_get_drvdata(epc); + struct dw_pcie *pci =3D to_dw_pcie_from_ep(ep); + enum pci_barno bar =3D epf_bar->barno; + enum pci_epc_bar_type bar_type; + int ret; + + bar_type =3D dw_pcie_ep_get_bar_type(ep, bar); + switch (bar_type) { + case BAR_FIXED: + /* + * There is no need to write a BAR mask for a fixed BAR (except + * to write 1 to the LSB of the BAR mask register, to enable the + * BAR). Write the BAR mask regardless. (The fixed bits in the + * BAR mask register will be read-only anyway.) + */ + fallthrough; + case BAR_PROGRAMMABLE: + ret =3D dw_pcie_ep_set_bar_programmable(ep, func_no, epf_bar); + break; + case BAR_RESIZABLE: + ret =3D dw_pcie_ep_set_bar_resizable(ep, func_no, epf_bar); + break; + default: + ret =3D -EINVAL; + dev_err(pci->dev, "Invalid BAR type\n"); + break; + } + + return ret; +} + static int dw_pcie_ep_set_bar(struct pci_epc *epc, u8 func_no, u8 vfunc_no, struct pci_epf_bar *epf_bar) { struct dw_pcie_ep *ep =3D epc_get_drvdata(epc); - struct dw_pcie *pci =3D to_dw_pcie_from_ep(ep); enum pci_barno bar =3D epf_bar->barno; size_t size =3D epf_bar->size; - enum pci_epc_bar_type bar_type; int flags =3D epf_bar->flags; int ret, type; =20 @@ -401,35 +456,12 @@ static int dw_pcie_ep_set_bar(struct pci_epc *epc, u8= func_no, u8 vfunc_no, * When dynamically changing a BAR, skip writing the BAR reg, as * that would clear the BAR's PCI address assigned by the host. */ - goto config_atu; - } - - bar_type =3D dw_pcie_ep_get_bar_type(ep, bar); - switch (bar_type) { - case BAR_FIXED: - /* - * There is no need to write a BAR mask for a fixed BAR (except - * to write 1 to the LSB of the BAR mask register, to enable the - * BAR). Write the BAR mask regardless. (The fixed bits in the - * BAR mask register will be read-only anyway.) - */ - fallthrough; - case BAR_PROGRAMMABLE: - ret =3D dw_pcie_ep_set_bar_programmable(ep, func_no, epf_bar); - break; - case BAR_RESIZABLE: - ret =3D dw_pcie_ep_set_bar_resizable(ep, func_no, epf_bar); - break; - default: - ret =3D -EINVAL; - dev_err(pci->dev, "Invalid BAR type\n"); - break; + } else { + ret =3D dw_pcie_ep_set_bar_init(epc, func_no, vfunc_no, epf_bar); + if (ret) + return ret; } =20 - if (ret) - return ret; - -config_atu: if (!(flags & PCI_BASE_ADDRESS_SPACE)) type =3D PCIE_ATU_TYPE_MEM; else @@ -515,6 +547,154 @@ static int dw_pcie_ep_map_addr(struct pci_epc *epc, u= 8 func_no, u8 vfunc_no, return 0; } =20 +static inline u64 dw_pcie_ep_read_bar_assigned(struct dw_pcie_ep *ep, u8 f= unc_no, + enum pci_barno bar, bool is_io, + bool is_64) +{ + u32 reg =3D PCI_BASE_ADDRESS_0 + 4 * bar; + u32 lo, hi =3D 0; + u64 base; + + lo =3D dw_pcie_ep_readl_dbi(ep, func_no, reg); + if (is_io) + base =3D lo & PCI_BASE_ADDRESS_IO_MASK; + else { + base =3D lo & PCI_BASE_ADDRESS_MEM_MASK; + if (is_64) { + hi =3D dw_pcie_ep_readl_dbi(ep, func_no, reg + 4); + base |=3D ((u64)hi) << 32; + } + } + return base; +} + +static int dw_pcie_ep_map_inbound(struct pci_epc *epc, u8 func_no, u8 vfun= c_no, + struct pci_epf_bar *epf_bar, u64 offset) +{ + struct dw_pcie_ep *ep =3D epc_get_drvdata(epc); + struct dw_pcie *pci =3D to_dw_pcie_from_ep(ep); + enum pci_barno bar =3D epf_bar->barno; + size_t size =3D epf_bar->size; + int flags =3D epf_bar->flags; + struct dw_pcie_ib_map *m; + u64 base, pci_addr; + int ret, type, win; + + /* + * DWC does not allow BAR pairs to overlap, e.g. you cannot combine BARs + * 1 and 2 to form a 64-bit BAR. + */ + if ((flags & PCI_BASE_ADDRESS_MEM_TYPE_64) && (bar & 1)) + return -EINVAL; + + /* + * Certain EPF drivers dynamically change the physical address of a BAR + * (i.e. they call set_bar() twice, without ever calling clear_bar(), as + * calling clear_bar() would clear the BAR's PCI address assigned by the + * host). + */ + if (ep->epf_bar[bar]) { + /* + * We can only dynamically add a whole or partial mapping if the + * BAR flags do not differ from the existing configuration. + */ + if (ep->epf_bar[bar]->barno !=3D bar || + ep->epf_bar[bar]->flags !=3D flags) + return -EINVAL; + + /* + * When dynamically changing a BAR, skip writing the BAR reg, as + * that would clear the BAR's PCI address assigned by the host. + */ + } else { + ret =3D dw_pcie_ep_set_bar_init(epc, func_no, vfunc_no, epf_bar); + if (ret) + return ret; + } + + ep->epf_bar[bar] =3D epf_bar; + + /* + * Skip programming the inbound translation if phys_addr is 0. + * In this case, the caller only intends to initialize the BAR. + */ + if (!epf_bar->phys_addr) + return 0; + + base =3D dw_pcie_ep_read_bar_assigned(ep, func_no, bar, + flags & PCI_BASE_ADDRESS_SPACE, + flags & PCI_BASE_ADDRESS_MEM_TYPE_64); + if (!(flags & PCI_BASE_ADDRESS_SPACE)) + type =3D PCIE_ATU_TYPE_MEM; + else + type =3D PCIE_ATU_TYPE_IO; + pci_addr =3D base + offset; + + /* Allocate an inbound iATU window */ + win =3D find_first_zero_bit(ep->ib_window_map, pci->num_ib_windows); + if (win >=3D pci->num_ib_windows) + return -ENOSPC; + + /* Program address-match inbound iATU */ + ret =3D dw_pcie_prog_inbound_atu(pci, win, type, + epf_bar->phys_addr - pci->parent_bus_offset, + pci_addr, size); + if (ret) + return ret; + + m =3D kzalloc(sizeof(*m), GFP_KERNEL); + if (!m) { + dw_pcie_disable_atu(pci, PCIE_ATU_REGION_DIR_IB, win); + return -ENOMEM; + } + m->bar =3D bar; + m->pci_addr =3D pci_addr; + m->cpu_addr =3D epf_bar->phys_addr; + m->size =3D size; + m->index =3D win; + + guard(spinlock_irqsave)(&ep->ib_map_lock); + set_bit(win, ep->ib_window_map); + list_add(&m->node, &ep->ib_map_list); + + return 0; +} + +static void dw_pcie_ep_unmap_inbound(struct pci_epc *epc, u8 func_no, u8 v= func_no, + struct pci_epf_bar *epf_bar, u64 offset) +{ + struct dw_pcie_ep *ep =3D epc_get_drvdata(epc); + struct dw_pcie *pci =3D to_dw_pcie_from_ep(ep); + enum pci_barno bar =3D epf_bar->barno; + struct dw_pcie_ib_map *m, *tmp; + size_t size =3D epf_bar->size; + int flags =3D epf_bar->flags; + u64 match_pci =3D 0; + u64 base; + + /* If BAR base isn't assigned, there can't be any programmed sub-window */ + base =3D dw_pcie_ep_read_bar_assigned(ep, func_no, bar, + flags & PCI_BASE_ADDRESS_SPACE, + flags & PCI_BASE_ADDRESS_MEM_TYPE_64); + if (base) + match_pci =3D base + offset; + + guard(spinlock_irqsave)(&ep->ib_map_lock); + list_for_each_entry_safe(m, tmp, &ep->ib_map_list, node) { + if (m->bar !=3D bar) + continue; + if (match_pci && m->pci_addr !=3D match_pci) + continue; + if (size && m->size !=3D size) + /* Partial unmap is unsupported for now */ + continue; + dw_pcie_disable_atu(pci, PCIE_ATU_REGION_DIR_IB, m->index); + clear_bit(m->index, ep->ib_window_map); + list_del(&m->node); + kfree(m); + } +} + static int dw_pcie_ep_get_msi(struct pci_epc *epc, u8 func_no, u8 vfunc_no) { struct dw_pcie_ep *ep =3D epc_get_drvdata(epc); @@ -657,6 +837,8 @@ static const struct pci_epc_ops epc_ops =3D { .align_addr =3D dw_pcie_ep_align_addr, .map_addr =3D dw_pcie_ep_map_addr, .unmap_addr =3D dw_pcie_ep_unmap_addr, + .map_inbound =3D dw_pcie_ep_map_inbound, + .unmap_inbound =3D dw_pcie_ep_unmap_inbound, .set_msi =3D dw_pcie_ep_set_msi, .get_msi =3D dw_pcie_ep_get_msi, .set_msix =3D dw_pcie_ep_set_msix, @@ -1113,6 +1295,8 @@ int dw_pcie_ep_init(struct dw_pcie_ep *ep) struct device *dev =3D pci->dev; =20 INIT_LIST_HEAD(&ep->func_list); + INIT_LIST_HEAD(&ep->ib_map_list); + spin_lock_init(&ep->ib_map_lock); =20 epc =3D devm_pci_epc_create(dev, &epc_ops); if (IS_ERR(epc)) { diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/con= troller/dwc/pcie-designware.h index 00f52d472dcd..455170e53d7e 100644 --- a/drivers/pci/controller/dwc/pcie-designware.h +++ b/drivers/pci/controller/dwc/pcie-designware.h @@ -462,6 +462,8 @@ struct dw_pcie_ep { phys_addr_t *outbound_addr; unsigned long *ib_window_map; unsigned long *ob_window_map; + struct list_head ib_map_list; + spinlock_t ib_map_lock; void __iomem *msi_mem; phys_addr_t msi_mem_phys; struct pci_epf_bar *epf_bar[PCI_STD_NUM_BARS]; --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010016.outbound.protection.outlook.com [52.101.229.16]) (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 52A752EAB82; Thu, 23 Oct 2025 07:19:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.16 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203978; cv=fail; b=If7yxIfaj66aWSA5LMjVBmrW5pxHzBhJwrNmbJSwQ9zvrIbdHohZ0lS/fVYTxwkS9CaZDD0yDONaGVGXIdxMMNz+SEz5gn8/4PJe2l4C47nviTvWqNm0PzRh4BWdknHhcuRJmFMZPunoCUfCRmfAZN9YsNZSL16Td3ASA02dA9A= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203978; c=relaxed/simple; bh=jzI8fJ10i1LU1uQ2i/bw84+GWd+L5jEanuIL4JIn4vY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=LGcCjgSRbobyl9JNE5Gmp8jG987AaqDVVVAJQZ0oOgpj3jBSLyxVBhnrgj4WYT9F1Pk1l8CDgID9cz+EuHOkL1WMXfKIZ3B6XmNqnTm8scy4I09n+cBeYj2vli4kBjganRWqTbb0n7dA5ceeEKQcHQ9PPsvu85j+ZJSjxlSDpzM= 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=NrGXLi7h; arc=fail smtp.client-ip=52.101.229.16 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="NrGXLi7h" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=p8QiBBf/SG18J2JDcJgfEHmY7IMrgb4FCYHCh49EgZB9H6n3M2j74vYoXP7EkJZ7TtlTsQDgLwG90EYKKofqzo5dxrGy2f6EtBUim3+tZpWDEVbv/GnPJ7NNSJgUsYKK8OBD/ESJn7Numvcp0oESTbfmQJUdGRvSDDcbpG85q06kSILcq9UJb4oXejdCDTx+VBoAyn131ULduWc3Hccuz236+1SSdt+bJZNOBxRVdHFYcx3zbX+ZZg0mRa8p1z48hZRxBDJ2hU6YXgJiP6o2+G+kHJMKYQFs8D9/7RslfSiu6A7uAECqVbMByK7PbCCQWiNr6mrleKdxc1QD+kK/gA== 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=qhogMLlqRcvOdszyWlC0fHHhF//3NAqbsSzQqi/KjMo=; b=dtlZonrlmSmKlISa21N5Ebnim2qj4fYItiHgCrmbH7KQdzJxIy7miwGXhjI5Ba+/SEcDHmXUqgn9sGd1FEGy/D0Nk8JqzJvYCGjAdmWnfwi+fyyLqS1pfOLeMqWHehH3tC7ovUuL8pw2kaMValHxi0vhXNNMoZxAk3tyPkOHehh272cxMsPurb/B7jpVbgqiGqC861vX4nrjj9rvkkJdjs3krlBaOfyfUcrPl2ztUWfvOtcGA5cMtMDaW5dutBorRZWOQwGwNAoXwfuZ9975o3KFXneN2CHlvpKaxYs8HjcNhCVVioDBXwQaSyffA1BZkSJMl6MZvoiFSEsbnu44qA== 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=qhogMLlqRcvOdszyWlC0fHHhF//3NAqbsSzQqi/KjMo=; b=NrGXLi7hJ+CL/DD9kx3LdxwtZu/Go6k6XR2w8BfNzfvsdyrwkG080YXwYRFwMdA1cNAAjWsUp9hhQJf4BOMMh/8H+G88wuqsBGz+wt3wVF8z5x4LbHRj7dNPGo0NyDko64IcNFjeQudGjsMxeQZP7/gG/PqcPcQsgKrgfkHN8DE= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by TY7P286MB5387.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:1f3::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:29 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:29 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 06/25] PCI: endpoint: pci-epf-vntb: Use pci_epc_map_inbound() for MW mapping Date: Thu, 23 Oct 2025 16:18:57 +0900 Message-ID: <20251023071916.901355-7-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0263.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:455::11) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|TY7P286MB5387:EE_ X-MS-Office365-Filtering-Correlation-Id: cdc44656-07b0-410c-5b89-08de12048180 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?MJEvx1H8zlHcjuh2/Z08bV8XrBlQVKfXE03I3p5OY3KLCjknUITT6vJOlIOQ?= =?us-ascii?Q?6QYp0qn2eR1Qlh8tLEtBE7gvAGAXS0DMjZAc3mfnQD5w5EsDTWHUOBVB6RQh?= =?us-ascii?Q?OzGX6F/jaZEfpPPQfuedoK+bGUVbBO2R9N28YTzUWbTB1XWZsEso8Imce0x/?= =?us-ascii?Q?OZBEq1VrTywW69syv7C1ILPHA+m46LCr7tEKDdPvmkDmD9Bow6NY/0Lon23g?= =?us-ascii?Q?VUjgwrxwiQzuLb6rvC7M7Sx87I30M0F1h0fEzqc1OEBIG1+kK+QmuYeVMVC+?= =?us-ascii?Q?+tj4qU0XGS4zUlrFSaHFzD1FirTiddrknamJxt5C2JUVTkc6DlwKcm0CUNIL?= =?us-ascii?Q?w+4ez7RpCng2RdnsTPJwQmnVd5qTlgtlw/+CiYS1fOuBoU7EEYNIuMQlEagd?= =?us-ascii?Q?aB5PE9cJ2O3uxzTsBBHHvYPRLQacuEogHsrG50+AFOFBEV9DZUrirRCf7AMK?= =?us-ascii?Q?ordN7SqcmKaXjFw9wL6ANFqewQHUPiHQtywJ87L8ie/QyXR2xSIl35DuhgfX?= =?us-ascii?Q?zx27ejSTalGI4cXMjDS7AO+MVvHTbtLfknicXCdFZ5XYRzbPeS0MZ7al2xe9?= =?us-ascii?Q?DooLuvd0d1VQmVYXktb+kMmxLJuOZttFD1Kg2c87391+Lmgokllt4U/7SeF/?= =?us-ascii?Q?tSGN0MboI2WCASFVhHKXN0YmsV+zbBCxOu5TwDcVLyOGJgXOtdMpxZntsQyu?= =?us-ascii?Q?B4YBgv5VjJbXsuPiHItB/gjn1mdO7Xhwtv3hUsxvlw12JuRA/2v+g5zBRV0Z?= =?us-ascii?Q?TLjTR19ffBykY/KXjdkVi6wN5j9Cxe4zuP0ZRE/yN4fq56LiMN2miNNJhUdG?= =?us-ascii?Q?Tkwv9EQMNSmriEDP57C1icaxgz5C+pDccAMGtBkwPUMJoJxTJVRFYV15ueoF?= =?us-ascii?Q?DeP2bnbksuOUQhXaQ6fHWIZWKtWIDtLSBF6Ng4Byex5OVW1vELY5BHmOlevy?= =?us-ascii?Q?XrMrbvsUbt7PtOqc8ccDw8R4NhpkBebyfsMWe3/NVGaO1Ga56Pb7U77l4rpP?= =?us-ascii?Q?FJQeD8xNPSF/QlLpjBQ2n5bcmjnk9oLyb1hskRugUdBwpYjEHiUyT2uuN21A?= =?us-ascii?Q?xEoivFUstMoD5qi2/MmULnJaYAvkSjiSeNXj2qMsuVov9zmW1B3xYaK+n6+h?= =?us-ascii?Q?yw/EpY2m1b/khuJKKILZB+fY65x07hKNHcXaNwAYueorctAQL17VR5HmH4Uq?= =?us-ascii?Q?FSLcAOrYKGUhYYB/qujPvP5Z9ONz/PG9UWkaYv2RN+VOAeqicDGi5H3sjBCp?= =?us-ascii?Q?kh+pn3M5efaLQgyuWMCB4UnbfpGKaFKlO5N6MGFEhivhXWGrP75WYg3gbHe0?= =?us-ascii?Q?J7fMy47zSXjbRgquRv5uIVLa2cguGiBzioaTw+MCTWrB0rQurIumaziIX0xq?= =?us-ascii?Q?jBpL8uKCfSArB9BpfUwtZdPtGOh9KC+s2WEkH/xgrLMxiaxTox7PDA37APin?= =?us-ascii?Q?ocBEuS5kQymhUYUnMikzqFV3WnQ5N6Is?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QzLwK2Gwlef8Tc/f34fthU7JS7G8s784Mj9IBCGrW4eF8igIx5zKJS6wjw7B?= =?us-ascii?Q?Y2U8itK6xxytBNorsqIgLU3e5O+qYnR7uHtL2LmObfGUJbUBSpiU7izBF8OZ?= =?us-ascii?Q?pvikl+70ho96Fm+bU0gy2b3wrmkuvu1xo7yugNZRExQuOJ0YdtZDnSbTUUET?= =?us-ascii?Q?j5XvN9B9uHmohScW/h4k0Wyp8TylDZeJeblyOi7QDSiSxTK7ytQXUcgSDgIr?= =?us-ascii?Q?cXywVD8HvFbYw205/f1F8UTDGEA3x+p/0ak3e6J/wmwLNqwTC4NgjRX2btt+?= =?us-ascii?Q?XpOxaEB/Qqv42qxO0tjfevp5LwYfRThuWgzjJUWLYyG1DThaEH+Wo6HZ+LCy?= =?us-ascii?Q?QSlc+7tv4LmogyvzkX2F1nS+SfGYpqGCDH8PWrZirnxCAGdduAo1ikfQ2sgU?= =?us-ascii?Q?LdFSqCBzP40GW3yZeGzw98BPW2RGJv8KymBBQE2p5BVn8cqz9nye0miefrqi?= =?us-ascii?Q?LejrHALf6X/ZZ+VoxaVF4e8gtUEoqOT52LzgxUeFi1+4KzXgSSoWWa5W8iBT?= =?us-ascii?Q?KvgipTZ5/fEK8Ff35N32pTrG6mM8QvDWgkSE2aNrfJPOW7GO1bzlGoaIMJnP?= =?us-ascii?Q?fcaY8fmqPLqpw7DFPWQUO85P1S1nXlKHuxmpDMZJB8TTJ6QWOmRm58boF1L7?= =?us-ascii?Q?fK8M2k+a39wtdVCIRgNKET+1gk5qdBR/LYwLt0YZaAzgU9QlTBbkVPITBL86?= =?us-ascii?Q?rjjDe05vn0F/M27VoRVs2Wbjt9wPionQnz7Skx4scxVkIrp7t8oaiJ2Ti9ZB?= =?us-ascii?Q?mor52PkMKjoEG5BhMDrxYkGcuu/Gs/yia3la54F1UTpOrRZ4D5hWoE/UJXW9?= =?us-ascii?Q?XZHHP9oeA8tguHnnAJ4+Tvd9yHPNmuqX1IPy43AVjCb9zgN0ao/7D7M37iUW?= =?us-ascii?Q?x3JoP/lGk1m9ouyp+qzuED83iBS/SRyKt/oMifgHxEUdRO+Xh9mOdAfQpagZ?= =?us-ascii?Q?zd1+4xLkMU+60l/hPw60sudfDQe/HDfgJsuvzP7k6DCsxyWKCCjkGGBSlpzZ?= =?us-ascii?Q?nuo3eqfXUF8aqqyrix4iCEf963Y8/TspJRvXRYaQFJ7jTmEoKKpbkP2AtD2H?= =?us-ascii?Q?wXcI01SaeyRUSrzwSlZmz66AurqeGyFLYHudWlIIFnYZJ81NXX9HMFBpQGs0?= =?us-ascii?Q?Dml5LiY80VuR6pcbk/FsbKytrw6Ygdcu/qKTcJGm5TpODScNXu2bEfoKrWmx?= =?us-ascii?Q?F83ANmBRCPE6hkE9YgdNWgdGMXeJ0Ty98iCNje51gKeVg27IiYLHm4pZBb3X?= =?us-ascii?Q?EYORGsBhK4mz76PUL2+7r5AWwD0xaVSBA820DayI0KUqmbSX5BH5xz8MItwT?= =?us-ascii?Q?u7UT/Zc1eEb+UFPXijT26tSsjQZlfgPHmJOKROdnLC+H1WuVNh6t/AiODerI?= =?us-ascii?Q?qf7hTpTtvC0BhYsXeFgSaUot7TdyntuwwtJQlTAWBDS+zt/6xq+WYrnRUD3O?= =?us-ascii?Q?GtYD77qa9zIkNQcVInPFlELw4QofgcTeIKLSq8WCDswvLfOSiK9Ri1fJYXjU?= =?us-ascii?Q?rI4o1VhkD5tGHGnXkyOvviTZn3hAGdrCmxy5FCIwttU9yOC9vl8qRHY6KojV?= =?us-ascii?Q?e+k/xyQhwP7zGc9f5G61VLcHVGuxr9SZPFfITxHEHIuP+0IMc0ISMZImcL73?= =?us-ascii?Q?gIR66XBo2Hm70+qmJpJ1Roc=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: cdc44656-07b0-410c-5b89-08de12048180 X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:29.6505 (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: FMDCtQDe163t4lKmtVWxV0HSharcTONxAvCCUU4EMzO32lQ8o8vYWeLFs0Q+GKDD5GWFtOYtvNH9igVfVzvZgw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY7P286MB5387 Content-Type: text/plain; charset="utf-8" Switch MW setup to use pci_epc_map_inbound() when supported. This allows mapping portions of a BAR rather than the entire region, supporting partial BAR usage on capable controllers. Signed-off-by: Koichiro Den --- drivers/pci/endpoint/functions/pci-epf-vntb.c | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c b/drivers/pci/en= dpoint/functions/pci-epf-vntb.c index 6953abb2987d..5b3aa1abeb70 100644 --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c @@ -609,10 +609,16 @@ static int epf_ntb_mw_bar_init(struct epf_ntb *ntb) PCI_BASE_ADDRESS_MEM_TYPE_64 : PCI_BASE_ADDRESS_MEM_TYPE_32; =20 - ret =3D pci_epc_set_bar(ntb->epf->epc, - ntb->epf->func_no, - ntb->epf->vfunc_no, - &ntb->epf->bar[barno]); + if (ntb->epf->epc->ops->map_inbound) + ret =3D pci_epc_map_inbound(ntb->epf->epc, + ntb->epf->func_no, + ntb->epf->vfunc_no, + &ntb->epf->bar[barno], 0); + else + ret =3D pci_epc_set_bar(ntb->epf->epc, + ntb->epf->func_no, + ntb->epf->vfunc_no, + &ntb->epf->bar[barno]); if (ret) { dev_err(dev, "MW set failed\n"); goto err_set_bar; @@ -1268,17 +1274,24 @@ static int vntb_epf_mw_set_trans(struct ntb_dev *nd= ev, int pidx, int idx, struct epf_ntb *ntb =3D ntb_ndev(ndev); struct pci_epf_bar *epf_bar; enum pci_barno barno; + struct pci_epc *epc; int ret; struct device *dev; =20 + epc =3D ntb->epf->epc; dev =3D &ntb->ntb.dev; barno =3D ntb->epf_ntb_bar[BAR_MW1 + idx]; + epf_bar =3D &ntb->epf->bar[barno]; epf_bar->phys_addr =3D addr; epf_bar->barno =3D barno; epf_bar->size =3D size; =20 - ret =3D pci_epc_set_bar(ntb->epf->epc, 0, 0, epf_bar); + if (epc->ops->map_inbound) + ret =3D pci_epc_map_inbound(epc, 0, 0, epf_bar, 0); + else + ret =3D pci_epc_set_bar(epc, 0, 0, epf_bar); + if (ret) { dev_err(dev, "failure set mw trans\n"); return ret; --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11011034.outbound.protection.outlook.com [40.107.74.34]) (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 977892E92DD; Thu, 23 Oct 2025 07:19:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.34 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203975; cv=fail; b=TUa55fmbxhAYqs+9+ocwEmNqD82IL30MxOz4CSBaDdwqLgygAg225Sk5xQqL52dP3XVXNPi9TE4k+l9bhZfAVNKeA+jMmsQS5nZdTFDWXxaHmppyw0Oc+gRSArRw9dPC2OB76MZCWMaiGzwvIjYF2xJaV+o8zQsbSI08DSlDz9I= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203975; c=relaxed/simple; bh=xB55dIyctDZhBRl7GnM6pSLRk1u5twZOqPvIarE3RbQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=G2eIggj1OmOyHDhOC+e17EKAt52vrqVQY0BfnTDpZM3NQb+PGJrnFuAiY/m5xFKOdfvCNQMAG3yoTdBaFWep9d6r3koC/f82UXoJZWOU08ZZEBCyxjvpNuiFpocwqzwYwtbUerweZcVxi8QhtIbx7Z/xj+CUMOXoezmB1dCguZc= 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=Lpzeg8Yi; arc=fail smtp.client-ip=40.107.74.34 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="Lpzeg8Yi" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=B8M5i+IKHa7hO7N57J1bKn8Vv7uHLGmY64ng95qZmr/EY1nJKM9/YGqPQpo4Q+kR7XUnhx4pYi+KwobwAlBvfx+Gt7XDZrnlQs1ve7d2PqdCcQJ4lcqNaNeT3q3j7jf+FjU41ESPA3F/Un9KoIVVoZcM7OlfSGzou9Fb5rmnvc1dRpTZq8teiR+7MqUeD7H0gttrd9X0ViBgYubT86cNn+Bibt0a01TPS6DW7itfRrU99+hMBAtEncyvyZyajA9VdoXnJLKOwPlA051H15h8goiDz0PIGIyMUuDfQ+39zj72SA1ddAJIn0Wpg01u3/ei6iGtoq+5hoZk3ofGUkRSaw== 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=5gdUTrx3yiNH6JbvYN5AciSbf3dvcsYhf2+LjTIRs5Q=; b=e9gLTIyH/fzioGG+DmGwoYK5r566QYOkYYbM3Qp1ydnY06LTaKbZlsVVejlN/DKWanTDt2/UZyg87yrr9BjsMhdclgWAbvIAXmRCPFn/zRc22k5O9zp5I3SEdEA65Mb6Ezx4E1T5JyspH+TPPIw7oqz6BGTi1GCpLEl16ZC/TE3fDO0Kx9UsBIWV396GkxoAcNVNF9SkZsTDpPL+BAKPES73p6X4UFj6BltVI0i4+Idtj4uDjPiD/TmcHlNVo/NlC92ayqnxl5g9nnbz0T/Ocs8zpFSLd7G9/2cXVjipv+sajnDHGmQOKCbuxeuN6bUULVY+Td6rUrnn+z90W6D/pA== 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=5gdUTrx3yiNH6JbvYN5AciSbf3dvcsYhf2+LjTIRs5Q=; b=Lpzeg8Yitmr7KDKuHdGFvhs7YLo3baJB8eNAJKaP+XLAB+vGaR5ZOWakp7I33p64wvDH3uhAh+LnHTSNSw47DRVXmjuFGiZ28TuaxtNP0R0KjWKMizdVDkvQc1WdWnGBXQyPWt4HS4zf8cTw5ohSD03SYNWA5g5/yeq7vP9xpss= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by OS7P286MB7183.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:456::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:31 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:31 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 07/25] NTB: Add offset parameter to MW translation APIs Date: Thu, 23 Oct 2025 16:18:58 +0900 Message-ID: <20251023071916.901355-8-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0092.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:37a::16) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|OS7P286MB7183:EE_ X-MS-Office365-Filtering-Correlation-Id: d6b99437-69eb-49d2-27d6-08de1204824b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?66TYCRwseo37pGjpsuhPPwEyj09Ef1v8cmqIhZyry6xGeTeZqWgMnf8T6tjG?= =?us-ascii?Q?hGpARSuN9IfklIBd7g9GmTI6HKt5y4MQPuDnQb+KP+Bh6hNo4bY4j6xdXksh?= =?us-ascii?Q?+MpjB5xBFTtwn3pCQAVpJKJXmpe9Jt8Rea8M0O5uS4jq9nZdVhGVY6dOsIL4?= =?us-ascii?Q?xK0eFMqpSHWCxDfpaKpKbMGSv2vePlEr4rXDUdRew1KOPseAdx2IPJyqqINa?= =?us-ascii?Q?NGVT4LuO9FUgm0WszlGyeWUCjN37RoQneEyOwD8R1fghUFzBrRt7njyvT9vR?= =?us-ascii?Q?7iqnmt9L+EFj6yPO1Sgq5kFmdCNFTy8tlnOu2gmNPwILcc1ta/gmloaP1cET?= =?us-ascii?Q?WnRHVTUVO9Iz3Wo7AfDIrCkYG+Or/gMpY7XqIfdvr3o3DDXLsFT1h6kv0vb0?= =?us-ascii?Q?H/c28qsbltcTXDqJ+m4Pv65Z5BBGMQ0CyeaENCV/9b2zhA0wqZs4Wk3ntKKU?= =?us-ascii?Q?6iw9k8kUfE70VtYenWphhxKe+rwkYtL5j/FrWC0LJN6sNW5SzUDESOrRev8M?= =?us-ascii?Q?8dx5KZSWyNSHX5HEjBTOVR8Ne1CNiG2HyCm6YKzMXgrZ2JFZnfTVNoDaMrMS?= =?us-ascii?Q?9OuBIbECOjJtL8so3cd3Mk8HDdJ08P1mmQheIKcnNK9XhwmveFhkf1Rk/2/P?= =?us-ascii?Q?xfL2ibYF3X5Jtn3rSpPVhDjhg1GAhh2hR6hH3L1jilfU0zpT8CVa3sT4//5w?= =?us-ascii?Q?oU9y+8/Mn+21RJQoyO83MDDdSuVM6uykLNVbuQ8BTyya2OZnuy4uldLgt9Ut?= =?us-ascii?Q?lYxM8pk+BLCOtxjVHqgxvtG4y2QXWQ17gwJHa1QC+tmyvpsZqeYrDjQB6A9m?= =?us-ascii?Q?osV/IYS8EgkvpkscfdZ4oEAehIB6H/sSld1mtUdJT8NDjSASxu5D/xSGjcwm?= =?us-ascii?Q?wl8w+tHhCNmLbsTwexEyc14BRkLYZJ4K+uLHZcnMeT6FXI1pXYIBwxwElf21?= =?us-ascii?Q?FHEMw5Qqv4BpzoiQrY/WrKtc808PT/jExAxkwFE3UufyPFPZ32fOFPbmnQH3?= =?us-ascii?Q?zA727m6DIafn4ZyBGNBHro0SB4XL/4ZntSxTFREUVKdCNbVLOJSkScQ+lTlL?= =?us-ascii?Q?n2g+yYBaui9IddsDtU2tDFDwS+pHy1Yv7pXgoY441AYRrfet/4j4XgiiclOz?= =?us-ascii?Q?FPeFCtX5FiSYe4d8do/SNINcsFYNlWixqLNFnCT299BGyYYVZuUDDXt4SL2P?= =?us-ascii?Q?B3Hq3Njd1P/Myjjg1USFurAxMMO1FmZYr3+A+c4KE7VDLVIpa+Jdu/gv8GXs?= =?us-ascii?Q?Y7vaOjtkqWVeydAM9bMtZep9OTkKafEIj4ad4ckPwK6uTsfuvehxchzIvP7h?= =?us-ascii?Q?FCxJ2EHpvrML9ILezoHHtSPbZUbKe+xSYS28e6LXVtj0GCHdC0ybo5C6GpZ2?= =?us-ascii?Q?RvKtCW7THyJgf2a+JldAay0ENgT59dqvoS4kAR1CXe2da1gbChwtNxeMJMjl?= =?us-ascii?Q?RhItEUo4txoUp1YEYdBnbi7MZ40QwTrQ?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ElhpBLYeL1YZluaOGeuKrYnPCMobC4PsitKbl2PtQz3rvDdH5IjuR7TG8ZBq?= =?us-ascii?Q?JhA6FEDbvc6PQ4VZ+1EZbhBsFcvT4Hr8aGfhemEDdZl/fOZKYVVO/uYvuYdx?= =?us-ascii?Q?ZfbLy2juYixqe62Zbws9irfqROQEYtKtrJfhoTYNQTZYe3Idelf3+mQVkK3q?= =?us-ascii?Q?8d0Yv9Bsq7ZxurfJcCXBSJ9cdBjuT9V2GHzUPd52Fr9IdC0nt22ww+g499r7?= =?us-ascii?Q?FuLTPW3fo4AmJvxqnhg8WTR6/lSnhIVmTb1WFTFtDi10c9HvDVw8/oYVranv?= =?us-ascii?Q?RyimsgdsRaZqMDs2NkhGW1g8tcL5wEUcxG4ns8jjynMmTY+Fi2F53lgpGRom?= =?us-ascii?Q?GoanTrs7QzUTFHvgLoaVrX/aQvkcRLKRdsY2LAqsuwbC2mOkk01quRSTHHlp?= =?us-ascii?Q?DXaUYvatpa4dwLR8SItC8ZS4a/aC9cy5ryOc33MtM0WWJ0rU+Vyw0Ie538Fw?= =?us-ascii?Q?WWBhYJg4ZOZVL5b2ja0RL6rRV9syct7erUV6CN/74PqdejJtR/dSsyPujJrc?= =?us-ascii?Q?MPZzfWO3WQxZNJH2fvBrWdBozUNi41MpFUrYN0tVhWpljaQpjVHgaKNApz96?= =?us-ascii?Q?zRiew9uPmM8u7O+UNYTIws5yahqnEUOjNSISZfdOvSBuhksvqBJt8dkBRxw5?= =?us-ascii?Q?q0hhaXrCdzOvhW8oaQnYk4avXkWvUZanSG0F/RwJACgcwmngoKDtvKwfaIPS?= =?us-ascii?Q?2jbUiyUOZWIhZ5omGuLT/RPULdcKdpMxigtCh9vB5QxvHc45MyVVxEU5i046?= =?us-ascii?Q?WuEA32Ev/y7A1JWV5aRvjsVtiRZjkCnc1ZqxJRdLTv8HKnFWJNkL3ssjIj1w?= =?us-ascii?Q?921ytdG/gpcrFag2SDN+y6J9+1uCplvuzzV38Z1wpTTJYugftnAZQfzPSV4T?= =?us-ascii?Q?RtR+scrlYDeWUWr3LnATeOLab/So2VTQAdVNSWX5aCdQaH4UtJRaJmwbOb8E?= =?us-ascii?Q?jAZfPqSWQzwBweOXJKmXFdBkAep3GcndBrThgJr74T8AwZyroHXOl418aDv3?= =?us-ascii?Q?AWTS0t8ROFQRuDocIswsfBpBkI8ks5ywJ4dUbQjBYlH/XlFO/KAGouPaDY6e?= =?us-ascii?Q?gR/8qDOFqgIaKaoKsSNasPTrBFLPhjkIxsUAiDx5uZpTWJgYaskROaAkLI9Q?= =?us-ascii?Q?oTmW2HqVh9DuZ+z7iGuUM9HYxhiKecQ8rG4lBxJL0cybSuW9O7CIQc1xXdWW?= =?us-ascii?Q?PLExww0ZXcdwFc0dD11d0I61CBnpsDZ+JjKEPGDZZ5E6d5qK30GfoySvFOmE?= =?us-ascii?Q?ryMANKSPJc276UablKK0kz5gLdxqKFfT5SZ6zp3j6DQe0Ln5aWJl7+WJnlTU?= =?us-ascii?Q?exKF9ykI83UEyzC8i1ZMcX5y+izocFP8aQMJm3vd9YIhH69SGW1PJh9DLHan?= =?us-ascii?Q?mLi9MWhujvGh/K/oZeoMdDhfPnkHmEbocGmrCUI77iNh/vTnJLlZVRiwOnMB?= =?us-ascii?Q?HSwqift1pX0Q1lWj+iSuf951xUHbTlP22ELHgCoUN737DrJ+ThBqUoIwTU1s?= =?us-ascii?Q?xQmK3vkWnobyhxPu49UO0123vOciNJPkHZaRbKfUmhLbyt/BJfQ2OWbe9xBW?= =?us-ascii?Q?oPoozLrBtKW1zZkNpoz4vMREp9G/xxL29ASkunM5YbWuZMQyBkOHmEsDCs3w?= =?us-ascii?Q?VacDukbCSI9q72+RotV1+Lg=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: d6b99437-69eb-49d2-27d6-08de1204824b X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:30.9456 (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: hT5BEqVx1yI3mk4Dvm2BmekPnK5yQg5QU8WivLLDggE/nlk39sG4CemMQDl52oszcA3JiE7V0aIjBkHP52GlLg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7183 Content-Type: text/plain; charset="utf-8" Extend ntb_mw_set_trans() and ntb_mw_get_align() with an offset argument. This supports subrange mapping inside a BAR for platforms that require offset-based translations. Signed-off-by: Koichiro Den --- drivers/ntb/hw/amd/ntb_hw_amd.c | 6 ++++-- drivers/ntb/hw/epf/ntb_hw_epf.c | 6 ++++-- drivers/ntb/hw/idt/ntb_hw_idt.c | 3 ++- drivers/ntb/hw/intel/ntb_hw_gen1.c | 6 ++++-- drivers/ntb/hw/intel/ntb_hw_gen1.h | 2 +- drivers/ntb/hw/intel/ntb_hw_gen3.c | 3 ++- drivers/ntb/hw/intel/ntb_hw_gen4.c | 6 ++++-- drivers/ntb/hw/mscc/ntb_hw_switchtec.c | 6 ++++-- drivers/ntb/msi.c | 6 +++--- drivers/ntb/ntb_transport.c | 4 ++-- drivers/ntb/test/ntb_perf.c | 4 ++-- drivers/ntb/test/ntb_tool.c | 6 +++--- drivers/pci/endpoint/functions/pci-epf-vntb.c | 7 ++++--- include/linux/ntb.h | 18 +++++++++++------- 14 files changed, 50 insertions(+), 33 deletions(-) diff --git a/drivers/ntb/hw/amd/ntb_hw_amd.c b/drivers/ntb/hw/amd/ntb_hw_am= d.c index 1a163596ddf5..c0137df413c4 100644 --- a/drivers/ntb/hw/amd/ntb_hw_amd.c +++ b/drivers/ntb/hw/amd/ntb_hw_amd.c @@ -92,7 +92,8 @@ static int amd_ntb_mw_count(struct ntb_dev *ntb, int pidx) static int amd_ntb_mw_get_align(struct ntb_dev *ntb, int pidx, int idx, resource_size_t *addr_align, resource_size_t *size_align, - resource_size_t *size_max) + resource_size_t *size_max, + resource_size_t *offset) { struct amd_ntb_dev *ndev =3D ntb_ndev(ntb); int bar; @@ -117,7 +118,8 @@ static int amd_ntb_mw_get_align(struct ntb_dev *ntb, in= t pidx, int idx, } =20 static int amd_ntb_mw_set_trans(struct ntb_dev *ntb, int pidx, int idx, - dma_addr_t addr, resource_size_t size) + dma_addr_t addr, resource_size_t size, + resource_size_t offset) { struct amd_ntb_dev *ndev =3D ntb_ndev(ntb); unsigned long xlat_reg, limit_reg =3D 0; diff --git a/drivers/ntb/hw/epf/ntb_hw_epf.c b/drivers/ntb/hw/epf/ntb_hw_ep= f.c index 91d3f8e05807..a3ec411bfe49 100644 --- a/drivers/ntb/hw/epf/ntb_hw_epf.c +++ b/drivers/ntb/hw/epf/ntb_hw_epf.c @@ -164,7 +164,8 @@ static int ntb_epf_mw_count(struct ntb_dev *ntb, int pi= dx) static int ntb_epf_mw_get_align(struct ntb_dev *ntb, int pidx, int idx, resource_size_t *addr_align, resource_size_t *size_align, - resource_size_t *size_max) + resource_size_t *size_max, + resource_size_t *offset) { struct ntb_epf_dev *ndev =3D ntb_ndev(ntb); struct device *dev =3D ndev->dev; @@ -402,7 +403,8 @@ static int ntb_epf_db_set_mask(struct ntb_dev *ntb, u64= db_bits) } =20 static int ntb_epf_mw_set_trans(struct ntb_dev *ntb, int pidx, int idx, - dma_addr_t addr, resource_size_t size) + dma_addr_t addr, resource_size_t size, + resource_size_t offset) { struct ntb_epf_dev *ndev =3D ntb_ndev(ntb); struct device *dev =3D ndev->dev; diff --git a/drivers/ntb/hw/idt/ntb_hw_idt.c b/drivers/ntb/hw/idt/ntb_hw_id= t.c index f27df8d7f3b9..8c2cf149b99b 100644 --- a/drivers/ntb/hw/idt/ntb_hw_idt.c +++ b/drivers/ntb/hw/idt/ntb_hw_idt.c @@ -1190,7 +1190,8 @@ static int idt_ntb_mw_count(struct ntb_dev *ntb, int = pidx) static int idt_ntb_mw_get_align(struct ntb_dev *ntb, int pidx, int widx, resource_size_t *addr_align, resource_size_t *size_align, - resource_size_t *size_max) + resource_size_t *size_max, + resource_size_t *offset) { struct idt_ntb_dev *ndev =3D to_ndev_ntb(ntb); struct idt_ntb_peer *peer; diff --git a/drivers/ntb/hw/intel/ntb_hw_gen1.c b/drivers/ntb/hw/intel/ntb_= hw_gen1.c index 079b8cd79785..6cbbd6cdf4c0 100644 --- a/drivers/ntb/hw/intel/ntb_hw_gen1.c +++ b/drivers/ntb/hw/intel/ntb_hw_gen1.c @@ -804,7 +804,8 @@ int intel_ntb_mw_count(struct ntb_dev *ntb, int pidx) int intel_ntb_mw_get_align(struct ntb_dev *ntb, int pidx, int idx, resource_size_t *addr_align, resource_size_t *size_align, - resource_size_t *size_max) + resource_size_t *size_max, + resource_size_t *offset) { struct intel_ntb_dev *ndev =3D ntb_ndev(ntb); resource_size_t bar_size, mw_size; @@ -840,7 +841,8 @@ int intel_ntb_mw_get_align(struct ntb_dev *ntb, int pid= x, int idx, } =20 static int intel_ntb_mw_set_trans(struct ntb_dev *ntb, int pidx, int idx, - dma_addr_t addr, resource_size_t size) + dma_addr_t addr, resource_size_t size, + resource_size_t offset) { struct intel_ntb_dev *ndev =3D ntb_ndev(ntb); unsigned long base_reg, xlat_reg, limit_reg; diff --git a/drivers/ntb/hw/intel/ntb_hw_gen1.h b/drivers/ntb/hw/intel/ntb_= hw_gen1.h index 344249fc18d1..f9ebd2780b7f 100644 --- a/drivers/ntb/hw/intel/ntb_hw_gen1.h +++ b/drivers/ntb/hw/intel/ntb_hw_gen1.h @@ -159,7 +159,7 @@ int ndev_mw_to_bar(struct intel_ntb_dev *ndev, int idx); int intel_ntb_mw_count(struct ntb_dev *ntb, int pidx); int intel_ntb_mw_get_align(struct ntb_dev *ntb, int pidx, int idx, resource_size_t *addr_align, resource_size_t *size_align, - resource_size_t *size_max); + resource_size_t *size_max, resource_size_t *offset); int intel_ntb_peer_mw_count(struct ntb_dev *ntb); int intel_ntb_peer_mw_get_addr(struct ntb_dev *ntb, int idx, phys_addr_t *base, resource_size_t *size); diff --git a/drivers/ntb/hw/intel/ntb_hw_gen3.c b/drivers/ntb/hw/intel/ntb_= hw_gen3.c index a5aa96a31f4a..98722032ca5d 100644 --- a/drivers/ntb/hw/intel/ntb_hw_gen3.c +++ b/drivers/ntb/hw/intel/ntb_hw_gen3.c @@ -444,7 +444,8 @@ int intel_ntb3_link_enable(struct ntb_dev *ntb, enum nt= b_speed max_speed, return 0; } static int intel_ntb3_mw_set_trans(struct ntb_dev *ntb, int pidx, int idx, - dma_addr_t addr, resource_size_t size) + dma_addr_t addr, resource_size_t size, + resource_size_t offset) { struct intel_ntb_dev *ndev =3D ntb_ndev(ntb); unsigned long xlat_reg, limit_reg; diff --git a/drivers/ntb/hw/intel/ntb_hw_gen4.c b/drivers/ntb/hw/intel/ntb_= hw_gen4.c index 22cac7975b3c..8df90ea04c7c 100644 --- a/drivers/ntb/hw/intel/ntb_hw_gen4.c +++ b/drivers/ntb/hw/intel/ntb_hw_gen4.c @@ -335,7 +335,8 @@ ssize_t ndev_ntb4_debugfs_read(struct file *filp, char = __user *ubuf, } =20 static int intel_ntb4_mw_set_trans(struct ntb_dev *ntb, int pidx, int idx, - dma_addr_t addr, resource_size_t size) + dma_addr_t addr, resource_size_t size, + resource_size_t offset) { struct intel_ntb_dev *ndev =3D ntb_ndev(ntb); unsigned long xlat_reg, limit_reg, idx_reg; @@ -524,7 +525,8 @@ static int intel_ntb4_link_disable(struct ntb_dev *ntb) static int intel_ntb4_mw_get_align(struct ntb_dev *ntb, int pidx, int idx, resource_size_t *addr_align, resource_size_t *size_align, - resource_size_t *size_max) + resource_size_t *size_max, + resource_size_t *offset) { struct intel_ntb_dev *ndev =3D ntb_ndev(ntb); resource_size_t bar_size, mw_size; diff --git a/drivers/ntb/hw/mscc/ntb_hw_switchtec.c b/drivers/ntb/hw/mscc/n= tb_hw_switchtec.c index e38540b92716..5d8bace78d4f 100644 --- a/drivers/ntb/hw/mscc/ntb_hw_switchtec.c +++ b/drivers/ntb/hw/mscc/ntb_hw_switchtec.c @@ -191,7 +191,8 @@ static int peer_lut_index(struct switchtec_ntb *sndev, = int mw_idx) static int switchtec_ntb_mw_get_align(struct ntb_dev *ntb, int pidx, int widx, resource_size_t *addr_align, resource_size_t *size_align, - resource_size_t *size_max) + resource_size_t *size_max, + resource_size_t *offset) { struct switchtec_ntb *sndev =3D ntb_sndev(ntb); int lut; @@ -268,7 +269,8 @@ static void switchtec_ntb_mw_set_lut(struct switchtec_n= tb *sndev, int idx, } =20 static int switchtec_ntb_mw_set_trans(struct ntb_dev *ntb, int pidx, int w= idx, - dma_addr_t addr, resource_size_t size) + dma_addr_t addr, resource_size_t size, + resource_size_t offset) { struct switchtec_ntb *sndev =3D ntb_sndev(ntb); struct ntb_ctrl_regs __iomem *ctl =3D sndev->mmio_peer_ctrl; diff --git a/drivers/ntb/msi.c b/drivers/ntb/msi.c index 6817d504c12a..8875bcbf2ea4 100644 --- a/drivers/ntb/msi.c +++ b/drivers/ntb/msi.c @@ -117,7 +117,7 @@ int ntb_msi_setup_mws(struct ntb_dev *ntb) return peer_widx; =20 ret =3D ntb_mw_get_align(ntb, peer, peer_widx, &addr_align, - NULL, NULL); + NULL, NULL, NULL); if (ret) return ret; =20 @@ -132,7 +132,7 @@ int ntb_msi_setup_mws(struct ntb_dev *ntb) } =20 ret =3D ntb_mw_get_align(ntb, peer, peer_widx, NULL, - &size_align, &size_max); + &size_align, &size_max, NULL); if (ret) goto error_out; =20 @@ -142,7 +142,7 @@ int ntb_msi_setup_mws(struct ntb_dev *ntb) mw_min_size =3D mw_size; =20 ret =3D ntb_mw_set_trans(ntb, peer, peer_widx, - addr, mw_size); + addr, mw_size, 0); if (ret) goto error_out; } diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index eb875e3db2e3..4bb1a64c1090 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -883,7 +883,7 @@ static int ntb_set_mw(struct ntb_transport_ctx *nt, int= num_mw, return -EINVAL; =20 rc =3D ntb_mw_get_align(nt->ndev, PIDX, num_mw, &xlat_align, - &xlat_align_size, NULL); + &xlat_align_size, NULL, NULL); if (rc) return rc; =20 @@ -918,7 +918,7 @@ static int ntb_set_mw(struct ntb_transport_ctx *nt, int= num_mw, =20 /* Notify HW the memory location of the receive buffer */ rc =3D ntb_mw_set_trans(nt->ndev, PIDX, num_mw, mw->dma_addr, - mw->xlat_size); + mw->xlat_size, 0); if (rc) { dev_err(&pdev->dev, "Unable to set mw%d translation", num_mw); ntb_free_mw(nt, num_mw); diff --git a/drivers/ntb/test/ntb_perf.c b/drivers/ntb/test/ntb_perf.c index dfd175f79e8f..b842b69e4242 100644 --- a/drivers/ntb/test/ntb_perf.c +++ b/drivers/ntb/test/ntb_perf.c @@ -573,7 +573,7 @@ static int perf_setup_inbuf(struct perf_peer *peer) =20 /* Get inbound MW parameters */ ret =3D ntb_mw_get_align(perf->ntb, peer->pidx, perf->gidx, - &xlat_align, &size_align, &size_max); + &xlat_align, &size_align, &size_max, NULL); if (ret) { dev_err(&perf->ntb->dev, "Couldn't get inbuf restrictions\n"); return ret; @@ -604,7 +604,7 @@ static int perf_setup_inbuf(struct perf_peer *peer) } =20 ret =3D ntb_mw_set_trans(perf->ntb, peer->pidx, peer->gidx, - peer->inbuf_xlat, peer->inbuf_size); + peer->inbuf_xlat, peer->inbuf_size, 0); if (ret) { dev_err(&perf->ntb->dev, "Failed to set inbuf translation\n"); goto err_free_inbuf; diff --git a/drivers/ntb/test/ntb_tool.c b/drivers/ntb/test/ntb_tool.c index 641cb7e05a47..7a7ba486bba7 100644 --- a/drivers/ntb/test/ntb_tool.c +++ b/drivers/ntb/test/ntb_tool.c @@ -578,7 +578,7 @@ static int tool_setup_mw(struct tool_ctx *tc, int pidx,= int widx, return 0; =20 ret =3D ntb_mw_get_align(tc->ntb, pidx, widx, &addr_align, - &size_align, &size); + &size_align, &size, NULL); if (ret) return ret; =20 @@ -595,7 +595,7 @@ static int tool_setup_mw(struct tool_ctx *tc, int pidx,= int widx, goto err_free_dma; } =20 - ret =3D ntb_mw_set_trans(tc->ntb, pidx, widx, inmw->dma_base, inmw->size); + ret =3D ntb_mw_set_trans(tc->ntb, pidx, widx, inmw->dma_base, inmw->size,= 0); if (ret) goto err_free_dma; =20 @@ -652,7 +652,7 @@ static ssize_t tool_mw_trans_read(struct file *filep, c= har __user *ubuf, return -ENOMEM; =20 ret =3D ntb_mw_get_align(inmw->tc->ntb, inmw->pidx, inmw->widx, - &addr_align, &size_align, &size_max); + &addr_align, &size_align, &size_max, NULL); if (ret) goto err; =20 diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c b/drivers/pci/en= dpoint/functions/pci-epf-vntb.c index 5b3aa1abeb70..becfad483643 100644 --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c @@ -1269,7 +1269,7 @@ static int vntb_epf_db_set_mask(struct ntb_dev *ntb, = u64 db_bits) } =20 static int vntb_epf_mw_set_trans(struct ntb_dev *ndev, int pidx, int idx, - dma_addr_t addr, resource_size_t size) + dma_addr_t addr, resource_size_t size, resource_size_t offset) { struct epf_ntb *ntb =3D ntb_ndev(ndev); struct pci_epf_bar *epf_bar; @@ -1288,7 +1288,7 @@ static int vntb_epf_mw_set_trans(struct ntb_dev *ndev= , int pidx, int idx, epf_bar->size =3D size; =20 if (epc->ops->map_inbound) - ret =3D pci_epc_map_inbound(epc, 0, 0, epf_bar, 0); + ret =3D pci_epc_map_inbound(epc, 0, 0, epf_bar, offset); else ret =3D pci_epc_set_bar(epc, 0, 0, epf_bar); =20 @@ -1399,7 +1399,8 @@ static u64 vntb_epf_db_read(struct ntb_dev *ndev) static int vntb_epf_mw_get_align(struct ntb_dev *ndev, int pidx, int idx, resource_size_t *addr_align, resource_size_t *size_align, - resource_size_t *size_max) + resource_size_t *size_max, + resource_size_t *offset) { struct epf_ntb *ntb =3D ntb_ndev(ndev); =20 diff --git a/include/linux/ntb.h b/include/linux/ntb.h index 8ff9d663096b..d7ce5d2e60d0 100644 --- a/include/linux/ntb.h +++ b/include/linux/ntb.h @@ -273,9 +273,11 @@ struct ntb_dev_ops { int (*mw_get_align)(struct ntb_dev *ntb, int pidx, int widx, resource_size_t *addr_align, resource_size_t *size_align, - resource_size_t *size_max); + resource_size_t *size_max, + resource_size_t *offset); int (*mw_set_trans)(struct ntb_dev *ntb, int pidx, int widx, - dma_addr_t addr, resource_size_t size); + dma_addr_t addr, resource_size_t size, + resource_size_t offset); int (*mw_clear_trans)(struct ntb_dev *ntb, int pidx, int widx); int (*peer_mw_count)(struct ntb_dev *ntb); int (*peer_mw_get_addr)(struct ntb_dev *ntb, int widx, @@ -823,13 +825,14 @@ static inline int ntb_mw_count(struct ntb_dev *ntb, i= nt pidx) static inline int ntb_mw_get_align(struct ntb_dev *ntb, int pidx, int widx, resource_size_t *addr_align, resource_size_t *size_align, - resource_size_t *size_max) + resource_size_t *size_max, + resource_size_t *offset) { if (!(ntb_link_is_up(ntb, NULL, NULL) & BIT_ULL(pidx))) return -ENOTCONN; =20 return ntb->ops->mw_get_align(ntb, pidx, widx, addr_align, size_align, - size_max); + size_max, offset); } =20 /** @@ -852,12 +855,13 @@ static inline int ntb_mw_get_align(struct ntb_dev *nt= b, int pidx, int widx, * Return: Zero on success, otherwise an error number. */ static inline int ntb_mw_set_trans(struct ntb_dev *ntb, int pidx, int widx, - dma_addr_t addr, resource_size_t size) + dma_addr_t addr, resource_size_t size, + resource_size_t offset) { if (!ntb->ops->mw_set_trans) return 0; =20 - return ntb->ops->mw_set_trans(ntb, pidx, widx, addr, size); + return ntb->ops->mw_set_trans(ntb, pidx, widx, addr, size, offset); } =20 /** @@ -875,7 +879,7 @@ static inline int ntb_mw_set_trans(struct ntb_dev *ntb,= int pidx, int widx, static inline int ntb_mw_clear_trans(struct ntb_dev *ntb, int pidx, int wi= dx) { if (!ntb->ops->mw_clear_trans) - return ntb_mw_set_trans(ntb, pidx, widx, 0, 0); + return ntb_mw_set_trans(ntb, pidx, widx, 0, 0, 0); =20 return ntb->ops->mw_clear_trans(ntb, pidx, widx); } --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11011034.outbound.protection.outlook.com [40.107.74.34]) (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 064F92E091C; Thu, 23 Oct 2025 07:19:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.34 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203977; cv=fail; b=fCEeItaN1jaMPjMDb2g5Bd2fINmllRQc6oj9rWBI9WzPAJxBE1Ueks5I2+OgxnoxteeN18/j7PJwz8SdesRNhwWRGV0Ww/+5TR6Xt/jpKpaAITOiyFJN3OnNtQ+kyLuecTMbxvT8bIdmac2/vDBuewBRSugGKyQvUo396eacfKY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203977; c=relaxed/simple; bh=vMRjcRdLL5kTQatVK1p/TBMxB28CeRsl4xhwqjSiACU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=bkyhkxokMq7kGSpFtgYr1V5q9QX4LvWcqOwgsY7POAuUGuARtK4D/SX+BwG9Qai9p8VHf7TC/1sCTgfYDfGocaE7zozxlfZod4X1T+lRQoMx3eLNFC80nL55DY8HmCzOh2Z2hMW2cRQ8P3QRw+M//PAb1P8uQe7CBRtt1ZiPO5A= 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=LPZ8ljZh; arc=fail smtp.client-ip=40.107.74.34 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="LPZ8ljZh" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MRUIizQfTrgWcxZgW0kiHxHeoXctKzoCLmT20IQ8nBa8Zf+xtbz+Dh+QeeDDn10mLaqESL4WKMi94klDnk7b94POY8DFMXz6mX9ftsGwuktVxktsmEsDdoisTdOPiNAaox5yaTPHCUdRKwoGkfB15qWsGxgs44lAHCidB15e9eRY1gAJwh2HGd4nQBpz5EapB3ZaASdDbHbXCUA+xsAgnei+688YFysSkNHmLWLQVCqkluRimiZ5Tkh9ROTE2zo0JImhPpXYfXcv98Llk0q0UJflRNTV+vnqL11gfWr4kF4Gzbu9i65ZmDTnzt0UzW2JrZrYL5LkwVFY4Eg9o/JQOg== 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=CmZNTGPYpiwoSjUlrm5cWdx8zS/I5W1C0eHjpAy30p0=; b=k7LCFtF8BksTfbzHFIc6T1Wm/I9PFi2/8Up0ClY+Lm+XudLJ5xQ/0jFl6PQnkY0WZNr7sSBx+pHQ0h76j2hkdomYKABlq/gd93Kka2MH4nD8RHso+qWqeTjzVARaU3KcgN8ji42F0VaVDBMe9Z/2ithWPogiH6nKSwevOdYp94Ye2ACfQGR+Ct4RxA5f11XEshi877dlgd43NxZdHKcXyyPj3wug7cd3rFhClvOkaDBwJpjEGXCARFLMv+x0PK2VSwi8m1gOyuhN8pCeG4XQLjupoycwp01bNNJwcB7XjxRvVDZGznjMI6jXFP0pLLk6s6nw/qOIT5Z4/31uA0OfRQ== 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=CmZNTGPYpiwoSjUlrm5cWdx8zS/I5W1C0eHjpAy30p0=; b=LPZ8ljZhwiGfLYZvqtfSImE570EEJ70fhTo2p3U6JCc3ZivgI1mRmUxIvULILiaEIaktco8EPRrtuscwxt91n3CQG6KwYNK9wfgGVxpF4xhIHSQccDQIyX+ReZXm70+j50WrByFHoUnceD3j5F7+woDANUOiwjIxBtKym6ldbWY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by OS7P286MB7183.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:456::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:32 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:32 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 08/25] PCI: endpoint: pci-epf-vntb: Propagate MW offset from configfs when present Date: Thu, 23 Oct 2025 16:18:59 +0900 Message-ID: <20251023071916.901355-9-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0085.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:37a::15) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|OS7P286MB7183:EE_ X-MS-Office365-Filtering-Correlation-Id: d53fb424-e457-4afb-62dd-08de12048307 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?evjLJQm41wAxc3V6TqyCJl0u/OHQkrli8ODYZwUwO303NtAxTiiWj9mWAEv+?= =?us-ascii?Q?mxPyl4ZXREZBOZ/YdmPvhCCLgHwR2TUeQN/iXf6xf3agCm0T/i55fAZW559n?= =?us-ascii?Q?AvR5HPiB2lRrwlrJwgkoG0LnoPkrNfraGBIU51Q0J3YaYyDwMQjFxMb3h1kd?= =?us-ascii?Q?FSrZhyfcqxKZaiBPvIuAQ7GH+SAU/WOqy1P8RxdGU8TEwh95Qu7NGUnIpB3D?= =?us-ascii?Q?wn0INv5xmLHhhiNIon1ArDXL4WABi4HB9qA3UCkYsuE3xVYL4+9NpuB2qkGf?= =?us-ascii?Q?C5ZiHsjY+LueGsY/1E+EfYf9mPwoYCcZPwSdwx3e7sQ9daGI7Rit2QDpXOfE?= =?us-ascii?Q?mn7JTAslGJNGjEFQJH9l0kpsf2R9wwBpOs4FWkUBVBCSZ96m2L3qP1BUOZz4?= =?us-ascii?Q?slb8VuAPO5tTEKmSTs1Ga4s1Ik1e2o7Cl12Hj7PUNB0KDC+aGjtPYQzAC3ng?= =?us-ascii?Q?E+3wkSyw+0w396tBeOhmoq2856WzgroSnMWJS95Rrx7AJrc8lQFbPjSqdQl1?= =?us-ascii?Q?N6iPtLWyH21CtoLQEUOg7eFtAWrWE+x9IuotXO0T8NpC+YgAIvU074/D/I03?= =?us-ascii?Q?Se0sp+SrN2wUfMOeP+IsISzREj3D2QO3W+PINnnVcarwmhnuRgKoifiQ7hK/?= =?us-ascii?Q?YUlzE++BHSUf1HLT4depkTmT0lhz35ygk4ijdgtdKfnvHh2C0NpMgNCLrg1y?= =?us-ascii?Q?vHDMdsE9+ed8xnrJcgLp+6EPyN6/jQf2FtXlVYMEPx35p8Y2V+h4kV7Na/U8?= =?us-ascii?Q?C8BFmK05OgMGqcPUmo7LnxoYd4BDqhTOKDNptAoqSg4gE8hD6VCdOCeLF8U/?= =?us-ascii?Q?9mvzYIYr/df7KWTOb0p2rcOIBDc6/RGrBTcf+08Ob9Pzj+MphWdoyq0sxosn?= =?us-ascii?Q?hUz8HMY0kqJ2BVedlfOJONdEKzEkXxS0zwut2oL34DlE2HSbCIFlZnTGjwjT?= =?us-ascii?Q?kKg6WcZrc3AejFMehC/MctCmM8u9DkCltWG7CpEWIozj+o6+N+zsYIVExBuR?= =?us-ascii?Q?aolD4yXBUFfHwDZZD7s+ITcQIm0cULDQjI5TaN46OhIjC7IUc1QdcVlRc50x?= =?us-ascii?Q?NLB1lbiLBq7HvZkkyJMEOLLvOM/izFs1pHLvf3zO7gE3CiSgkwlCaRsrUHu+?= =?us-ascii?Q?8Jey9xrj5DC5xJeHMBUF01AlFWBVXW9GcW4+PTmtvzwJbBXBrRqHqChTDAMB?= =?us-ascii?Q?3dp1ciG2j6o8rRlViF5DKIKRCHG5iJt3AeTtesC/kavXdHz57NJhBDpgMfnY?= =?us-ascii?Q?bY+1mR9QUEOtwpjotO0TYnP3ew5UI62IIL+A45NFD7riVx3lEprtJ6WIAuSF?= =?us-ascii?Q?UJ6M9zf275TLqBWkHsDqjtZnOMQGUgfe7om1JNr8Y8cwxMXDLkTEaeBlcgq6?= =?us-ascii?Q?MCr3YUdtdquFwuE731vJdHbrWof2cXf+udiPAwl2tFg1LMWBpa4YEMLHM+Iz?= =?us-ascii?Q?1EpPnL6HxUykXVcoYIOVYgsFVOnRL/Qh?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ShToFt8pJTFqVMb3MpylRp6ZddO3LS6tvTmvHEVuhC9EvITKBwQKOwNAZs81?= =?us-ascii?Q?ukDPTOP5/OwJ2EUvXEgOJw7hfadxSM3BdUEVmo8Sw69k62QDm5PiUWqsm4cQ?= =?us-ascii?Q?JPeB7tP6e+20EPgvvk/KMrmU0rwAnR7asFFn0zwgpVUJy0I7VYBwmgrho7ee?= =?us-ascii?Q?MiMK8byrYTQKb1Hg1+ZgClo/weWmT8Mmrx7XXyXGWqVy/610R8x/xRy7KMDo?= =?us-ascii?Q?suDtV5NwXSLp9059F8/S/F1wpk5g/W/C2ReD9fnYNqwp/IKcTbIJ/dmY/n5p?= =?us-ascii?Q?dgjWUxw9JsETZTdNJyRMohwOZuMnC8IksnAj/pF2GcHEslRqRjjn8umD/NSE?= =?us-ascii?Q?FGTHnmRCG/t0hBdUstjpqahWOI3GtiYWtN8N7v5WX8GAI36XE8tZM7yq8svJ?= =?us-ascii?Q?tXGiOgUdvmpICucDfb1Lo608RPgiEZBP6f38MlGMdk11Vnwb70KfQErXwXLY?= =?us-ascii?Q?qVj8JpWjQlZuMI3/yPoD3q7T9xk0ErXUI7Jgdctpvu3Nc/8CLenuDzm9nPb6?= =?us-ascii?Q?4QcmgcaSw6HnVaSYImy2LK6em1K7XU3LyHkY5j9pM1cWWugI/u9dw5tebUwj?= =?us-ascii?Q?rUSFm+yZLUK5qN4zWfduUFzPKMIEeErmuxaSMzLjIwoVLjkLjU6RIH1d7ub8?= =?us-ascii?Q?CdBjQ+5BhgMyUh9y/mCZGfvh32zV9tqKV3l5XmLqnbYmyS8HBvumwskKhNlh?= =?us-ascii?Q?v2YudR4DX5ds/7Jpl0bWtk7x3U6xeo85TaRP4tUBe+deQFP44InAt9TkB2qO?= =?us-ascii?Q?yrizbsDO+K3DnkIf1GTwdAc22x46Gysk8DJIngjaLU2qnK6XZSG0C0JN//2U?= =?us-ascii?Q?67t4MNmp2uoUJUjwRaoNN/+Gqf8OVOw9KmXuDJydRuxSAofkcIt1BBP1xveU?= =?us-ascii?Q?EsTNJVs1cbauhmTrcXKkDwCrIbgS1a5kpQzfxcse/6MUKEIUTN/AFaA38Jim?= =?us-ascii?Q?LaSRt+/9bgUH9KKa39x3ZuwAr/gayJfqTHHNs86Q4K+BaRBmVYg8+844ozHQ?= =?us-ascii?Q?wkMRXCX5qXD56mcMI27RHtrlEM2d+GIlewp/RVrlbdGbjAs2H0SiV//ej94w?= =?us-ascii?Q?myIKOof8ZiE1ElcHObLy84bMiqpH+ZDK1zcCNrNdsOs5TkxK5aV9HauQN1cL?= =?us-ascii?Q?2syxtLtX6URE7uFA/ASH2qMbXBQ60L54IJDYIhAAN9J9RLM8ISlfRWJUbrOS?= =?us-ascii?Q?NuJOVOb4fU1ZH5PwdDVhwmquagYIGCrq34LhydpY75V/ouNde6RI3dJxjt/s?= =?us-ascii?Q?DFTDcS+Ht99A52JypV3yStkX1gQoW7g3c1o4WHBxuniLr/STStkAi3NxAjc1?= =?us-ascii?Q?7+SL1jHshCWCkmYrWfvu5nQmexbkv1R2GdKg2r5zHEVNjS0hEy3dytmaXqUy?= =?us-ascii?Q?iVTjdBOdmiJoxpaBs3YY060p1EasrMIf1zQtpfV6UffxyTsIwS1FsJUP4IQm?= =?us-ascii?Q?f3FY4jTng1rj7tWceCEOBN0/SlfFLfI2/XsOXYkIGeV9s995PTiBlvDnzWaE?= =?us-ascii?Q?LRUriNRP4jEWaNvzJvfYXuEcarpO9FM9HySCSEnBG0O7pyA5c/YrWsXHjUUP?= =?us-ascii?Q?ztoAVBCHSRS16y6YaYd3SRIH2ovSRI8aXxM/t1wNR6AQEi6W5BxsKmLSxLHc?= =?us-ascii?Q?VvbrTcvdSrcZoNxd2DtEcWI=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: d53fb424-e457-4afb-62dd-08de12048307 X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:32.1965 (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: YAJ4Jtl9F3hp1SbzCa/a99YYs9HnIC4HW4EkNGEwu0QqrBRTzlj0tEVHXDFEhbQin/AbvaS+uomLvZ1jkmzd7Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7183 Content-Type: text/plain; charset="utf-8" The NTB API functions ntb_mw_set_trans() and ntb_mw_get_align() now support non-zero MW offsets. Update pci-epf-vntb to populate mws_offset[idx] when the offset parameter is provided. Users can now get the offset value and use it on ntb_mw_set_trans(). Signed-off-by: Koichiro Den --- drivers/pci/endpoint/functions/pci-epf-vntb.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c b/drivers/pci/en= dpoint/functions/pci-epf-vntb.c index becfad483643..6495f99ffd4f 100644 --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c @@ -1413,6 +1413,9 @@ static int vntb_epf_mw_get_align(struct ntb_dev *ndev= , int pidx, int idx, if (size_max) *size_max =3D ntb->mws_size[idx]; =20 + if (offset) + *offset =3D ntb->mws_offset[idx]; + return 0; } =20 --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11011034.outbound.protection.outlook.com [40.107.74.34]) (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 0C8872EB84A; Thu, 23 Oct 2025 07:19:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.34 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203979; cv=fail; b=nuPEf3o6DJkdxF0qI6fjd33ovd4oU/7+BdJgiLrgADOyAKcBIFNHb3Uu1uujmiNszkuPnwWWIFtfVTUj4GLyWM5jp4+gEszVTD3EgUWdPqbJULCUWubfVqS/+yU4f9oB4YL9ZBfyqgDiZ49bWUOSr9BMdG5L0rRFON/zoDduyUk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203979; c=relaxed/simple; bh=MWApLqD4f8u7iEs3/UyJJ7ZW/qflz4ZEtoTREEceFto=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=YVpc+MDF6vc1s4vR/MLg08iT7GsZXyKadQ+o1f2TuhB7G4SMEOaiXAKTy+hgX1vCbukwMhUL0HOznxXqHspmHP9PqKRl4E3hmao5rQgkzhWQXvcc1X+hd1GeTs8vPYRYIe3IqeJVgGz9W/VU/ztQgNEwfrA6HNpSBuEPgMoKS3c= 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=Zl8ZHSrt; arc=fail smtp.client-ip=40.107.74.34 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="Zl8ZHSrt" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uAtJTai4Fp7qYihMgHL7u6gUE1cWOaiORE/UNvtNHPcw5eEYMzAIi0CUxdO6YtOTIU9JPwsRDB32WG1fSmPRMNW3XN51brXipibf4qRWTa/PbajmQ7PRemv57aSbXuIBunWWyn4kfqFUQb+SXlzuIKfiOYO7mTVfpLDc2xVVtaePH0Wk8dhH+f69ryykKSeO2UXo4AkrDZezozOnvbeKXEn4eGgSGM7xJTsYGfgWTlABfPR7kT0lH7WBEEXum3HfAd+4VGbszQ3aYm2JVF57XPa8bnfdbAF024wI2YBwQJ54Qt/r+DaUVgfQpoXW1uuVCyzFsbcVdCnboMtcM6Xv8w== 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=YvywiF7A/J6u/C0VKVz/MyeKxEHR5eMLNrym9BVeHxQ=; b=xn6r04aefDZlUtuYinCimGLtIW6YllJIhwtsqPqcr9fZ5DpSy1ZtlQ1crUrPuq53B+wKCk087VUK+tsPwStg1m4mGV7WGMdXIqXXuv6wVRZMDH4ll4RvKVUp/wfbIrCYSmZR8b91BBs9KuZM7x7Mg+vmB+0vCtbD5fickbE0YC9//Xh5nkOYqMeSeEQOqVyNiot+EblaEOokbTbpM5sjOzmyKr/noJhOklhFTj/VBZO4Ay+2HcJXzsRMolxJT8KfkzvnBld0HbujRSOatzYHuf19l4JnIe3G8L54tdoLqRoD+nAiETR7rieWoGFoYc23UL4Jn698aQlQwhhXXlc6Ww== 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=YvywiF7A/J6u/C0VKVz/MyeKxEHR5eMLNrym9BVeHxQ=; b=Zl8ZHSrtnWTCv3frQtt4GLSpLhk4sudYTn7PeFu7/osjJlyt/iIl/U+Ali0+vcgn4HqpWTiY6DiSDgnI5JyrG1MQoSc8Y3hS7Jrc31P2t40r8GPlItNCJBNpiaIL41SQ1QNJv75F3Iu3vUCPHrw7hF9cQIZL+JSu8+WlPWJIHNU= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by OS7P286MB7183.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:456::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:33 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:33 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 09/25] NTB: ntb_transport: Support offsetted partial memory windows Date: Thu, 23 Oct 2025 16:19:00 +0900 Message-ID: <20251023071916.901355-10-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0044.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:36b::8) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|OS7P286MB7183:EE_ X-MS-Office365-Filtering-Correlation-Id: 1cff626e-c1c2-4b3e-dd6e-08de120483b6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?I6Hu9iDHdWTFoTdBA1tc/UI6JkxGu7QmsTQ2tk6lxmSnmR6uJiyzXoy54Tp7?= =?us-ascii?Q?PKsWF7sU+OdRna/HlCSG2ZcXN2IEh5qC5hXkxDlnSMQC34JfXoNuh1cYnBcg?= =?us-ascii?Q?vbZI0k+UvTGv+gVLtzUEnbBpWfyJ7mjrNMqHyXYFSd3L8vV0mwLGrn7uDbQS?= =?us-ascii?Q?W2nPGEAuvM8+GnUJNGW/OUhh1hKNsycSubjkuIDwT/m2tZdTrJAGOoZOONYh?= =?us-ascii?Q?dbks4JO0kYiIK2Ke1z1LrQTJFkbHk27VOTHSO5F9J5MUqU6vQW92xnYKI/CW?= =?us-ascii?Q?7naRQdrRfOr/jJ3fSdhSl5rONcJ9cQS96CRLvx5lJb70Mf/0/0fLsIXwdlyx?= =?us-ascii?Q?WaKnaxwN+QlYIBG2qR5EOy77G9P/rwGVsfkSncmWNnQ10g1kWMMMdzNnMXvC?= =?us-ascii?Q?hi37pis/vWDcU44RXJNaYU5U2n3m0OumIri6IkNeraCZRZQq+lzkuxrtsgIt?= =?us-ascii?Q?XUJxPwmscKqI92J1n6rqXmt3//1HqN0WNjnIilUWvD3bZbkk4NGDViY6WpWb?= =?us-ascii?Q?GiU0c9KHMsnvbl8Lg7vf/ZK6C7wZcTsk4yGmfBewsR+d1lz2IqX9NIOpViIQ?= =?us-ascii?Q?G4V6gfXzSm0m/noOCSMS/UMuErKLa9vS/oqCQ4Dcjm1nTxg3VXqmpcdKW3NT?= =?us-ascii?Q?jo/HXQmUEAk7V8ZRotO8BkRlnOULLD9RNTn3Ivjt51J+JfZLX/sD3QJfSjFs?= =?us-ascii?Q?a9q1l9X+ZlcLtkziZrLmo1WfAjyo8JpUTzenmvmCfR/XlwXPKGweL6SEvFD6?= =?us-ascii?Q?1Q11Ihjk7V9NMUY2v0uny6ZIq4PemhBtBZrSHmAcAKW2Rm1vWbX4GeK3NAKp?= =?us-ascii?Q?rlDUHyylRCXAR6KE/x5BvbpierGgQhWIfqGYwekNMEiUNLZGHgYcfLOMEy+y?= =?us-ascii?Q?F2pO9wYdj0lPvsGZu+QQ9UFknfBTIsTsRza3t4hzwpqiFR+fMSDK8A1z4uqN?= =?us-ascii?Q?2LhiU1E12PFqDO5P01mgYccCAARu71emDdfm3rTfZjCnakot+0EgvVaje1XY?= =?us-ascii?Q?0Aofgok/DPAk8N3fbaFAjgzzer8RwPdk3g7oP52AZUQzggQXUo96rGOHgHJx?= =?us-ascii?Q?vm10rrp8kS5f2hxTV3fG4F5jkzDMZ+1pLo+UBLRbj1vNwGxOeRXU1nwu6Ajp?= =?us-ascii?Q?M2O4Ud5sCMlXyoLvvDl+OOqFVG4359x2e9aZRbqk/cabbBurPcDARMRNfROH?= =?us-ascii?Q?Tke6ObGNENjXTm3xYbzOnPYDVK+XcEqU2ilPaxs6BubApCyZq81lTIV3roVe?= =?us-ascii?Q?6JWbtGrqfggHobQF+LdnWa5jZaOiO7kBgRRqmNmZ56o955YWEe5MBta1vjex?= =?us-ascii?Q?Or2K4JdtaIwBhmCWvsmRtzTR7syLFFS+nnK8uPUQyFpBc/sHXIIQuUgJ2Sw4?= =?us-ascii?Q?HYMQ5n1zwstszc1K19BU8QInlxLrV0+Y7hMGb8KRrKArMmpFvqx91eWBenwU?= =?us-ascii?Q?xJ8HwRoxAbzAV23KIrk/azTSM1FHHwEu?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?DH5vHGpWVdwDkvDReOFQ7OaPMXzIgWjqdDX9UggqqcbaX/9IquHPRaHt15j7?= =?us-ascii?Q?4bn58Pbe1QcfTmTEYyp6s1LGUOyZTc75IqF4dk3o8CKvyQra2vH3DgzqdR4U?= =?us-ascii?Q?JC30/9wOeaG16QpPne4KZ2VdOAo92O17EmpW/7FNQsWCvlrX8QWItQcamdwa?= =?us-ascii?Q?2CCAoEwI2xWNYFmEkFCy2RXbNqtSDpzXx+6fpyE0agunHTikkk9ZxHwWke76?= =?us-ascii?Q?kC7O0v47f8YHWlxgVzrlplGIF62soRZqAMCPrIfm6DV4dEKllisHhanPr4QC?= =?us-ascii?Q?tjU7kNwuq9PvTpl2nzZ0zMtlEbxO7w8lhLZpbtwO3L7fm/+v6WSVnT8YBl1Y?= =?us-ascii?Q?qAUsGxUtjEn4/Xi/ka4cVSDKvkxBBnUw0Ij6UICI4IPvHiTZfOKx/Dzbp6of?= =?us-ascii?Q?E2H6SY/EKbm3Sz2g+iS1HiKmABRSBF+PJaGGSz64f+rpcV3IjKGGrqpTU+he?= =?us-ascii?Q?Geg8RdikGDtlXBCMCEmNGBLstIeL1+bIqoWq6yWmwKlA/vgKtxSjo7VbLJwm?= =?us-ascii?Q?nd3rwBf0jPgAOo7qt5rKdyqtRX99/TduQdjc7JPaFGKB7aTunQN+MHP5Tl47?= =?us-ascii?Q?gZVOI5s6Y17wyxiqd9Ixbmv3UROFnDBYZgE1oEi+TPpZ8s5WQPCHOQm+Wh5I?= =?us-ascii?Q?ZihD5GSIbjB5cgpqR26S++UaQJ39ZeaCHq5d3NkAlOmVIdSY3xvExV+acZIp?= =?us-ascii?Q?u86u8ju1CYR6d1irauY3bKSCaGCTrQqHuuyvtacqat2/kH3J3/CCeB1FJ+vJ?= =?us-ascii?Q?sWRkE+BfLZfY4kmEiIiK0vsaCU59ccVvO6LTtlAbO5ogA2ekjb+mFDkuHxHH?= =?us-ascii?Q?/ignRKZ668A6DKktUu7LEbFoplFkcjKGPCzXxIu8YdhmMPGRdfwRODA2lgSg?= =?us-ascii?Q?K2BYaXRC0HW4nOw26Kxo5Rf7Q6EVV/0pDsI+LFTmPrDGpLUmJGg9vmjwUAo9?= =?us-ascii?Q?DNqbvXv617Py3OO1q4GUt0UPWPlwjS9M66kIYN21k7dAZhxQToRNRNdh+6oP?= =?us-ascii?Q?lEFKIJQuBO4dnHqh1jmoTGJgeEBK048kRjb9fxkRm040wTtfUiGiG8AXUuiZ?= =?us-ascii?Q?sx2kMsV3NfQ6Ya6oymGYhvU3qOe/X9HoxO45D4SuwvQItlsGNl5OoMcHIP2D?= =?us-ascii?Q?Al4P/yq3u924McKOK1O5PMhShEyFACWbsI5+46WMLR4UuV660lv4cxMxSgRv?= =?us-ascii?Q?u7wn+Sb6BWVVFQhnJYx2boxvRmctTVckr7op8mJ+k0H4F20LJ2p/fxLg8/cO?= =?us-ascii?Q?FVB6ulTfclaznt/b837QlZRFFbexnaK6wAsgURGoFsm0a2EIOUfZMZviXLrs?= =?us-ascii?Q?YbFugRnFpl/x3MHpTK4iq05BAHARv1mgmJNgwc5zBe9FrlA2mnv+/aapsND+?= =?us-ascii?Q?BsqV9ZIDyNrRF8U9iWRVJfUlvx4i1XCcnRCrw/vdGdXzorEPq43RRhir6BK+?= =?us-ascii?Q?Chmt9qXb/0fdoJHnYz+S4Oywjpwvvn2tErq7GaHGKj7OZYFfSwzHQvWnX7uR?= =?us-ascii?Q?idogbNdyqdFt1aC6HTuAhkC1uW76NFU1i2UhMsR4o6FGvfHyjx4oqO/7NP32?= =?us-ascii?Q?1kxnxMLUQFwAlTg6Y3G0/YBGlhXI2DXBe9fKsHfcQijLAukK/T/lkUGLldop?= =?us-ascii?Q?6du6AL79wrZ00S8Vn1/EFoA=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 1cff626e-c1c2-4b3e-dd6e-08de120483b6 X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:33.3520 (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: oWodmzIjuyeTBAuINcQbVi4lmxB4TVXHm1420M2+sJuIWE0RMxhmlCIWHhmWPMERACL5L2BbChCxAc6mdxAfQw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7183 Content-Type: text/plain; charset="utf-8" The NTB API functions ntb_mw_set_trans() and ntb_mw_get_align() now support non-zero MW offsets. Update ntb_transport to make use of this capability by propagating the offset when setting up MW translations. Signed-off-by: Koichiro Den --- drivers/ntb/ntb_transport.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index 4bb1a64c1090..3f3bc991e667 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -877,13 +877,14 @@ static int ntb_set_mw(struct ntb_transport_ctx *nt, i= nt num_mw, size_t xlat_size, buff_size; resource_size_t xlat_align; resource_size_t xlat_align_size; + resource_size_t offset; int rc; =20 if (!size) return -EINVAL; =20 rc =3D ntb_mw_get_align(nt->ndev, PIDX, num_mw, &xlat_align, - &xlat_align_size, NULL, NULL); + &xlat_align_size, NULL, &offset); if (rc) return rc; =20 @@ -918,7 +919,7 @@ static int ntb_set_mw(struct ntb_transport_ctx *nt, int= num_mw, =20 /* Notify HW the memory location of the receive buffer */ rc =3D ntb_mw_set_trans(nt->ndev, PIDX, num_mw, mw->dma_addr, - mw->xlat_size, 0); + mw->xlat_size, offset); if (rc) { dev_err(&pdev->dev, "Unable to set mw%d translation", num_mw); ntb_free_mw(nt, num_mw); --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11011034.outbound.protection.outlook.com [40.107.74.34]) (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 EEEF52ECD11; Thu, 23 Oct 2025 07:19:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.34 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203981; cv=fail; b=MHxba9jjOa6D6O1i5mwkKQiLT6AENWNz5U7x36oQhiZvmE5aiByBlzBkO2ZKJ+kxdI+OqDqRRAZbLp+KpcQdsMi22mAF4QtzoLgi8C15FQYqg+M1JfeY5k1LQJFKoHK762Ksona0mkpMH7kz9RjNzdOQttoivK65oLcBzDiwp5k= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203981; c=relaxed/simple; bh=4Nsdu79aziDcJLE8+M0S3cgONT5qDqao1bUSVt0K1SU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=oY7sUxW7mIouxSKZjVNFOhy7PBrm3+xby/leZUQRXIeShgzugBtiKSYrr4nAM7qfQg99N2XJEuzAmOBGcWzrN0YY0k9FkRVsChzq8k4K26WOPtQ/QWV1qMCMWgXD/G35hF8TxtmObajmAUE9PggNOC23CwF+QKXXNEHlPp1hP0g= 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=F+rh+5iJ; arc=fail smtp.client-ip=40.107.74.34 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="F+rh+5iJ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=G13K60sgGFXYVDJVskGhEKiN5viXnkw5HGUBXAq/sDSFRhQi8ktaO/oOfszpPQEXamKCZlf4iQVI4Fd1pbKYVrzDP7xBeCfcBqxtoehfiTIdACcLVPnp5KhEymP/Q7/uB46ROqu5TfPk07OM8WLxuz4U0CuYgMs3HaF9CCzFUKKGA7cB+zHDWbncnb9iCjY095TaBiWC0+IgAUcIm+n/yaUsetRTeF13XvDU/F6TLd3SBWGWP+QOKtoazpLnNPZ6ZLm1OUnGSy0MSTITkGRxCxl3xI1IZ5DOuDkM72xkqLxH6Vm0SwkOOQhJ1+XKRgvaDVO9hrjHTCq7OX/pikuGiA== 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=Q9qA7+NI+VnmCR2N9NuCdGvwrWGoXLdq24Cu//UtkPI=; b=JBdDEPYKjQuL1t728wwg+kJuBXRohCMHMaY3D8o+LwvpYdGNywqlJvTuQq8yAgw4dhzzDo6TV9VGZstR0j4zgfZxVNl4RYCuEcNWeBX/P+8z8tTpXOHq4rPlu2o3ZqY1vAhqD7WkT2rduzFpjBVLewxVXdunpbF/1oOU1PPRS8jdxFH+aNs72+s5na9H8p4KI8PnWN4VXDZLgC2Ztkn83oIcvHqP8X8FIxHqsp+dDqK5bfYbkjMwnIxAjFCRgqnu7auDQKnHAWQn/Izc6NpTQcmiBuRg947rvtSRHk2YWgJR6e+8T8EY1Gm0IDOICsowSSwPdVn9hcYNbbBd4GjNiA== 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=Q9qA7+NI+VnmCR2N9NuCdGvwrWGoXLdq24Cu//UtkPI=; b=F+rh+5iJYM7vm5UHCkMaQ5VDLSlt8J7iKk6V4O4qXiJY9cl+OAiMoCpq5WCpwNH0675jZobS/EJKetoONglxOhg5YDhO9ZBUwVk1OUX9KEUdug4mljFwKqM/R0s7N6MZgOk4DUJt6A/00ers9S8NFn0dKkyUsjuTvo0vj+PSHFk= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by OS7P286MB7183.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:456::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:35 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:34 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 10/25] NTB/msi: Support offsetted partial memory window for MSI Date: Thu, 23 Oct 2025 16:19:01 +0900 Message-ID: <20251023071916.901355-11-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0290.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c8::7) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|OS7P286MB7183:EE_ X-MS-Office365-Filtering-Correlation-Id: 1e7c99c7-dde8-4feb-7633-08de120484ad X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?BJN1uctNrF/ZwFTCi2FcCaS75H6lessMNC0DEpb2lJzwTkOy4BZLX6Gc8tBb?= =?us-ascii?Q?+bXTOVpqY3XdQXcA/1Vt1no3WmC/gFAh5xbXmMG9qnEnZ/SK+9n4r9Bhh8UG?= =?us-ascii?Q?fTJK1lnw868zfLos88PtlKUUMox++F0qTcFCqvkEYssSBDigxJmD6P7bQz/F?= =?us-ascii?Q?Ee58p7egp0eIjMm71tWdl/q8TyHWa05htnZ/DaAviJnU+xyOfM5dnWo/3gVg?= =?us-ascii?Q?xnM++DgnBS6Et+XBdbqCaUU4jIZbaTUxDoI6n4whqaZnXYFmtcFPdoHyncjY?= =?us-ascii?Q?C3O8IU4NHxTlKban7VQ1vAdV8wMy7P99b5pj7k4moWaNI5ZtuBgz0r9PxCgH?= =?us-ascii?Q?HPNP3JqaGhB5zKLm3JiyNBXz+nvU5DJe4ROJSCxW1NBi4NCQTi7mva+8EyeQ?= =?us-ascii?Q?YC10sNS6Um8lbqjFQ5Lg/21WN4eAKoCC9BHPh+2k2TsXngsnwSG3wsXrHswT?= =?us-ascii?Q?jXvfzTunS6+v+LNypvKhXdwjpD947WScMtF/aZ4kl0D0yeyfI80jw/baLdaL?= =?us-ascii?Q?2d4vD83y2iR4gPr3blVXDfpAq4bX8qJKSPV9sYph/011Hz6gw4Kds2NWJZLC?= =?us-ascii?Q?CMGIZT4WWh5Cgst555FQm+Jb2RPpauXj9X0Es6rN5GfEXeors0LjV7erTMoA?= =?us-ascii?Q?S/TnP6ceREXKUsa4yWqIr//6Mcxwy1N0zjNYyP8xk7IxzXQgucYEAq8XemiC?= =?us-ascii?Q?Gz3QT89Tcw3PhJuiXfYaEXJy5kHbw3m9KUQx+qCs4SYSwfwNxNmffHGzxsAt?= =?us-ascii?Q?4NGOJBfsmHmfqPf+SLX2NAxPqHBunTSxQP7zu3wvQIVeek40lR+D7soHZCit?= =?us-ascii?Q?cUalB8hH17ubKRvel4IeF6CkdyVY3FG5BRqARdqJJBvtgjEKJbPSVGD0Hr3Q?= =?us-ascii?Q?ncSlx4kzIFC+I2X252JAXWb2f5zySbnuc5JTYC/F4+onEvG5PI+RE4hyIAMo?= =?us-ascii?Q?VC3Vw+ZO6c66yXNXygV0BfgILMStXopCcx1Hs2GIbDY41ah9oxVAvWtEYOiu?= =?us-ascii?Q?hIpbk1vWmF1u1n+XD3SSBMgLWTuk4z60KZOlK51HlIbH6nGIxG2Gc9ctOCpB?= =?us-ascii?Q?GZHMEBSNYqhSm2PxtLwjg8DSJ5PZPwsr8Ol9ngP8STO2pPJx/7nHDIbbj0CR?= =?us-ascii?Q?xuKx1u3CLL0BqSwy7kL2U7jyiMwVu6UNp5OhlCDHSkFuCe+CCjdc75h2S7WB?= =?us-ascii?Q?UcYPu0wURvVRoH9iSaWFCV1elLcki1feI6XEZDLOKoJfhpQcCm+V4YDuD8sX?= =?us-ascii?Q?GnLJYoE9KCt/fvI7phVt5km5KI0dhLxvX2UoEeIk5IP5g5BmUhsvZllLHueJ?= =?us-ascii?Q?xkhKutCRyyVik7WLsR9NrNCVZjXDpntsMzzOZ3pjkcY1hsj+c+Zd+otASM7z?= =?us-ascii?Q?ul9a1eaEeasGkEmSIiuCEbib0cRu8P2rDg+m+caKTExAWR0kD31w+Ht6zJEh?= =?us-ascii?Q?Wsk76fDjFz9N/ofsAAf53Km6l7qrtPZF?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?P7lBL9oGTG96Has6u5uXE2r7+q5E7d5WMDRq5M0NIzPlPGPdd1tEStzvM2a0?= =?us-ascii?Q?0SlXdrC7rVcWPvh8UEcBjNV4zRz9b0D8G4mg6E1SngtNXryobqX56eh5Oir+?= =?us-ascii?Q?ZygfQJxTrs+7/NvoYGdZ9+r7xLJ0V4TZRW48FP8bQu4zWy0baI3HKNA4EDQB?= =?us-ascii?Q?Q0NpLXFUVpi3QZPILivGxy4mt2R7E1mvdUt5NARap/qnYj/kMIGFEmFPNaPe?= =?us-ascii?Q?7yFVYb/1DozpSVSlD9uRqgKqT0OzoiT87xbePcAOo98PJEYyBZ7LvULF/Bsw?= =?us-ascii?Q?/7Sh9CIcqD8rlgXbHV93es/L8NKyIu6rbiQvTTStx4t5Ww9fLptCLi65ctNq?= =?us-ascii?Q?NSmHorHmfajxm/HAjqPoRFTQ3y5jkRoxD/Iqvkp1+OVHki6W0GEe5MT2TYyD?= =?us-ascii?Q?VZHKRrmoJtarHJ+Et1RUopsmpYqVmvPQ9GCOM6rj0RMXnbC/W6hlCLFLZsrQ?= =?us-ascii?Q?RJ8qIBNhD3rio7V96X0PZQe7dprGntNxsZcqiEIyqnTBG6OGIf7sJYsSZMPI?= =?us-ascii?Q?PrYTFy7OZWLg1IR3VjC9IIKyEqj/cqTLZmA/3g3gGbBDb+PHmsaPz6ePwtV3?= =?us-ascii?Q?aPCwQxcfB28T8ioevots3E47ODQqhHJw1ltdVhFtjECbTfNdn97r242yyUDb?= =?us-ascii?Q?I6lGpKaqX72R/yxD4byKSQKpPr5QP4mWlD7k84YyalkG2GnIAeFFhyrbqDHE?= =?us-ascii?Q?63ridJiDtav+GCdL8qexdU56L1ezfaxRa96KYMmtCGK9Lq93uppvImSx9jma?= =?us-ascii?Q?LDGXdrGvw1s+W7TQXXkofpFtrOAJ0y3qogDGlEyjhwYJ8R9nmXXxaup0NLmd?= =?us-ascii?Q?NVqrsZ8rv9rilxxyO9s1hgSvxvhLuF2Gej3AFYsMreIXwRVkoJ7Io2w9PMzu?= =?us-ascii?Q?DD2TCfcxjjLAXVTdbE4llUruYHoC8oeIzizJDEPSnCuQn0afQAzfLDCSXKDD?= =?us-ascii?Q?jqFSE1wrAKIJD92IHXK0xM9CDhG2g1Sdvfo2b6Puy2ron64ZPFXIXYVQg7R6?= =?us-ascii?Q?/sWavLtqqJHxFedKdK3w0BDBOHtsQ8mHhnw3uRaekkTdmHYAyrJOHCd1GGJo?= =?us-ascii?Q?LOOPY6D3H8MniXOLxjxAFuOrvPp1QVvzWAiNWqSLdpNlsQMd4bpUn9I/CmoS?= =?us-ascii?Q?ReO4wb97kyjKWcSgnWqgFxapgTtLhA4QYMiX7QH4NX9haNsMpiisOkieWQ8t?= =?us-ascii?Q?NSAZVBZuIAY1u5SKFw6mR2i/NaKgh68eefC/ov3YWxEsHlPjkyQkjH7eK3KX?= =?us-ascii?Q?/WsRMKYpJApUarKdKWPGkL0RLjyEuG+l6wPm8trrpLWuu/jT+lNHoJv9NLPP?= =?us-ascii?Q?Xd84xKr2Cmv8TAefaQzIpNCMlQpMEtqLuXSlPbRLuX8yrtReFImMcWOUSJyl?= =?us-ascii?Q?m/OJ1xKT0+b9mgnt+RCbSxH63sIzFQL5vXuJ+rfYoJw18oWmsb9c/TTN3nwK?= =?us-ascii?Q?Dp719QJrNzXCHs4WXVPhLks+zg3Y3rZTIjWMK1Xe5yGXlfccTscXUtf/ndYd?= =?us-ascii?Q?dzafVkmtO3fMUBkLcpXbOs23QfbjliI2+RYSVcqoL5jVennD6FN23UuIIUjI?= =?us-ascii?Q?qHbR16ItcXkVfwfr6SvtO7aVeoke2NrGSi6YHhB6hzRG4rUucbmJyXdhzclT?= =?us-ascii?Q?3D6QrjggXtlXcrYMdiCir8M=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 1e7c99c7-dde8-4feb-7633-08de120484ad X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:34.9393 (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: cQlaezzZo8xoAjAW/KbzaVRcxm7Kzf3Qo88CW4A8t0kxLiMXJKnHR0Pgp2DXYL8RQydgHL2DgaYAT7W3xfoR6w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7183 Content-Type: text/plain; charset="utf-8" The NTB API functions ntb_mw_set_trans() and ntb_mw_get_align() now support non-zero MW offsets. Update ntb/msi to make use of this capability by propagating the alignment offset when setting up a MW translation for MSI. Signed-off-by: Koichiro Den --- drivers/ntb/msi.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/ntb/msi.c b/drivers/ntb/msi.c index 8875bcbf2ea4..4dc134cf404f 100644 --- a/drivers/ntb/msi.c +++ b/drivers/ntb/msi.c @@ -97,7 +97,7 @@ int ntb_msi_setup_mws(struct ntb_dev *ntb) struct msi_desc *desc; u64 addr; int peer, peer_widx; - resource_size_t addr_align, size_align, size_max; + resource_size_t addr_align, size_align, size_max, offset; resource_size_t mw_size =3D SZ_32K; resource_size_t mw_min_size =3D mw_size; int i; @@ -132,7 +132,7 @@ int ntb_msi_setup_mws(struct ntb_dev *ntb) } =20 ret =3D ntb_mw_get_align(ntb, peer, peer_widx, NULL, - &size_align, &size_max, NULL); + &size_align, &size_max, &offset); if (ret) goto error_out; =20 @@ -142,7 +142,7 @@ int ntb_msi_setup_mws(struct ntb_dev *ntb) mw_min_size =3D mw_size; =20 ret =3D ntb_mw_set_trans(ntb, peer, peer_widx, - addr, mw_size, 0); + addr, mw_size, offset); if (ret) goto error_out; } --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11011034.outbound.protection.outlook.com [40.107.74.34]) (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 24CBE2F12D6; Thu, 23 Oct 2025 07:19:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.34 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203983; cv=fail; b=rTaSfRZdsf2RkKwGTfAl0eI7E9MCuuG1M0ErS6YE5/aoBX7QQhYAZg45in+lJI/jJYoVD044eLtsIIh3nMn1QHxQkMHFCvGpQaumnncXBXYuXZuItDACFYRti3lR2rzu4zjRi+jEuX4PvrJlRrBm52nz+E7kPB9TCmCY6GHiB+0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203983; c=relaxed/simple; bh=u8JsFWL5cBku2oub0iKfCjbfXYoOTYHXjbXtVdMKdX4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=a2CVJOWxU5/aZzYutLOECocmmPjqu5Ak0owbN/nppmYvH0kmV1cRB+qDcq2z9v+5fRkeZa1LTAVHGFRiOg1m+QKoVo0pBkM/gaAocMp8BleNjLvaVj7OrRSNfbJ7+OrSJauNDpyteqFru/d+sLUbyaBFDlTFUuijwBKsYuDnhCU= 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=taNX5cAj; arc=fail smtp.client-ip=40.107.74.34 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="taNX5cAj" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LlOcLfzVC02coVgdopTtnRQoiB7MpUvxh7yQhN5vEq29QV+h/Xyw7WQflBltS/OrmlTBlcXRUuNBUk8VDi979fo1N3tALkNvATreVP0CLymtRnX207aGBnUo0p0x2JsNJ/fOmIdJ+DpyEDLrLi5tdXJhbH2/HrxLlmBXJZQHI2lf8kSkK2lVpf++9sSiE6MsENt7d9bRA5zSAC+YSbTbYTSPLxSfSN77r130XF0Ga8CceiTgZh8ZSg2xZUobrcXMJxoxAnhjr5tCbtefZzavWOTtQVlTTAtp0y6MEZgwC5MuJuQqU5201PXtKVx3xAzp4ngEJ5vWR7twzdC0iqMYkQ== 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=/EtLT+x/P+lGngOmnadz0o992b2+4nOgjuT6L6qvVL4=; b=Es5Xist7Or4lpWRX6oBimCrevqIkcUUIk0U6EsJB7dRB0dCTYy26TLXHF/3/oQWMb1EAiS3aYUj4/G6Uoo1DpnIrNKlPaFoXFVyTc6UD6Am5zfiIfJgQWDX/95r+/i0nSnPhntF4OnVUicy8PpwwIOQP2LBG+mtHKYEjpHl5y1tvdpA6K/gEsYYdzNls5S+h5k1N3xiLNNtVCCOrJBWbf+0RuLoY9kGzOlonjslxIyHOxLXorTacz0zCX9c8FJIJzjMiJUBgpS+s5gJ6NhgIXwTrNaG4iZhJDjoHNsT3yF+IoJYYQTfW8cXwbOv590h4/3FmCIx7TaZ/wdvkIbHECg== 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=/EtLT+x/P+lGngOmnadz0o992b2+4nOgjuT6L6qvVL4=; b=taNX5cAjPWsT0et5PrngaxuUAa/zztDJ23IpnWvAsj5W67qLyN5kjk08lo98nHBIki97O1obgcYQDQ0U4fxm1kC4b3wKA4zO8d9re0se68f7m7WgBEAJYKuG7IMz+UFpiC0coj3cCqigfKjRSgWqrmX4pxUOJ94mYJfTud8g2os= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by OS7P286MB7183.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:456::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:36 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:36 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 11/25] NTB/msi: Do not force MW to its maximum possible size Date: Thu, 23 Oct 2025 16:19:02 +0900 Message-ID: <20251023071916.901355-12-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P286CA0024.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:2b0::8) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|OS7P286MB7183:EE_ X-MS-Office365-Filtering-Correlation-Id: 1e1fb67c-882c-454c-2422-08de1204855f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?jYvPPemefKRfx12ZUuY0G0dvY5d/rqBKPUuzgxmb/y0rC74IeOwZ3c1YOe1S?= =?us-ascii?Q?gKP89xS5ursZlPI7vS5LOl8YDPP+EUmgc2zZdDMvRd7q0hdxHjdoC2SL4bi6?= =?us-ascii?Q?awm92tNusbkTMrSBcLAsATLIQTfpTEybI5howzizSvZrIEp2MmwgoFWtNXqR?= =?us-ascii?Q?XknEjxxgwLsrnAFJKPuejNCbDC0dwSdjB4FI67XHNg5geAXGhHMBtOrnnL5n?= =?us-ascii?Q?f+OO/DigWiwRmPI3GG0RAJFm26ajI5gtbviKA8DZeHoATUoPj7J/OOtHzsbM?= =?us-ascii?Q?lpXVUrH/21SlSooYthTBHWonAfGJQl5TvWgvhbUpUYtVVzDWbAtSUucYk7au?= =?us-ascii?Q?Rdq0/XXu2TsgF9tg3syRfDUrRywh7QWCodaYDsarHEd2L52XXG8Bv33vCQWx?= =?us-ascii?Q?eRQXZn/T/DFlRu+zRN1My1DC1SvH3AfQqBtkZsC4cxaBQiK4/CwSjDNVRK6r?= =?us-ascii?Q?PO6VMvd3qXkwCFYR8ynmMDNA6PcbtJKCjhK/SGiU06d0yE5Q7FqsuZcO3T/e?= =?us-ascii?Q?e2ZztkD5QhgUpI9orYmxur+7a9Bgu0fyEKacs+YSvVpLou+2RkGHxd88Uded?= =?us-ascii?Q?tIfjJ1P+zhV0cykcfcG5Enkh4p0CUalbtp8oHLyMqyXqGfmkNjzxvnw6Mdvw?= =?us-ascii?Q?8iOk4KOGeFMdr9l3rV2vDzEmHo9Jilk+8PZvTCwyhcDt1xnxQogUC8MqwG8e?= =?us-ascii?Q?/22uKHhBYg/0rruHGEPVpsTq9MXNiOrw3oE3FbLOWtVyI0T9O/vkeoHJmEik?= =?us-ascii?Q?CjVBfS0pBYAJvmXjxO7Z416v9URh3y7NIR3YW4urt7g9nHPEGzKe2Vlern7r?= =?us-ascii?Q?+TpZuHW30yq5s01rXBT/kEAz8Rc8WCCIMrLgmJxJaaZF22bzzsi7+b742vnE?= =?us-ascii?Q?NpKbDBNQn6smd6Jg6oHlmJDcRovBHQ9XP3ULD50lrshFnPJTE25TOEceUjJZ?= =?us-ascii?Q?T8xOyC4nAFsuNKslqRjwrUOjEMddmnjjB3kM7FtEkUzCRFvXRuxlBPYbety0?= =?us-ascii?Q?npH3ARqsRm5ur70zyaazJce+btn/x3bzqo4EPUdxhdE8utxYwiOabMqj4fE/?= =?us-ascii?Q?zhuJEY7MG5gqOokf+n1CmH15cuux0NbWL22rpGvoDN1l21gWOrpsYrfhIGeA?= =?us-ascii?Q?UhtnGPTbw2fjkjulxGbKXhQ8y4KnFOShZZHVJvODqhheDEuo/zl+8ljaVn+S?= =?us-ascii?Q?9gja5HJCmASnhBXPrt/uDnyHNZKv5RhPw+Z4fK5cyuMFzAVTtE14C5XYzYSb?= =?us-ascii?Q?jHpr8zY5khn3nm+TR93OGbtWoJWLWVCiXLQpbrCoQcKW/TyUm+Las7EnJ2EQ?= =?us-ascii?Q?9MlP7sIbPSQDNfA0irEB7NS5BbhEfe121MlgHEsbfbFe/f2aqDqeXrp/4RrY?= =?us-ascii?Q?MhNofQ5KpSN8YOAqlxoGtNHuj8Dh9vRHcB+ksYHVgAaAFWxOdxDkyFAmoybv?= =?us-ascii?Q?+kP7yoamsk2BAuLn1XHJfWHCq+gKwvIN?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Oqt+GIuo1iXRSmh+2Qd8MmbIXK3JO+F6lEoKiJcRF7xwqrlxsbg+tAntMxja?= =?us-ascii?Q?cJpsA+PKPBjUWxzxQppyggJAgHnk9FjU2rDOSgLU3AojunpOFnm2OO8sv5LM?= =?us-ascii?Q?wrZS7MmmN3o48sOmrtSxKDVL94YaIR/7w1XGITX4fWIIjcbx+0LzRxW4locv?= =?us-ascii?Q?j0blprLD+MHjobRwIhSwM2J/WXs86tXcbJFxvfxE37402YI+ppY9Ym9lfXze?= =?us-ascii?Q?jL2tCma6nWP0PhM1rr4wheiXD0O87FQyVCtnJIUI7QoTGlOwZEwUsGiWUwfy?= =?us-ascii?Q?htqxrG6tDAeK2IniUCvhBI5izq1+Epd5JEOA32iWXJA5FUrAPwvDpW/E/J2D?= =?us-ascii?Q?i6mxzCYsGTj6NlWzpJ1jjTFheZ3gQa8AAkNk/V1K+9wUlgm1K9UIoOX7NOiC?= =?us-ascii?Q?ipnCc+Z+nSd3eVgjztBZdcoJJHZLspWC/CILd1vv4fXZho61nI4uY9a1jsWP?= =?us-ascii?Q?/AChNMLiJVdmzUAzPpyrWoBBJ6iDFDBQ4jRyBWg8oCCUuS/+3Vil0mlD6V1Y?= =?us-ascii?Q?7TUlgDNjTybx6qAdDe7eXWEICNlTQ0ZcJ2BZMx90mm/7u7KAe79MRNO50aWE?= =?us-ascii?Q?1/2/ABEAmROgswHLWH2qBapvw3VLyYmpDJxEzQcx9ttEAQqXkThR4nW2af/E?= =?us-ascii?Q?EhTbZkgeg7e7GeC4+RxvnbVipfJITyhJZBJIYNyjUGMk8NxlwgrJLYQa3y7P?= =?us-ascii?Q?hGexnbVoVruPTq8rUwwtT8zsdj/k3yn1hbqjl+6vAre/Q6eDMBIrdG8cTT4Z?= =?us-ascii?Q?hniCQJhUIozh8o9MGdU5FwDVyvlasHOjhT4h/7f7OI2aWlv59cVGZ2+gUAnZ?= =?us-ascii?Q?tKILIUDVfxIuk29v4MoSGydsVWtS91JeNCe0xwQFvXMmkg9YYnPiiFYT3GSZ?= =?us-ascii?Q?eDL9SC6jwXqHLyGmPTjV33Bs6SLnQJYz7Z7POmnEJxQq7BXyK+ixiQcKQ8+L?= =?us-ascii?Q?OX+JF/C1sm9kG7+2eDM1ifarLh6sdD2KKvrnJaIGdAas1JITBBb7AdMV28N4?= =?us-ascii?Q?lXe01qzh5DAygTtRBCDLsKmNehB9oEWye/PP/Zdk8tZxwDrl+SL4G/8hVO7X?= =?us-ascii?Q?Z39wJksT72oKf4zl7x2ams92FTV9ih2GAfUO//X/B+zo6gt94l00lco+FTbO?= =?us-ascii?Q?e+L7n5vQmJJVsDT4UKPzz0BvtcX105ijOf5BkiZPr3qdry5S56wnIR75Egp+?= =?us-ascii?Q?kfFMcnbdX2+yINRikjnRJLBT/4hJSe1mr+HL0STn7x3La6pV0DWg5182Ykkk?= =?us-ascii?Q?crpEnCM3Adtwa5tVBY6AWBguqqpWV+zDfXCVAilXt53kGmaVWAjbM/nq9bwk?= =?us-ascii?Q?jFJbgFYwj/QVArZwh3CDo7ERkfb4O+zIVR8G0y+y2twerq2pHJ2IJRL2jOTR?= =?us-ascii?Q?NAjuLLZA0dQR6eDhiy4lN4nRwHDeUCxyifXanNo4/MdWpg22G1bnsvc3rmtT?= =?us-ascii?Q?oLTbP4n2SgT7yJ+SrG7RYG3g7xxr1a44WRm9GRb0eD7BTcnve7u0dH/EFzdC?= =?us-ascii?Q?3hFbnTyTwBubv5Ay+M6iOx4uyPkXjGxhLAU1ONpsTRouFsj6XEuge4DMEzMw?= =?us-ascii?Q?JHNbLxnZDPJCDewBcOA3TZ8+cRIeDBu8WvfVP+2Gq8S5AmBpMofkLj7CF7TO?= =?us-ascii?Q?E8f/9EWvu41WCuKvaH8fhMA=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 1e1fb67c-882c-454c-2422-08de1204855f X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:36.1128 (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: 3zQ+b1AL8AkJ7RHUt6J/Iisc8n9ByTqg5sfdZ83LjGA+8rk13niy48s7bU4HkGgGUG1FlhUUMrdivqH44y203g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7183 Content-Type: text/plain; charset="utf-8" As partial BAR usage is now supported, stop rounding memory windows up to the maximum possible size. Signed-off-by: Koichiro Den --- drivers/ntb/msi.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/ntb/msi.c b/drivers/ntb/msi.c index 4dc134cf404f..00218cfa6fd5 100644 --- a/drivers/ntb/msi.c +++ b/drivers/ntb/msi.c @@ -97,7 +97,7 @@ int ntb_msi_setup_mws(struct ntb_dev *ntb) struct msi_desc *desc; u64 addr; int peer, peer_widx; - resource_size_t addr_align, size_align, size_max, offset; + resource_size_t addr_align, size_align, offset; resource_size_t mw_size =3D SZ_32K; resource_size_t mw_min_size =3D mw_size; int i; @@ -132,12 +132,11 @@ int ntb_msi_setup_mws(struct ntb_dev *ntb) } =20 ret =3D ntb_mw_get_align(ntb, peer, peer_widx, NULL, - &size_align, &size_max, &offset); + &size_align, NULL, &offset); if (ret) goto error_out; =20 mw_size =3D round_up(mw_size, size_align); - mw_size =3D max(mw_size, size_max); if (mw_size < mw_min_size) mw_min_size =3D mw_size; =20 --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11011034.outbound.protection.outlook.com [40.107.74.34]) (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 1AF3D2F39BE; Thu, 23 Oct 2025 07:19:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.34 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203985; cv=fail; b=aWcwncZhPKo6HMfXyIpL2EzsX+8m052htfMSs+4/jT0vFRhF2sPPXrJNtMvS+Oh2ihy2Gm9v385lP0XxODieJJzwojOhfp817ULeABhvQtI6S3zOQHvOos44oEIv+k93tI4DoFm2jzlpTb4HV4SOM2rtcS2ShkEma80QkwQ4WEs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203985; c=relaxed/simple; bh=/IoB0AkrbcDupR/q5PJoYcwbGmUiJ0mVeKxosiYXDLg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Fe3wMWn6zhBWQ8Lk2EPTh5dnCR3VlECQKg4iEpDpq8EE/Hb5hJE4C50YWaK2TF6uoHwB/XoOuJ4u2xBdaS2QvKoNzHsz2xJoMysYe6CHH2Q+c4Riw1P1f+16dF4Xg9P+wHpmbVvdYZ38E9ZHXunNo4jLkjznVMinIjnTKMkevDo= 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=FqjXv3vW; arc=fail smtp.client-ip=40.107.74.34 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="FqjXv3vW" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IVQzsNfDUkrrD5udJN0nKrRq9M8vdC8wd5RMeBIBU2U7y4cYRce+/taIqzbD41HDmZ9qniSgEAv7Vetcq4J6nyaV7AxgjP9SYELB316z5dzETcbDWzLyr2ngk5Dr6AsVULwGXyF0OjnOlZG/Kypc7kalZ8s10/sF2DEdKpG+1vJ41GvpqMpbdEUycU1JEXTWQllAt39rne0uBTMb82EVEYJ5PiIknDflxBbD31reyS6KRwqGUTRALrynRUwQavPoLll+vpf4SCxHhbkQ6zHxtq7dI0j8czCqUJwrln7VV359n5dYSmtEFm5YDk0IqOrEiy2rPnxYBvAXVvSTOZVO6A== 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=LDgi9m8MlEOrHXRPmxzUoGNgDV3BqJrwMznVUN70AvU=; b=DjR4jg8KK499+qVIZaoZ3LPvSzS6kV+shtrJ1ddXnmfelR9z4REh6PZbWbied6aCDtVR225/KklyRucg0XexMckkTmUaRjxl4Aulhilz6MPq1uCimn+jJIhWfm1JwxvFFGJS/U8lMz1CvZ5FqiPtKevsHgRuW4FFftRLkKWk9var7jLM+BmZcMmwmIv6SU/SwBxYieKJzxGmuAn3SzcFyQGwk8BEzwTuNGL4C+MGnMnG5xY/hYqbgCfkE18DQ0F6+mU4aWC6MkO67GViO2IXJcUY2TMwOeE04ThMHiGJSds2yZBDfuORR3RkjJhzw3w2JesQqeyrer7HB6VvCBz0eg== 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=LDgi9m8MlEOrHXRPmxzUoGNgDV3BqJrwMznVUN70AvU=; b=FqjXv3vWbI5ulDONIZ/D7AhzOmzOvlCEsXBS046GfIOkn4yvlMY/Q4uEnLe2wYB+XeSBfvl2mm6o5PjcVhy9cKickIRBA+N5HLjmcDqfLhec7KxoXmIavlJ7M9R6FSjzcyThbSIkdwNg0eLjnNv1NlPed/9b+P7HDxkia8PY/C8= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by OS7P286MB7183.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:456::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:37 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:37 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 12/25] NTB: ntb_transport: Stricter checks for peer-reported interrupt values Date: Thu, 23 Oct 2025 16:19:03 +0900 Message-ID: <20251023071916.901355-13-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP301CA0039.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:380::16) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|OS7P286MB7183:EE_ X-MS-Office365-Filtering-Correlation-Id: 6f411ce6-5921-49f3-7bf1-08de12048623 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?XfpEBFZPmTjWp33E8bn1THbK71Xz3DBcL6hTJWGUbwjbGMDHOrh9YIL3mTVW?= =?us-ascii?Q?Yb5NBPAQOzRoE7+4lTn+deAnd9juSRHm56/3UwZvq1JmrbJ0/Gq0yIUxCuEO?= =?us-ascii?Q?5TgYslvBkSS4bC7BZd2h4g9Wmk2UL9tSTGzJ3FzIzQ/wKy6Of+B2jCQ4ZThi?= =?us-ascii?Q?5XkN6aluH1rCXiKncIxJ4UMZF3CyrbhxhLz1gDs8HaKizYDFQ+WtOw9M1Cri?= =?us-ascii?Q?QvfSbjp3MZxgC2pUg3Xm6WBw/zRYU6FMmGNKbCD986aFYQ720nD9QtpU/lQG?= =?us-ascii?Q?pbfUrX1Fe1w7RGe4wCpMRFPtVCTf4Tg7pFli4PjzjUsIKBICA1QG9NSm2tWx?= =?us-ascii?Q?cdc49UHAZ35lgWGtMzojDn1ygmnIQOYsQPJ894SZqvKY8aae36zyKhszFqky?= =?us-ascii?Q?G9iSxG7cf3BeJDziLFCKnMgUUvSwVEa8eg32UiGzz3mxBleZ5bWKsBxMBqvj?= =?us-ascii?Q?m9+DTi3ae2T1BkT3pk28z7qcVAdunFPKkB1xtmWivEBjXfb3YO+ty/+nzuEJ?= =?us-ascii?Q?LudshQT93kAliJ4y/CrUVN3OFW3IrhuyfHgRvDtkDI/3q9uBOb01EyC8slAY?= =?us-ascii?Q?mGp9B8uumjysADrfGZHubx2sLBWtIWi7u5/VX7RuXx0ahhbX47sF5Z98FC9h?= =?us-ascii?Q?CYuBPO/WFYq571JcOg1Lv8gFqktYpWCFKq1uvix+tog1VC5YxfwQe9AJcnVD?= =?us-ascii?Q?kzCajK6FGRQVu2cy+j1Ai8I2mQf80a/pQv0zybUXbYMKgQ30IG3DTtT/9HE/?= =?us-ascii?Q?9l/HnmDpzLXTcm1jbZdWsJLix90kBTbEACPdJ/NjOASdzdaIy97porfJO5RV?= =?us-ascii?Q?62XTjBiwCB2HfHZacDcbdh07A1Sg8d/XMaF5EwcwWSV3rDgJbsUxSyW90TqH?= =?us-ascii?Q?NL3QtyAVH51cBt9tUKACTz5vdNIJhqipWZ8n1O1wK0OZWUXz066tbotMLN0Q?= =?us-ascii?Q?ux6TBO+Iwjih/h54FaISV/PUI6E7vZcjfimCigekJer9/i9TEntTJ9rkSLga?= =?us-ascii?Q?/rv3iNRZgVEM4lnqJvHTHyPRIa5OE0CxbSqFuWMs3pBlDlS9jBbxt3s++suT?= =?us-ascii?Q?UGfDkzweqvFXEi/pV6r7GByIvgu2W2tZivvNaPeQBbCNiYsPlm7WSlj8GpvK?= =?us-ascii?Q?2u4UNxzGGxzpOboooAMfj/2yKs2gTzv6fV34bhMlWWwZ7+NMd1OYHPN42E8Y?= =?us-ascii?Q?No9HXs9YS5DUmb8tA23S3jXrBaJTeRy33jP6t1WdhaA3IKkp5BS1wod7GaEH?= =?us-ascii?Q?D9W6a0M0RNnd5dK10qtwwDT/l3PQAErs7V604DU147vaaDMP75VCpxNFPi1V?= =?us-ascii?Q?2T4AG3DeR8tZD9pLr7rOTXwD8YNNSXtVz1za4xG0+DDV/NS07kfABcmyZNag?= =?us-ascii?Q?hEs85gXfQsyyq9bcrlgkn6bJitkMPJ6rIssMMY0dB0eaeHiSEDjEhG2kG/Lk?= =?us-ascii?Q?/fz6E5Y6tBtWDhZdfzUPcKvsQsXN7UeF?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?9vQKmRhpNq1J/2WFNyLWGA9TgYRRdUC51VfCgEoaIXyuyQCGqlj0WYoxI+nI?= =?us-ascii?Q?ieKqwRCbivvybo1b3NICIe1KBfdsoIsXZRuObYH0a2PVyO7JvtwVYTn1Fy2L?= =?us-ascii?Q?yZSjeLPhOH9bKigqw7tEoJ6MnLvNcpfJRkMAKPjwaTuSSVGRHE/hPfyjCxmE?= =?us-ascii?Q?T4Eg7K0/vOu7HsihGrg7dMmpPEbfeyqLbEGE+oBut9iRsM7gC7AHX7bC+1aD?= =?us-ascii?Q?MGuwzLeM0eejy+eWiq5qVUUbmjPBjPkAu0wKSrWvQ+G7JAY7XvuNIy3aruT5?= =?us-ascii?Q?1y4fzAi1r9uhMq/YmtLW3t+/V0UkC9U1G69+PqXBqAf18TqDqF5ZF2qlzxiW?= =?us-ascii?Q?LxHfKRDGJmoPNy3bk9/Fj4a8XqC+39OUHeT9shhTg4nfsQ3w6aRkdDMalznp?= =?us-ascii?Q?xCLCgZ/InW/m/+7PdzMGf5iJ54rabAmmB4nHkkkpwqhjIEyvNRR3yNO0gIZS?= =?us-ascii?Q?bOfZtFuf7HCs9h9XS9wUzfL2LBOSPywDuvIwyJP983nR4ok6vY9OXooo2K7n?= =?us-ascii?Q?fcuZIx7sJ4LDXBOUFEy8Cbnj2dcng030nZJgELh4AB+XqznJC3EhnaxdbSU4?= =?us-ascii?Q?9TRH4QmWoUAX5Zv6WtX70h7Cs1zaEnCYxWIzE2MaaRP8Nd951vTNUV7+nUut?= =?us-ascii?Q?jWYNn/PADWMzWxppdy1TaGolRE1bdKKx0zvL11SDoCHK9Ok2Qjmb05GSD8Aa?= =?us-ascii?Q?fLW/ZhrHJut7PkNOlceLuFsR7ineoZEtrboh4LvIGiM6y0Ll4imYnNiOSeY6?= =?us-ascii?Q?9gOUNUoMagaaTpCEXpe//kfphMBucNa7Iok/gwMDRL0NtfXziCIg8rcZ4qBg?= =?us-ascii?Q?sB/GR1JPaFuJZj7CoWylXyBCFL82yK8l2GXnSVgRNZdv2iWjWl20IUPQqXAW?= =?us-ascii?Q?V3DzYkxN2LbFRRDX1rGz4BpRwBSIbBxmGAezBplhMOp8i7AuXwH5n1T1zoiH?= =?us-ascii?Q?0CrUWN4QEvWqVxfh9kchWRtcfR/5IhKNMjDz7rAVLxeWL/25hAHj8zOVSJF+?= =?us-ascii?Q?ktz8NfuqFEhYFj/HUZM538mdsDCLpsp6XsQ66JMsoM6RI7KI7kxnDpxlybx8?= =?us-ascii?Q?e0hCTtxVQX0g950iPchCpzc1Vf3NXR19/dmJqUBxF37KArmCoVURPJsN+2tE?= =?us-ascii?Q?fVdM+OyzQbU+BWVO1JH/vSI2pLNQnCMjGh4MyWbFuQHdtU9oWVZ9ocfYaJSR?= =?us-ascii?Q?aAZU4duL5z69flF4FALENgNyHkrvrB8qSDt8ntxMuVNwDVp5Y3AaUuA9kNLW?= =?us-ascii?Q?3wx05pFlD3WhA/UZJ+oKomhZJBN2UaMhcbVyMCZNOF/bXK/PJfMfq7yqmaUt?= =?us-ascii?Q?34InZb0msx/YEQ8aoIqYvwslr8fRojK5QIyZw+32IJ4fgi64Z9asGn/faw6J?= =?us-ascii?Q?dHk01qmorlHcjIBVRT6Qa+IPX7SMZvAiKW2WqY81L6s3OMDVFpnBLT+942Qr?= =?us-ascii?Q?w9m2CVevw9Ghl4TXt1oF6+hC/KEWCulNaiBlj93L4Uht4t9eXk9Y0v8RB2cF?= =?us-ascii?Q?+4fKIdJzNQuC9CH9KxduXcRgoNpmE7ERUiNQYDSXXkcjU7+ysHt/rcdfPIuf?= =?us-ascii?Q?WCUq8yjXaJyg6bNG+mlE3RNom0qXA3Alj2508QvNtI4epiGB7lbk3Ov0ZOvY?= =?us-ascii?Q?QF5cJcBUwHDzLm4RZ5AuiBE=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 6f411ce6-5921-49f3-7bf1-08de12048623 X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:37.4463 (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: waHRlj1FGf6rEotaGS02LBJM/ZAzGwkTdsZKrLqbVKAqJ7g5gyBa6k9FKtVPJUTOHebn/crzVL17R8lV4nxmXg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7183 Content-Type: text/plain; charset="utf-8" addr_offset and/or data may legitimately be zero, depending on alignment constraints. Introduce more clearly invalid default values and strengthen validation of peer-reported ones to prevent false rejections. Signed-off-by: Koichiro Den --- drivers/ntb/ntb_transport.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index 3f3bc991e667..d9fc450ef497 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -69,6 +69,9 @@ #define NTB_TRANSPORT_DESC "Software Queue-Pair Transport over NTB" #define NTB_TRANSPORT_MIN_SPADS (MW0_SZ_HIGH + 2) =20 +#define INTR_INVALID_ADDR_OFFSET U32_MAX +#define INTR_INVALID_DATA U32_MAX + MODULE_DESCRIPTION(NTB_TRANSPORT_DESC); MODULE_VERSION(NTB_TRANSPORT_VER); MODULE_LICENSE("Dual BSD/GPL"); @@ -715,7 +718,11 @@ static void ntb_transport_setup_qp_peer_msi(struct ntb= _transport_ctx *nt, dev_dbg(&qp->ndev->pdev->dev, "QP%d Peer MSI addr=3D%x data=3D%x\n", qp_num, qp->peer_msi_desc.addr_offset, qp->peer_msi_desc.data); =20 - if (qp->peer_msi_desc.addr_offset) { + if (qp->peer_msi_desc.addr_offset =3D=3D INTR_INVALID_ADDR_OFFSET || + qp->peer_msi_desc.data =3D=3D INTR_INVALID_DATA) + dev_info(&qp->ndev->pdev->dev, + "Invalid addr_offset or data, falling back to doorbell\n"); + else { qp->use_msi =3D true; dev_info(&qp->ndev->pdev->dev, "Using MSI interrupts for QP%d\n", qp_num); @@ -723,12 +730,18 @@ static void ntb_transport_setup_qp_peer_msi(struct nt= b_transport_ctx *nt, } =20 static void ntb_transport_setup_qp_msi(struct ntb_transport_ctx *nt, - unsigned int qp_num) + unsigned int qp_num, bool changed) { struct ntb_transport_qp *qp =3D &nt->qp_vec[qp_num]; int spad =3D qp_num * 2 + nt->msi_spad_offset; int rc; =20 + if (!changed && qp->msi_irq) + return; + + ntb_spad_write(qp->ndev, spad, INTR_INVALID_ADDR_OFFSET); + ntb_spad_write(qp->ndev, spad + 1, INTR_INVALID_DATA); + if (!nt->use_msi) return; =20 @@ -738,9 +751,6 @@ static void ntb_transport_setup_qp_msi(struct ntb_trans= port_ctx *nt, return; } =20 - ntb_spad_write(qp->ndev, spad, 0); - ntb_spad_write(qp->ndev, spad + 1, 0); - if (!qp->msi_irq) { qp->msi_irq =3D ntbm_msi_request_irq(qp->ndev, ntb_transport_isr, KBUILD_MODNAME, qp, @@ -789,7 +799,7 @@ static void ntb_transport_msi_desc_changed(void *data) dev_dbg(&nt->ndev->pdev->dev, "MSI descriptors changed"); =20 for (i =3D 0; i < nt->qp_count; i++) - ntb_transport_setup_qp_msi(nt, i); + ntb_transport_setup_qp_msi(nt, i, true); =20 ntb_peer_db_set(nt->ndev, nt->msi_db_mask); } @@ -1068,7 +1078,7 @@ static void ntb_transport_link_work(struct work_struc= t *work) } =20 for (i =3D 0; i < nt->qp_count; i++) - ntb_transport_setup_qp_msi(nt, i); + ntb_transport_setup_qp_msi(nt, i, false); =20 for (i =3D 0; i < nt->mw_count; i++) { size =3D nt->mw_vec[i].phys_size; --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11011034.outbound.protection.outlook.com [40.107.74.34]) (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 3062D2F533B; Thu, 23 Oct 2025 07:19:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.34 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203988; cv=fail; b=FNu+xMb5RcUdlEgu1fJsrJpgn16ye6PHPjxaCwZ4iHp0fPQRMyoFCpBTzaA59RBhtMG2q9gWJB6n98Tgyxo4z9NULS5zjc4R041Oic2npcfuXQxU2u2m7d8fEOli2xdoPLMta7HkJvHYvqM5uQR+E8dL0UA3qWEj7EYgRrFLU3I= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203988; c=relaxed/simple; bh=IwRJSYYCHW+arUQH+jgv5LVyDlTzgEkG2OXMy0RUcvw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ZUKi4tSrvoKZ3LidvFKNNmx9OZ2/EelUJ5hofGyz78qju5PVh1JyX6GZuIbv3HOretAH6VDE1vJnAFrL7PXlU2SUKY+3lnS+ax5JKdbrWnLVLuVefdGNVthPcpulVZcXh/YwhytZCRHremOI/c7fKcc1OznUO93ipI3MQiCCRzI= 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=SkAyX/O3; arc=fail smtp.client-ip=40.107.74.34 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="SkAyX/O3" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ovFz1bUGrrF1GW3ENh+APac+lXYv8+N/BEz01vonvgMOFl6IEka6/kfAp8N2NQd/oeeEZzDZejN2w2Uy6zvuIS7Vi0tkd6cSDcLu0cp/A1rxiPNa2s66u2yssfT2NzeVM2H7gUnqqg07gqBMQPlapdxo2umxMiEaT4r7Ld7gBcOCZlNYMx4TybWaG03gcexoFusaHE6jS18fAUd6Xk+19cPrCgw7StHDSh9BDofjCjQuSfO4GRSFtJjC+Y0nAHF7TcBMf4cmHqEJl+iIYY+d5O/PXUR3cz1Fd9iY1GatRj0FoN68o/HyAsVGbc36uqi/Asdv3kw+IwLnskuUHl2fXg== 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=2eKKf4PLN2NGNo+q5U3GhgohlVVgb0YtLRcj+yQL+BY=; b=i0MRwbCa+WeNJ7vsnrIuR8z2M9BIysHHxwxBGIK+73h/G98735Qk/uShRTFb33cDz0njpGnLjJj9FzUbd7UIxOp/61fmNtoixz/jaTb+7G9eCeFdswwPAcY5Ze7Ki+IrZ8uCKHKe2HFs+ao5LWgGJYcN1IwzXZ3HaMj4+Kh91xBbh+2Iz4mNfy9QpndmAWiPqDK1H324AADe1fqKmzcnC/fJZjcsW90PnzF6kVtiP+HzFxkc3+Zi5PXc16vEcwr2oxECcMZafg0x4yPhKwG+mFnXJMv3wQ7UlPArkAAkrv/70bwnRol+zN+xqmjIhqDJA2JWO4raQXxXzlSmceGCWA== 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=2eKKf4PLN2NGNo+q5U3GhgohlVVgb0YtLRcj+yQL+BY=; b=SkAyX/O3c0Di6gfTCxg0TJFLUtHSooIwuS3DWMQc4hkp1spKvKWh/GiksAA4h7znXX1IcV0074YeWpCK28lUhi105/yB7RXAPLt+8kyaLh+9lfJXxQyfxciH1c9gsqfPiO44G5E4sL6PccGo4SHxY7/jr53YZoaeEUI4yptwJQs= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by OS7P286MB7183.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:456::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:38 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:38 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 13/25] NTB/msi: Skip mw_set_trans() if already configured Date: Thu, 23 Oct 2025 16:19:04 +0900 Message-ID: <20251023071916.901355-14-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYWPR01CA0022.jpnprd01.prod.outlook.com (2603:1096:400:aa::9) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|OS7P286MB7183:EE_ X-MS-Office365-Filtering-Correlation-Id: 8a6545a4-99ef-4d54-4592-08de120486dc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?0RItjBpUvO1mW44x0+U4YhzDoLwPQtmk9kKyX3yVeEx63LPsoiwSpUAIr5BB?= =?us-ascii?Q?p5r04euiMUC3UDY3XGa4y37TlWz7E6gpiLhvP5dii4iguGYcCJxiIXRZqq6h?= =?us-ascii?Q?pJG0TGC2BtHi/vclOvb0I8PnKUJX5viz1bGf1WmmKtRzlKb3oSa+3KjvkYGd?= =?us-ascii?Q?dMXm6xBLA03B3nQbHmKpKrh0tSexpNHFOieWLKhLX4TFQBQ18hosH4OB7Efv?= =?us-ascii?Q?+hyk0Scp5YxqjdHrw16Kqlv95wVxf67XvZhMg6bcQZT26keFp2bJUpS75ju4?= =?us-ascii?Q?WzqEb8YiKXPFbGXUA+FpXrn6xL6n5IYt2y/4fLRRcU37hMQT/tLN5pLfQSRB?= =?us-ascii?Q?nwMIStj8NPFik2swaJoU1xiLyduF25USU+8S6Z6d52POLKsfUFRKN8j5tRR0?= =?us-ascii?Q?+y4uOJqQBuBkafAJGB6VrnIfKhewCmP5Qg5ZGmlWe80OoFTrNTYoCXdFWevq?= =?us-ascii?Q?rNkxSQrlpM0IDiGuX2XI1lmRHR3Tl93U0l5X1Jow0SFusH3/XykIYp0JXs0X?= =?us-ascii?Q?ajTteI+OwV7DH1wbYqmwrghdgZK+4QVC583+oqkh1Umg6T7aWizSwMTOuwQ6?= =?us-ascii?Q?5Wxs98c06Q2Fo5/HQEp0r6NChB6i53plQEi38Gu0Pr0pq9bLvr8Br89gGcWT?= =?us-ascii?Q?p50oB2H6LcP580e52NihF8faqK2MKepqv+qddGtBYWFMGBr8FLZC/ZUFQSjb?= =?us-ascii?Q?sTUt1ugrmutpry9J/JJMk66a1+PYUlV8K9kc97vD4ilKjE/oOs4nozciVGxx?= =?us-ascii?Q?g4u9YDJQc6cwL1tbaaDVOJm3iJ14Ab9PGb1jTtAvmN5r9hNqWl3nmLrkoIi9?= =?us-ascii?Q?vIUYULbZAeiBmJQvlZUZIZcDPTvDz3LfkYs30GgZ9Hv2Cb9aQfi9FskApsl3?= =?us-ascii?Q?blUoIWB71Sg5ynW5gOMT9iIhQrM2RGrKv7oEdp4A3S+0iP3Evybc9zbGscMB?= =?us-ascii?Q?Jdh1oH1PZZ0gpSiFP3lGyHWuF7b5fslqazyWEeG1Kx3PWaDhcmo5u3ACQOQ4?= =?us-ascii?Q?XAePwWmTcrdWA52i6elmg86s/49KaCm8qvHMgPU1zXy+WGd1T+F/awstgzYx?= =?us-ascii?Q?cQcNP1fE1eDs8EqDdYT66lQVku6cADPbw4S4K2/hRzmbCAy2A161x84yjWN6?= =?us-ascii?Q?rOE5NtODRB39U+ZxzjELahGpa7F4SMpdo6XHl2XSD3Q3zZr3yQ9yBgVWXrR3?= =?us-ascii?Q?gWvWqMOeC7Pqp9WBXG61K7OcjD2N8gKCEMeeaUt1zGFVNReklHW+oYfG7Dla?= =?us-ascii?Q?QAQqTSoWobwhZr+nNudMs17Qq85mTRPEw6bTg0z8TkhkwA9xe77qc2hdZlTA?= =?us-ascii?Q?Sbg45XRt+JTlAe+CL94DPKeYW8d5cNC67/z6V/Ab/Q21lH2ckU8x5E4n4c+v?= =?us-ascii?Q?knGQS8dlAsxuF56ku8K5W2aMAbFUoBC1trBV242HOYbh6JM/wLfbh1dg+K5R?= =?us-ascii?Q?yCik/g0ZssgwvCu4Y/59yTj7Ku7b9ZNa?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?v0jdrttSUDaVJU5drkMBiv2oVQvViqc2SrEeKv2wojfAFIge0jDp/oK0v8lQ?= =?us-ascii?Q?wxM6SIjRtFJclRpdhOPTisZDkb3YSt6LrlPUdJEQTUvRyZERJ6DB1Dh2H7mz?= =?us-ascii?Q?bxrf9qBjObkpL9EYiXZqifKyzGd0ygFSs27S9mCs5zmAZffBCvAMwq8HwDGE?= =?us-ascii?Q?kEwEQzAKLBiWAUc9jGS/bSekSnUZ+Gz4d9QCZaHco2CgPSYhQ7oCqMkTdTEy?= =?us-ascii?Q?mezOIX4MolJ9A/eTl4zLZ8PLVH4zny2asX651gJteIhTT182axyHdSRwmoY/?= =?us-ascii?Q?4WC6HtO0BnTbOesEe1Lti7ECNOcNnElTPIJAdU9Gu3l6xEWzMMUhaeuJ6Wz3?= =?us-ascii?Q?NKhYjxXBzuyDwt4rvIWAvCa7mAwA+GyJrfste5ULA5PuftfS8lJfN1LM/cMp?= =?us-ascii?Q?5/B3o+BSfhiR7NS5zN/G2oAVP9KKGi4wM6ueydOk2t3FtAlQs53eZyT8K2VC?= =?us-ascii?Q?NAk3gsG0v3U+jqKnGXCTz3LUwtrYs72ikkDcVN0ialaSO96GyZBh+j1UjTT+?= =?us-ascii?Q?9O/jw2wVJr8EtjdqRAvdpSWVM4CqDwFKqhvZBrbc4tl3qRRque9+tDQX9xkI?= =?us-ascii?Q?zP8oI0iY+Vzr5FOWVo8E81FlndUm+H2s9bc9jdvfaSvhYRBrqEUSu6jwKW+x?= =?us-ascii?Q?fF+cPvRHqSQIq/lTFTb5Z9Sc68nxzquyKGob+scUsIfLsS7QEcu+LJsYNq4c?= =?us-ascii?Q?OgSB4kcCM8IpDukpzmuDN0z+ZvFHQ6+33lEF+EVGn1Yk4GUBi1+zYOgZ6H2t?= =?us-ascii?Q?G8zaJe9Ep94gmgAwb11bP02enUaM8dzLmWBHQNYLTEaggPAwxoAr0yi3KZw9?= =?us-ascii?Q?+/iTCYk0Xn0pAYF23WU+QlLsiiApMq+CU2/Iz4MkLzI6ROwfz85sWX2NhnpM?= =?us-ascii?Q?QG4LLRV8jSuSHdpLAIdjsDL02CQxT/oisn2g6xEgDuHI4B18mohjNoRBxm3N?= =?us-ascii?Q?ku5pHO6ayeVi8uzvA9LsedlkRitOGinfwwwheoAIEs4HeHtvGupYmJeJ7tkQ?= =?us-ascii?Q?CxrAx0fo5kmwy4PcUn57F04XnTmQbULEqVsk61g62DAlgMhh1rP4ASnGqphl?= =?us-ascii?Q?GFz+maMmChS5SXwIjo14w5qXEsrgn5jXH38gKOmJN/7YZ8DsWh5uicdAF17t?= =?us-ascii?Q?9JwHJ5L6dMq/moWaTdVToZ1hxo6Y+xANkKwB9PftK8264841NhbuQl4RrwJN?= =?us-ascii?Q?9RECTqzacnPdw3KyCj304TqQiTQEQw9W9bG+pmuO3m7V0vJzWB7YANatDSj7?= =?us-ascii?Q?Cvu4qui7VHEs9cIA/qj5VmyAYtlQcXguEyjE8+KRF8bQlpH9uWARJon63xBF?= =?us-ascii?Q?uNvguZG8aHB/Z9P7jwo2l7XqAwGbXZlDEN1MlRUhnzWNGktIJwzh6dL/W2ZW?= =?us-ascii?Q?xU8SN6f/2O4Araww660HTFUwxUhjBIoxCo5X75bh/TxZBpZsJOvcXfoQbKJB?= =?us-ascii?Q?B6lSz5cj+1T337iSKCKA+o/OeRLVoX+O/0ayNMkyoeg669zwsRJMufMiPTep?= =?us-ascii?Q?GsDZ00VhMcdT3MJw48QcWoHG7QpA9nPH5rSOzGR6rQhSrKO7sXxXfaOlSGgg?= =?us-ascii?Q?Pyn062odyHqpPu332PlZ3qDI/cZ2T1ApuIbDdjvGuRg+W4opKNtC6LP22MSR?= =?us-ascii?Q?7SE5+UfT+7oAeIwt1b1S72E=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 8a6545a4-99ef-4d54-4592-08de120486dc X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:38.6222 (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: DOGDsnYNPJxJfuV+kx5+eceaxyDrTneQZ7OVlr6ZEoogK4l+R9v7JkFb8rXFKR5z6osam466pZcDm+VzvrUcbA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7183 Content-Type: text/plain; charset="utf-8" Return early if msi->base_addr is already set, avoiding redundant mw_set_trans() calls and unnecessary reprogramming of address translations. Signed-off-by: Koichiro Den --- drivers/ntb/msi.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/ntb/msi.c b/drivers/ntb/msi.c index 00218cfa6fd5..6d48418aa756 100644 --- a/drivers/ntb/msi.c +++ b/drivers/ntb/msi.c @@ -106,6 +106,9 @@ int ntb_msi_setup_mws(struct ntb_dev *ntb) if (!ntb->msi) return -EINVAL; =20 + if (ntb->msi->base_addr) + return 0; + scoped_guard (msi_descs_lock, &ntb->pdev->dev) { desc =3D msi_first_desc(&ntb->pdev->dev, MSI_DESC_ASSOCIATED); addr =3D desc->msg.address_lo + ((uint64_t)desc->msg.address_hi << 32); --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11011003.outbound.protection.outlook.com [52.101.125.3]) (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 6B7E12BE620; Thu, 23 Oct 2025 07:19:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.3 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203990; cv=fail; b=dLqa6jkJp+QGfhz8sDIx9nCc+bjYktvo8X+vp3TZLihTO8yLncesX0I+xEc5x0x4PdNtPgtEgtpOpcoz2XY+ABO3rF6PyYJ7uovCm3OXG5ZQTo88UIi8aEKBztrl0W4hgTQ38F5FreLcwCVYyejHo1HKeyvfO0zRWlZelX20ouY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203990; c=relaxed/simple; bh=mqwpxw7DF9Ij9V+k0+Jb/DwYdCtFR1/Q5gBX6pIwbl8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=BTNcFCV4oszO3tWoXW1Fwfv7NdzmG/hKwOuzYoO1tUr2T3tyELy4DCOtgJ/tpuTzSCjfb0qHKPRZswi9Uql+BLwpjnSEUTRt/Mbf2yenu26XMdGCs6LmTzLxUO21CBJNb9mJSnbI/lgZ1KcYyP0ii28zwE0BrItE7INAsnpK+aQ= 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=DP3VNjOR; arc=fail smtp.client-ip=52.101.125.3 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="DP3VNjOR" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OI3N4uohYbqtW+4PshvV8MGuGKwlwzQlgNzs2qK9CVUapeiidAOonX46EI8n9BJXugYXEB+8PJT8wmYEXqQgKBTN6VagHX9amqP7AKdqXEStfBFvKKBINdOBlvnhPna56q1+yaajv+c5MU1YBCMiZLT/RqBBBbCEFQWVKt1UDoYJFprHQBOuz82AS35p+xx8cDunAM9RKNGZfYCTPmxQ5++masEQjOj9w1MScEfP4xi3/sy6P/cY4h765udAqc2gR2fPWnrey7/xXiX7Bfdn6RQ70YidZt3t9qXvqqL+yEVVIVT1kMmBP76frrohQtJOVjXHzZQEstKDt2w18m3EOA== 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=KNST4JR2GmjgfseSsXUyCfalQONTbNFp5geasoreGN8=; b=DnLMjSTD2++iWjKl4LvbD3Eg9Y3qhJUHC42bQeAWVVpD5GHDhtvyvghkjK08QuILmOxWTPFpUPTEGZphHqb+zG4KQULiTnWHBQ1fa4mhQLfS/uA3mt7dIGyapbAtMkGb5PQajBZtDhsr4sUbo3S97OS8oTQDqUEKwG7z8Q+TtZcIFeclKRsrCb4o4yI/0q9PCzMi82Y49w1a4/pyjqZgP6WgaMWm6CZrk7Z/W0X629n61Jsx6D8+hfnswm3ktrWm+W17eF8XXRWUx4QjMTKFhBqWGy9ZU3wrOwyhLYQiC10eSlu8QWaWZ+R2UteHnfkvHcMopgCYIBlh7UzVWtKhGg== 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=KNST4JR2GmjgfseSsXUyCfalQONTbNFp5geasoreGN8=; b=DP3VNjORNuMyCiYr2i2QuL+1iWrclyGDSxw6cM1ErSGutfjt+MThoBQwZiBxhu/RKHxzxqtit2E53w1Dfq0RrZOrfQhy/ifJc17uOhpS4gWvMOnC9aEy1K7KgHpor5BqdySHwWmXAViyx38Re6XzC1GGhtcdDSVYWXdGAivQD1o= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by OS7P286MB7183.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:456::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:39 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:39 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 14/25] NTB/msi: Add a inner loop for PCI-MSI cases Date: Thu, 23 Oct 2025 16:19:05 +0900 Message-ID: <20251023071916.901355-15-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP301CA0033.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:380::17) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|OS7P286MB7183:EE_ X-MS-Office365-Filtering-Correlation-Id: 8e887acd-a32b-495f-482b-08de1204879a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?M1YPC7jJRka9SUvaBs8/UO0u3TDI3F1LLkjmUIydOZE2P70kB4IpEk42rfX7?= =?us-ascii?Q?lUU8JYO+5c1avJwA1XEo6mofZmYft/I+gMyEnMFfM/pve1+wXeci0KBtJCce?= =?us-ascii?Q?fH19W8CmA9sx2dDgZxvkz5DKhx/il6MpxaulmM++PnfaFGkJCzAywvuMYbxf?= =?us-ascii?Q?eH/oUmcY9dNhF7vrkrPuSECLO6m6JPrrGYvKuafDdVd9di/leILukrsX3Yvp?= =?us-ascii?Q?ciLB2kQgM76qECgOB3yWUnwNiku9N81VQTTHyGFm0FSN4fpXzoidCGyOfDHd?= =?us-ascii?Q?KsHsQsLTahdWunyIUYvumWaWjWDU+rsoWVx5QsgZd6cIPWbyC808wzyMY94X?= =?us-ascii?Q?6QvzYOGMEkQLy6IaGl4JhdxIsG0/13teMtlG3pDCBTS2W5fOHN0my7l1RnFZ?= =?us-ascii?Q?dnlrL6BPxXtzqAECh5AytUM2u9fU6B/bY94WNnKrH3F34pnASUbHfLoV0Iwv?= =?us-ascii?Q?P4GoA/UjI02wuvmjM1Kp69vz25ePfoagr9Zzca3yZWhYt7cMG8HPD7CwcSWC?= =?us-ascii?Q?jHmq9GYn5W09VGnM2q9UrVqflXvtHhZjZykcVLvJNxgjEA54c9VFJlzLaA+n?= =?us-ascii?Q?aC0XPdLHiQ6vMCYahcn04vsBC6sHbvpBUkRa0/5jvEYKEnfzU6yhUeowAwfI?= =?us-ascii?Q?iiQnQezuX9rFTbDrp87CQAR+u4aif2TwhSfsQXY91zQiAU+bvVwkCMGzFRFW?= =?us-ascii?Q?6Gc7/vXmg8QPNUEurMSceKSZ5YSXgLjsO2gdwQi5sCVBKF+UV7GtoWjM1PVk?= =?us-ascii?Q?G1N/F9E41cx+/Ft1StY9SmrwV58jus9av8VXxQT33tEmhgDDRaJyJ07l0pha?= =?us-ascii?Q?dek2+2O8oIS7xRky47bwhiuVrqikP/KhdSr+8Cg4IKK70IR/vPT0eUfST55k?= =?us-ascii?Q?fvT3VVXGyml6+jrL0rLhFojXQNCVAbac+dlysjrGNQGdeOfNNkf3lRKTzBcy?= =?us-ascii?Q?jvINfw7nMNZElujZHhHneyky3rh8rwnTfjW8LzgxxaYXQ7+9wMFSTomRI/Tr?= =?us-ascii?Q?gamM7nsxaetBqH6LkNnj0HEEkI9inqrh337MgE+OplAJpURc7lixO/i4X9dn?= =?us-ascii?Q?/CJlvKP4+Z09mFLsrBPI1v1+74pAuBo9JdRB9nTYEN1fiDxB1eI9sguZHTDz?= =?us-ascii?Q?t21kBSZ6d2SUcNjgBFiKWc4fenWS/tW3uwnUmHTTqDrWQJjZpZ4k4Evry7Fo?= =?us-ascii?Q?zoX8X22mbp0QJG+vszRDSP7w7aK796eb3qbitZwwXW4k/SM/4ec+50N4rsVt?= =?us-ascii?Q?roqA1r/7tqcMbgbKNPt+CZtfgW9/08b31QX38EGtoHgGmbjZot2r26p11qLV?= =?us-ascii?Q?vtAzfGmhUNO0kMT3MqO92Ebn8ASe1et7du1deEF5KmEdmF+i77lQiVgF34Q/?= =?us-ascii?Q?mcBpeS7wejw66hjlPU4d30bDbOQ+rNx3s+ffXudUlSHJQRzstFWASuHi7Fcp?= =?us-ascii?Q?9U+1QXtytDEVhvXGoHDr3yhGXkHqlM/C?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Kj/y69xbZkw+Idhua2Bq70U9sE3NnISnEtgSozrkONty4ircpdLDPNAaWIWV?= =?us-ascii?Q?m7hCPzouTpK3jQAIebw1FkKffSYnx9C41DSQ98fsma+TMrkn30YcFqhsf/wc?= =?us-ascii?Q?x45UncU4dtvQuo8xl47NuZx6z+AL/gXDLp1sljkYQ//eRYcBM5rWexR8rZ8K?= =?us-ascii?Q?bqNRSTuS+YV1mp1dk5l2rCYGiXFcjMkdXxEQaj1OxhmSDR+HpZjEygCWSM7M?= =?us-ascii?Q?hHBmPXntEIdymKmXFj4Bper/aIGZTdk/F1gtXnMiOfYetnDWhIl1nzV8czV5?= =?us-ascii?Q?eW5is7U9FQtXozYJL5+Q5zsQyIMB0f61TXGHwNqmqZSz5QOLm/dzICVl+OPL?= =?us-ascii?Q?GiIPE1SV8AGAeoPqDyHMV8YSjQRwegCR7Y8/LzxsSSJPWX/4XR5uvsavV9nv?= =?us-ascii?Q?nmYU/Yt4G7kI09EbtFJ8u67z37s6pEeLcP9jnnAxdAKtiFV9uvnYR1so1mdM?= =?us-ascii?Q?h9XANBV00Wt2CQ/5tFAJAk9c1nRdnXFds5TqaxHm77lsKOKMa0vEyUuiYIUh?= =?us-ascii?Q?o4NMzyJrfCIR6lP3IIU4P3d6GRMsWZWlcEwAzKp4HYyMkl0WNocZMW/28GHt?= =?us-ascii?Q?jc0IOgjQuTqsPpPkwgF5f3tEpAT3yxY+sBJBvgnWAhqkdE9YPc5CbSuJh+Tg?= =?us-ascii?Q?UjEasuNQ5rMN0Ku4xQ8PkkMwDz7QVO8zM6QIZQxRuPsDjQvPRqIO/6DeO+0H?= =?us-ascii?Q?/kHR2QQspvyhWpuvTLyCTB2Wy7Alszhm0WXIvMBK+Ekm7TgTaJl7lOlBaw1C?= =?us-ascii?Q?k8h4ba0RR+QKBy1284U+zmCLiEuMF//Ej0sd2x0zy8OUib4qjJTo7ld5ef3A?= =?us-ascii?Q?6aHU2wm43ShuRIh7Kg6TAObsLSZfBibujpJl2jwyO71EkD9Qs4cJBD2RipSR?= =?us-ascii?Q?Ij88BV7s3IkkMvtySipon5ES2d0kSrM3+0mz8pR3h8RVtXVZFgALu5SwMUFl?= =?us-ascii?Q?OU+59hEqcaEVbPES7O1uOBI9O2LauHgfJtjL8qyUfxgmdIQJM1uWmtVCVSSK?= =?us-ascii?Q?NDnoGeviqI9z+K4CkVuSXEIyVgnsg9YkK5qyQ8Jj5BGr91TzBbL0R27cq1ZY?= =?us-ascii?Q?DNW9lhMKzTQQqUSxpysQMUuzLcAsja8g+eXvYPOrxQ57B6tUEs36CoFCKq0i?= =?us-ascii?Q?2WQsAeBXngM7cmjimpcHvFGnQleli8VFmcB9kTBCaSvrpGPLMchvzslIP63x?= =?us-ascii?Q?D11uCuVEpBWCubgphkgFe1G5wuI0+wRhw/Iv1N/gqJmehbdR7A14fapJoQbP?= =?us-ascii?Q?xOr85ZnSbhVqfFEOvJarC13kZlvTWGfAYNZ6QalWqTZ7j9034RMMiU97hzDc?= =?us-ascii?Q?RBebyVtw0Wmw75jl/ARMMkFNkK8V62HBqEEC68NMlpsibh6gCyVIvMii/gTC?= =?us-ascii?Q?z8PbyBVlTH5RHWSgczipelLHikx4+ptxW0jarOjDI2DXsiVTt9eJHvJJ/vPE?= =?us-ascii?Q?nJ8tSP0w6YTsxWW3CNXdZ1RsBwOzN2yr9f8JGLgQgcbXCzwUAUew7iMbH2D9?= =?us-ascii?Q?e806baU/P8UMQLM/V1uGT8BchFvfevGApZn5F7AEBvWVdETPRiQyI1s+GqWp?= =?us-ascii?Q?xDo9MiUy/KH2TAgtBlCXTsKEBjP7AsS+OztLNiagvqxx2y/DyQEVRwL3rQDd?= =?us-ascii?Q?pW5fy8YkuNKcyDoFVopAi04=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 8e887acd-a32b-495f-482b-08de1204879a X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:39.8483 (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: 5WNdH/6iAiwtRfSObb/RJTDbb/paEa0AbRL2sQ4HAkCWpvlRRLhhVQSWC0HL3urn8dau8tidwC3/K8XzEudjqw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7183 Content-Type: text/plain; charset="utf-8" Add inner loop to handle MSI descriptors with nvec_used > 1, allowing multiple interrupt vectors per single MSI descriptor as on PCI-MSI. Signed-off-by: Koichiro Den --- drivers/ntb/msi.c | 51 ++++++++++++++++++++++++++------------------- include/linux/ntb.h | 1 + 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/drivers/ntb/msi.c b/drivers/ntb/msi.c index 6d48418aa756..983725d4eb13 100644 --- a/drivers/ntb/msi.c +++ b/drivers/ntb/msi.c @@ -195,7 +195,7 @@ struct ntb_msi_devres { }; =20 static int ntb_msi_set_desc(struct ntb_dev *ntb, struct msi_desc *entry, - struct ntb_msi_desc *msi_desc) + struct ntb_msi_desc *msi_desc, u16 vector_offset) { u64 addr; =20 @@ -211,7 +211,8 @@ static int ntb_msi_set_desc(struct ntb_dev *ntb, struct= msi_desc *entry, } =20 msi_desc->addr_offset =3D addr - ntb->msi->base_addr; - msi_desc->data =3D entry->msg.data; + msi_desc->data =3D entry->msg.data + vector_offset; + msi_desc->vector_offset =3D vector_offset; =20 return 0; } @@ -220,7 +221,8 @@ static void ntb_msi_write_msg(struct msi_desc *entry, v= oid *data) { struct ntb_msi_devres *dr =3D data; =20 - WARN_ON(ntb_msi_set_desc(dr->ntb, entry, dr->msi_desc)); + WARN_ON(ntb_msi_set_desc(dr->ntb, entry, dr->msi_desc, + dr->msi_desc->vector_offset)); =20 if (dr->ntb->msi->desc_changed) dr->ntb->msi->desc_changed(dr->ntb->ctx); @@ -286,32 +288,37 @@ int ntbm_msi_request_threaded_irq(struct ntb_dev *ntb= , irq_handler_t handler, { struct device *dev =3D &ntb->pdev->dev; struct msi_desc *entry; - int ret; + unsigned int virq; + int ret, i; =20 if (!ntb->msi) return -EINVAL; =20 guard(msi_descs_lock)(dev); msi_for_each_desc(entry, dev, MSI_DESC_ASSOCIATED) { - if (irq_has_action(entry->irq)) - continue; - - ret =3D devm_request_threaded_irq(&ntb->dev, entry->irq, handler, - thread_fn, 0, name, dev_id); - if (ret) - continue; - - if (ntb_msi_set_desc(ntb, entry, msi_desc)) { - devm_free_irq(&ntb->dev, entry->irq, dev_id); - continue; - } - - ret =3D ntbm_msi_setup_callback(ntb, entry, msi_desc); - if (ret) { - devm_free_irq(&ntb->dev, entry->irq, dev_id); - return ret; + for (i =3D 0; i < entry->nvec_used; i++) { + virq =3D entry->irq + i; + if (irq_has_action(virq)) + continue; + + ret =3D devm_request_threaded_irq( + &ntb->dev, virq, handler, + thread_fn, 0, name, dev_id); + if (ret) + continue; + + if (ntb_msi_set_desc(ntb, entry, msi_desc, i)) { + devm_free_irq(&ntb->dev, virq, dev_id); + continue; + } + + ret =3D ntbm_msi_setup_callback(ntb, entry, msi_desc); + if (ret) { + devm_free_irq(&ntb->dev, virq, dev_id); + return ret; + } + return virq; } - return entry->irq; } return -ENODEV; } diff --git a/include/linux/ntb.h b/include/linux/ntb.h index d7ce5d2e60d0..dc5aab43abc2 100644 --- a/include/linux/ntb.h +++ b/include/linux/ntb.h @@ -1640,6 +1640,7 @@ static inline int ntb_peer_highest_mw_idx(struct ntb_= dev *ntb, int pidx) struct ntb_msi_desc { u32 addr_offset; u32 data; + u16 vector_offset; }; =20 #ifdef CONFIG_NTB_MSI --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11011034.outbound.protection.outlook.com [40.107.74.34]) (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 3B4622F6571; Thu, 23 Oct 2025 07:19:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.34 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203990; cv=fail; b=KEc9iJK1yBo38ZDO0eZqG4HfeztjAf6JuN6jlas2LHw4Ib6J7DD6KJ3IyKUkUlRCCYa0oOonIgETjjQ/Bjo5LeWyfhh4OOsPWUT/9fE7UMhgWtgX4MUyuVr+Wv/qZCDG/Rdqf/jeSmmpArdqwQByNoX5dqWAd8eR7e6Ik3HVnqs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203990; c=relaxed/simple; bh=RTbd2ThMU5F3W4cpvNfO7NC9/knCxTlqGLekcR7B8mI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=VcTf8SnFZ3I39hd6bGzp2hetiqKhLzDxeBP5lg4+JbCbIHLw/3FhuuAxnQgsNat3L0CB5n5AJMXvOduHRMX5XPystLdbYOtISRMIVEfMLvX0g9n28tBDIosEnLS9yUfmp7GfEpGAJ3Q46ykAPuPhiWwquT6I7ZdAH7JYSfc14NQ= 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=X/x9ai8F; arc=fail smtp.client-ip=40.107.74.34 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="X/x9ai8F" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xhIbxQTTBM3TWxS48MlfLw3enrArDyp8+59QnA4JyWiTxzRObvt57B+q2VYTGM4qfFf9tNy4KRoPj2qiJ4NPCctiA8rreE/CiwMm30PcvwiSNc1sVFeeAvdOruXKkL9ohl1/aKJ5p5/eAZBpLX8+pINqsZEgl+4M3qKJDpmNmc377ucgYneskhNdy7s1a8et3WTeeFP2LAMNcLFX2N6fAb81PEMmBbXG5Vh2TKMxe5FB1/UOD51U+KmY2oFKrT5vmiqhoptRYwQnMxyh7ZSRAwo3+nT8gZ0UQ6LtvHy9nOSDjihY7AmnRkUVKuGlbZ3ihzYfHfJ+Q1YEffbwk5fbzg== 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=e53g0sax6rPcsY9TKsqa3HvCyMk6oHTw7aLoXQva1zc=; b=RECNB8t2DCLpeFhDT6XId7K9MHwd2Z5vyufmaPCXCLePjH2Kvy7S/6gdNWm2w895C5pNsbfKMWKRdJs6pRwhc3wUW1EdF98IF90y9xWDewvSmvJqdumZUM+tfB96zFBYzBNIR4QuaP+PBVyv2RFDWG1SsDXmohDyHjgblfqMSekLxwn8xexyHDlzV7pljW2Gj1LsmRkTO/P66hL5ZSFbbQwsy+r6dyFHd2VuzGLeHY5jhAqq2wETZeNhghRMSXPT9ijmp0Llwp2rx5gpqu6CMIoEAEjnfvt9fjCewjf1GUp3nwgRpkUQMmJypbSVqEWxB4J2ydsDRymdS0MsRNYj5A== 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=e53g0sax6rPcsY9TKsqa3HvCyMk6oHTw7aLoXQva1zc=; b=X/x9ai8F+XOBPIWIhT6dU6CVPjkr3zPH3i/4ggkzK20xZYqcgwPrXS3Gx5NHA+OA/SdY1RND/0Rk4reeq96CJE6HBtIiQDu4kfwk0eg1SiaahEmQhyigGCe9psmG5JmCicbyfBVjWvPl78vc2pBI/QIC2IKJ+LiAY1LyGD1zt4A= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by OS7P286MB7183.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:456::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:41 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:41 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 15/25] dmaengine: dw-edma: Add self-interrupt registration API Date: Thu, 23 Oct 2025 16:19:06 +0900 Message-ID: <20251023071916.901355-16-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0046.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:36b::18) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|OS7P286MB7183:EE_ X-MS-Office365-Filtering-Correlation-Id: c3b434e5-b937-4563-1424-08de12048843 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?p44jE2zy1SU7hsDm1+l9qffmiNXkzEhDLaxl8bY2TYKuH1EJOhGXQVs6Bk9F?= =?us-ascii?Q?EyGOEUYhQdKhSuJBWZlmZTWp/BIpnQUEF73wCRpOzD1VkyshnRm6Qx5INzRb?= =?us-ascii?Q?O/1sCdyDKd7pi3YJ1/vPqOHP20J892FukXPDH0/kIU38euh/I5gXCM7NkG3M?= =?us-ascii?Q?bdWyDefyvHof3wjCuN30lmazmv0wPKqiLor2aPSEg5NWTPXmCDAmYc5QZpZ1?= =?us-ascii?Q?AfRMmMLnrlJ8f/67XtK99ivo6+7oKDyimvRDFmRVenVM8R3Kp4xgIXTbXmNg?= =?us-ascii?Q?lZu99uJCnR2KBJg54EXVSAqc1LbuvfcSwKS+FwtowpaYnlS5dR+iAdRVFlKr?= =?us-ascii?Q?9cpj+JetFj3C0aS/sYe/t6Zd3lyXer6Rdw/2LR+pjWcTHymqfe0j9sUaaB0p?= =?us-ascii?Q?A0r1cO5rBu+AA2pZYvfB2H8lcn14EyFLOwoUGUqNs8bQzhD5BsKjcXDohbac?= =?us-ascii?Q?rxzIg4RF7D9XQxFvXZcRYdkE+Unx9CrCz8UhzC9DVYzq3OIIbtjcwz639fFm?= =?us-ascii?Q?LBgPi00U6lkQvwaV7c8q3w1YXMIYGWUCwJ7vQjOvzdeZwQDcu4/QQ3IDF4xN?= =?us-ascii?Q?HkUdNHUMjMkIKzgTCKlQa1dKin7pWGpXYGm6IJ00ftC5LXT1ugMxKms87Lyi?= =?us-ascii?Q?1n0dTK1bLWmkB6TdMQyKgDQgz8ojHzWu2+pFVUF6RCWSfTCywky9VPkSAc/z?= =?us-ascii?Q?j2atTgyUpJRgoUvagrn80T7jhqav9C70hcp9aTkKWdl+bIYrmJnhXFlzwgwp?= =?us-ascii?Q?KbsK8/1emGlZlTw/GlnbATGstP7bJAIUN2YbI3BtBBIcBBX5bdZegkXT6xXu?= =?us-ascii?Q?GGBPDQhg5qBg4Anj1jDCcQLPViJQiJiR1NtJoJOWsoJit/0xzo+h+GrO3soO?= =?us-ascii?Q?oihGAvClwBgaESns3zM46D/4C3U8pCB+SZfdXIJJCs1Q3s0j1BErOP+U/nRB?= =?us-ascii?Q?H5hTEPzr+hJj6rxZoXcFa3eMwYUelS84tnR0bG89B9BauJixKto0OUpYQAtg?= =?us-ascii?Q?ZKD0k0ZXziaKiCXTgQXIUN/7uILD5RktlxJEAHPMjtj98LjM2r58JW3P9Fy3?= =?us-ascii?Q?NuNYTyX7qTJsZcVGJmvS++XeAdt68n/ScoC+aCRaH9jEFS5Ilb3MsyVdww0n?= =?us-ascii?Q?bGcLaZ7vPjfrzBVT1D4CO6+jZOUy0/+z+DPjXj9myKklxqH2A0g43FM7IUrt?= =?us-ascii?Q?2BR2dL9R83eLTXRzcgDyG7161KRsBUQPb7I7qyPtZ19ancnO/t6RK9dWqwij?= =?us-ascii?Q?vEk1VQwBKDmxGAcI4RUEJGqzOAvM0m6hoSozeW7rQdGBWtUDPM/r7sM1CRmc?= =?us-ascii?Q?y6TFnVgiFzuoBS0b+zjH7xoPVkdsWg9kvY6GMjWuCME/N+E3Gxuy78KssJam?= =?us-ascii?Q?GxwKBMVvSxZAmU0T+snl6j/Veo31ZkJ5P4MD56AdM/GZpVn5zF354yXWJtbd?= =?us-ascii?Q?qCkupI3tz/GC702qOg207E+dUZdec8iT?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?yBjryJSscsNyzvX6qzBWOPXDy5h3jz8rKo8zoKDg6y7x0vBrvByswahquaeU?= =?us-ascii?Q?txAxe93eW94uvwn6c1UuP6ru+FCgMknXS6JrL8St9W3sLx6HD2ywZ6NOHVgf?= =?us-ascii?Q?uTUAynyYy4PQmCGZm//Q/KKRGQa9y8U7gqKb15T9WQ3WmaHCG1J4nAZtKrR7?= =?us-ascii?Q?P3Z3opt/mBvcp9qKK2KrWtSwsBxOJsFsi8tG2Bp3xchM5L0GVYbWYFExwAtI?= =?us-ascii?Q?hBY9QfxUbzgwK0uOlBGcBhUYSRsv/iyJ64y1ntr7zU0GTPpWENxpDDVtndUQ?= =?us-ascii?Q?pSNK2IXYRg88mx7KBYzay7d0zwJrQDDAxr2EKhRFrYOvX1XzkHrXWVs2scYA?= =?us-ascii?Q?T/FpLoYMzCPi6INr9RjpSvrOFpo8QKX2A6VUEQKlRxMyGlcojg3ZFRVUO/E4?= =?us-ascii?Q?ng6BegvsSjQ9BIXAURjD3gxK0L1MEwsn3aW6UyRpDIYdqSIA90wR+DMzaK+7?= =?us-ascii?Q?hsHJ5HFz+Ds0IqI/F0boDEWvxnTAf8CYHllyLWGkBqhf+uSWXsectco6NXOP?= =?us-ascii?Q?WMAfivdJOEL9mGjmqec8c7Kmo28YRAkm4Sz04FIzqEWHEw8ekMDgRafexdel?= =?us-ascii?Q?SvCdnSoxCsIwMhDr0Mc31o0Mf/RmyisQg4JxQ8tYZzYsYbUutkxkH84kRUba?= =?us-ascii?Q?VGwpbU9Jij23X+Mw22qfP1koYnyMTIJH15MNIgdSw3Ofa+tNnh0uySHIGGL+?= =?us-ascii?Q?nl/1WBLCTO/MPNRAcYd9bCDEz7MLyEVRliMzyqdfUe4+5+KJ053G7wsFGA+i?= =?us-ascii?Q?Y/V8H5CigoKFodz3wQcvRhNqNC5WKyEPoCHF5/0shibcdjtpxc+5MrDrLXwm?= =?us-ascii?Q?XuyojVnx7p++4XPBKDo2QrbPfpMHymkBZywrUryC7CrXK5kw7mh7US5sygCx?= =?us-ascii?Q?VS+P1JzsIK1NyOJdkGL3wfyGdYxqWLWWxWatt3EyuTZY7zXq3LmzhH+OYmex?= =?us-ascii?Q?sAMIAHw72Zh+gvY/V7nZuNnsTyZLuJiVyWSB+6Vk6Mw/4KOSpgPDaAy5ku27?= =?us-ascii?Q?WKxaUUj4Wy/6air2TUY26nP8ynTJhIwuMTXlUS7ltVi3iNr/2gzPzm3VEhxT?= =?us-ascii?Q?pu7KO5J0MeP95VdlN9oBUoTfKedz0icZbR2CTW7eWuXot2ekVSvekl4q1Djg?= =?us-ascii?Q?r/lAJu86msUL4geLyUlO1CRiLqtsuVL8FtHCulUTFL0iRy5tLhcbascctWkK?= =?us-ascii?Q?D81xpsnSkphJ/mhTqT/m5wkh1py//8teaGGT5HYgMw+nAbU0n5sgRmV1wAae?= =?us-ascii?Q?WUq+WDcmB5ARwzQBIfVfeC7jG93lKhaQlgqvcIZ7fwyuALttrdGcOBQvlsR1?= =?us-ascii?Q?Aw7gSBO9kMMmyK0fB5Ak01i1DyzvtxMru5qwGLuLlRwrRUssHMJKCgsjjRQA?= =?us-ascii?Q?0jLh+Gsg5kVtw5iXmWpqE7EgYXDth/huSpwk2iR75kSuprRyyxPBCYOmL44G?= =?us-ascii?Q?Ep6zzPzo2/fTS2/QPHKpUFuvrLJXioQF4IInBue3PWNj6qzM5Fxr5jQ2KR46?= =?us-ascii?Q?8ZlZkLXy5EvEtfKsS85aXOn/zec5Vpu+p/UmiaZN/2YI3L73afMuVvmrbGQL?= =?us-ascii?Q?xVYBbCYq09D9sQLCCYnzyB3rIeteEucp2aKXBkU7r5cyEmZVI7B0268f7bLv?= =?us-ascii?Q?h1up/5HS6wPZNIBQ2Bkbqpo=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: c3b434e5-b937-4563-1424-08de12048843 X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:41.0016 (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: k2joNDQmDa8aduJMXc8/SaH8WDCYjIhqRTQMuCVxsqc6m68odBzWVjgc3sosbTSyECTLFO+F/B7pcc6fqUAbNw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7183 Content-Type: text/plain; charset="utf-8" Introduce dw_edma_register_selfirq() and dw_edma_unregister_selfirq() to register IRQ callbacks for emulated interrupts. These can be used for testing purposes, or even as interrupt callbacks triggered by inbound address translations where the IB iATU target is set to e.g. DMA_READ_INT_STATUS_OFF. The latter case provides a practical workaround for endpoint controllers that cannot directly access GIC ITS registers due to security restrictions, e.g. on R-Car S4 Spider. Signed-off-by: Koichiro Den --- drivers/dma/dw-edma/dw-edma-core.c | 60 +++++++++++++++++++++++++++ drivers/dma/dw-edma/dw-edma-core.h | 16 +++++++ drivers/dma/dw-edma/dw-edma-v0-core.c | 15 +++++++ include/linux/dma/edma.h | 16 +++++++ 4 files changed, 107 insertions(+) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index b43255f914f3..7cf9e5e74a89 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -661,11 +661,22 @@ static inline irqreturn_t dw_edma_interrupt_read(int = irq, void *data) =20 static irqreturn_t dw_edma_interrupt_common(int irq, void *data) { + struct dw_edma_irq *dw_irq =3D data; + struct dw_edma *dw =3D dw_irq->dw; irqreturn_t ret =3D IRQ_NONE; + struct dw_edma_selfirq *h; =20 ret |=3D dw_edma_interrupt_write(irq, data); ret |=3D dw_edma_interrupt_read(irq, data); =20 + if (ret =3D=3D IRQ_NONE) { + dw_edma_core_ack_test(dw); + scoped_guard(spinlock_irqsave, &dw->selfirq_lock) { + list_for_each_entry(h, &dw->selfirq_handlers, node) + h->fn(dw, h->data); + } + ret =3D IRQ_HANDLED; + } return ret; } =20 @@ -892,6 +903,44 @@ static int dw_edma_irq_request(struct dw_edma *dw, return err; } =20 +int dw_edma_register_selfirq(struct dw_edma *dw, + dw_edma_selfirq_fn fn, void *data) +{ + struct dw_edma_selfirq *h; + + if (!dw || !fn) + return -EINVAL; + + h =3D kzalloc(sizeof(*h), GFP_KERNEL); + if (!h) + return -ENOMEM; + h->fn =3D fn; + h->data =3D data; + guard(spinlock_irqsave)(&dw->selfirq_lock); + list_add_tail(&h->node, &dw->selfirq_handlers); + return 0; +} +EXPORT_SYMBOL_GPL(dw_edma_register_selfirq); + +void dw_edma_unregister_selfirq(struct dw_edma *dw, + dw_edma_selfirq_fn fn, void *data) +{ + struct dw_edma_selfirq *h, *tmp; + + if (!dw || !fn) + return; + + guard(spinlock_irqsave)(&dw->selfirq_lock); + list_for_each_entry_safe(h, tmp, &dw->selfirq_handlers, node) { + if (h->fn =3D=3D fn && h->data =3D=3D data) { + list_del(&h->node); + kfree(h); + break; + } + } +} +EXPORT_SYMBOL_GPL(dw_edma_unregister_selfirq); + int dw_edma_probe(struct dw_edma_chip *chip) { struct device *dev; @@ -912,6 +961,8 @@ int dw_edma_probe(struct dw_edma_chip *chip) return -ENOMEM; =20 dw->chip =3D chip; + INIT_LIST_HEAD(&dw->selfirq_handlers); + spin_lock_init(&dw->selfirq_lock); =20 if (dw->chip->mf =3D=3D EDMA_MF_HDMA_NATIVE) dw_hdma_v0_core_register(dw); @@ -974,6 +1025,7 @@ EXPORT_SYMBOL_GPL(dw_edma_probe); int dw_edma_remove(struct dw_edma_chip *chip) { struct dw_edma_chan *chan, *_chan; + struct dw_edma_selfirq *h, *tmp; struct device *dev =3D chip->dev; struct dw_edma *dw =3D chip->dw; int i; @@ -985,6 +1037,14 @@ int dw_edma_remove(struct dw_edma_chip *chip) /* Disable eDMA */ dw_edma_core_off(dw); =20 + /* Free self-irq handlers */ + scoped_guard(spinlock_irqsave, &dw->selfirq_lock) { + list_for_each_entry_safe(h, tmp, &dw->selfirq_handlers, node) { + list_del(&h->node); + kfree(h); + } + } + /* Free irqs */ for (i =3D (dw->nr_irqs - 1); i >=3D 0; i--) free_irq(chip->ops->irq_vector(dev, i), &dw->irq[i]); diff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-ed= ma-core.h index 71894b9e0b15..7d7dd9f13863 100644 --- a/drivers/dma/dw-edma/dw-edma-core.h +++ b/drivers/dma/dw-edma/dw-edma-core.h @@ -95,6 +95,12 @@ struct dw_edma_irq { struct dw_edma *dw; }; =20 +struct dw_edma_selfirq { + struct list_head node; + dw_edma_selfirq_fn fn; + void *data; +}; + struct dw_edma { char name[32]; =20 @@ -113,6 +119,9 @@ struct dw_edma { struct dw_edma_chip *chip; =20 const struct dw_edma_core_ops *core; + + struct list_head selfirq_handlers; + spinlock_t selfirq_lock; }; =20 typedef void (*dw_edma_handler_t)(struct dw_edma_chan *); @@ -126,6 +135,7 @@ struct dw_edma_core_ops { void (*start)(struct dw_edma_chunk *chunk, bool first); void (*ch_config)(struct dw_edma_chan *chan); void (*debugfs_on)(struct dw_edma *dw); + void (*ack_test)(struct dw_edma *dw); }; =20 struct dw_edma_sg { @@ -206,4 +216,10 @@ void dw_edma_core_debugfs_on(struct dw_edma *dw) dw->core->debugfs_on(dw); } =20 +static inline void dw_edma_core_ack_test(struct dw_edma *dw) +{ + if (dw->core->ack_test) + dw->core->ack_test(dw); +} + #endif /* _DW_EDMA_CORE_H */ diff --git a/drivers/dma/dw-edma/dw-edma-v0-core.c b/drivers/dma/dw-edma/dw= -edma-v0-core.c index b75fdaffad9a..67b0541f38c3 100644 --- a/drivers/dma/dw-edma/dw-edma-v0-core.c +++ b/drivers/dma/dw-edma/dw-edma-v0-core.c @@ -509,6 +509,20 @@ static void dw_edma_v0_core_debugfs_on(struct dw_edma = *dw) dw_edma_v0_debugfs_on(dw); } =20 +static void dw_edma_v0_core_ack_test(struct dw_edma *dw) +{ + u32 wr_mask_all =3D (dw->wr_ch_cnt >=3D 32) ? ~0U : (BIT(dw->wr_ch_cnt) -= 1); + u32 rd_mask_all =3D (dw->rd_ch_cnt >=3D 32) ? ~0U : (BIT(dw->rd_ch_cnt) -= 1); + + u32 wr_val =3D FIELD_PREP(EDMA_V0_DONE_INT_MASK, wr_mask_all) | + FIELD_PREP(EDMA_V0_ABORT_INT_MASK, wr_mask_all); + u32 rd_val =3D FIELD_PREP(EDMA_V0_DONE_INT_MASK, rd_mask_all) | + FIELD_PREP(EDMA_V0_ABORT_INT_MASK, rd_mask_all); + + SET_32(dw, wr_int_clear, wr_val); + SET_32(dw, rd_int_clear, rd_val); +} + static const struct dw_edma_core_ops dw_edma_v0_core =3D { .off =3D dw_edma_v0_core_off, .ch_count =3D dw_edma_v0_core_ch_count, @@ -517,6 +531,7 @@ static const struct dw_edma_core_ops dw_edma_v0_core = =3D { .start =3D dw_edma_v0_core_start, .ch_config =3D dw_edma_v0_core_ch_config, .debugfs_on =3D dw_edma_v0_core_debugfs_on, + .ack_test =3D dw_edma_v0_core_ack_test, }; =20 void dw_edma_v0_core_register(struct dw_edma *dw) diff --git a/include/linux/dma/edma.h b/include/linux/dma/edma.h index 3080747689f6..42daf9a76b56 100644 --- a/include/linux/dma/edma.h +++ b/include/linux/dma/edma.h @@ -101,10 +101,16 @@ struct dw_edma_chip { struct dw_edma *dw; }; =20 +typedef void (*dw_edma_selfirq_fn)(struct dw_edma *dw, void *data); + /* Export to the platform drivers */ #if IS_REACHABLE(CONFIG_DW_EDMA) int dw_edma_probe(struct dw_edma_chip *chip); int dw_edma_remove(struct dw_edma_chip *chip); +int dw_edma_register_selfirq(struct dw_edma *dw, + dw_edma_selfirq_fn fn, void *data); +void dw_edma_unregister_selfirq(struct dw_edma *dw, + dw_edma_selfirq_fn fn, void *data); #else static inline int dw_edma_probe(struct dw_edma_chip *chip) { @@ -115,6 +121,16 @@ static inline int dw_edma_remove(struct dw_edma_chip *= chip) { return 0; } +static inline int dw_edma_register_selfirq(struct dw_edma *dw, + dw_edma_selfirq_fn fn, void *data) +{ + return -EOPNOTSUPP; +} + +static inline void dw_edma_unregister_selfirq(struct dw_edma *dw, + dw_edma_selfirq_fn fn, void *data) +{ +} #endif /* CONFIG_DW_EDMA */ =20 #endif /* _DW_EDMA_H */ --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11011034.outbound.protection.outlook.com [40.107.74.34]) (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 551662F9D85; Thu, 23 Oct 2025 07:19:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.34 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203992; cv=fail; b=AU1BFKD3l3nz6GJbwlz2ZFiPa+gppzWv7O6WsFmObFFCxt5JjKyq6RIJCpodMIfgS//75r4gVT2rFQU5U0it0+dB+f3w692pMs/Jz6Bh+AN/XioZSI1zJTvb5sR71qn26vhL9FybPbLEtcCv/+6xkI6mE8WwL3IfId6giu+aEzg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203992; c=relaxed/simple; bh=vrGB0OsRM/Vk4FNdhLpmF/ezg+2e7yF1Q226xwb+7po=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=SoYhV+iP8Am1B812cYQtdxyBR3rEnRqgVF38XPI61fn3exNscsXhWRoy0Hxy+rq5oEkJyWk52PSe9Psgn2CBm1vaGBGx6XeS24eHp2j5tiONIYeufbZG0nAqyWtkbbQfLUs/ee3geVF/grSNdRidAJFdmsPCn5KLHKFBDXnqD24= 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=qMYwqUsM; arc=fail smtp.client-ip=40.107.74.34 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="qMYwqUsM" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rYstW07+WJTmpxwZOSOL3qR6L70fX/4hBW/4rCUVbsZ6MHnSEkqAn/y8nanqHNChEcq1jPw2QzsuN+eUUrgUcsVfBZQMp7r4fDy2KaTbajAp2saZ+JPUk5TDvfH3C3JRYFa293bra74FZcx0W0X2IYkSX9nO1/moIe9duKNlSEQmuU9SQwzYJ5oY4o6sR4CqRXVQyHIyngYhlyvX9erajZ10a4StEzUShEyu5yfBTSYK0CgFpB0oWoelKha9dNFtDB/oqltMJCXc5Gz2SGXoKErCQpG0vLggKOisDdnElHMZglwoLBOAzaiWQDkxkwjMV6QYCG44kh15rJL3ow8zGw== 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=X0RVBx17S9DALbyYtwtcWYWWUJRmjurGuOhiLmhOMW8=; b=d+iSmYtlJ154A2uza6Nkc4XeGOol6mWpIbedP+raNW/lA0W9pYNdeXk1U2ethfBvS4LcDMhNnBZ2/oFXYbTx2xz7trmq3EU7YslgC1vAfSephc3T2RAXuc/0+kTX5lKyjVJGLkU0wTM5Zjv/7Gyd5Y9FKVPHRXv53xwfyXYB3bsq9WtPjjvi2W6zaGiG0YPRNvAOoRVJ+L57UjnNmfDP7SPT+om4/AoBig0fVKdTRUEPfJtVY+Bu7FQOZmkdkdPiPXWjWiC1gzK+XmwrQqdIkBUvBQxxHd+u4Dt3iupMkmOyl356axQU3SisSs2irgHqiBQFneXqVFvjao0gcNMwIA== 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=X0RVBx17S9DALbyYtwtcWYWWUJRmjurGuOhiLmhOMW8=; b=qMYwqUsMY2lSkFRaASFDktRdQAfCT8b/5ZDQUol0KF9g8TqeyM2f2OyFEoYM32ezFaTJdhB7vQYa6gnPY+b6snEZYebvzB4qchsPTTkZptKK+vZAn6fEflyXLCaDBU3WFJHde75Nn29Tp0RmN4GY/aqkCRnYIoZ4gmeJoMzGi44= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by OS7P286MB7183.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:456::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:43 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:42 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 16/25] dmaengine: dw-edma: Expose self-IRQ register offsets Date: Thu, 23 Oct 2025 16:19:07 +0900 Message-ID: <20251023071916.901355-17-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYWPR01CA0019.jpnprd01.prod.outlook.com (2603:1096:400:aa::6) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|OS7P286MB7183:EE_ X-MS-Office365-Filtering-Correlation-Id: 81e82a98-419a-4c9c-dcef-08de12048904 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?bCDiZcJcnz5wTt6VaMmwhdHqsPNzEINhARGUlj+expaVFUcIYJvLk7zxGhfR?= =?us-ascii?Q?FK8PzUh5wAfEpPpkNpOky3PxYqWeSAjMGyFMKR8LBm/L3iWS3DA+P1NwBUyF?= =?us-ascii?Q?WyPmLLyt7ZSxXriyRoEw9U+mCjkFLKsbuglX2f0b0jr+QWqyR4GKzBeJxiTS?= =?us-ascii?Q?jVfoiV5DO2W6ts8AoDltxlDxscMd1/+nh6Yv9HUEIEOqa7ebUBSXG3fkzg+J?= =?us-ascii?Q?mimYWBhV2du8giLNZ77myYKcvhAhkgzoFheCgUJfT+S4Tn+FEVRVqTkuMI/5?= =?us-ascii?Q?jauUdTneQPS0gdZilifP1FHsgWTEhdBSN8fy2cVFMxbhiilfj9cRDVX9Wdzv?= =?us-ascii?Q?mclfqJjLvG26GSPmDQO4h6T0UwenrQN6bINo4oqEgmAn/iynDbzLA/VETJs9?= =?us-ascii?Q?AyW1/0HS26dRgdTnr1lNlDj32MLqu5ynOrAFHDDrpWSNUB1Kbg7C2gdZv/7K?= =?us-ascii?Q?vBTnSWQgFzNqMFSQY5pCXB3seXE4/iie8saxgn06o6N7kcQsd3L3q5wxF6td?= =?us-ascii?Q?7qERHkpYsGAJz9OzI6Kv1ecouJuHSKN2k1TPpYV/JMnmNLUgBQmWYDZXwJoL?= =?us-ascii?Q?Klm5iG/tf8Y96Dglsx8HPkEyWBhanCfwoNDymFBVot96uUJ30swO9P25F1cZ?= =?us-ascii?Q?E1n2qNJAlhaTR8k+L3W2vtAK3/67P8T9pBGhvs6gd567lhowVWPk4qPrsH+a?= =?us-ascii?Q?8Z3JTmtUzFcyaYZT09qhiJ/bYnXDSHCXAjEhY09yi6kUxzYn+2pKj2JFS7RI?= =?us-ascii?Q?7GU0ZgAL6w1x6w0Wjbxh9eeeX663CR85F6IAitNcogPiAF7OxPelGkRw0Zya?= =?us-ascii?Q?1VJvn7+aqd2gTrYXJbkblbXOE0kLGrvl8QY4kF9OV+MsMU9qmFYRVnCb78Bu?= =?us-ascii?Q?99F2Ux3Mm6JQXTOAUlqooEud+hL+3VWOzeVch7gm0nEPqkq7FYKun6kx1rkV?= =?us-ascii?Q?9dQAyu3v5dsjI0Iq+Z9fkMEAbvAcfvg+fuODd/kLQsNMOGECgFAIHsKMm3HC?= =?us-ascii?Q?ntliUdhAVpKNUTd9Yh4lHJN0NASY5lnSM2czzgC42D6aFgE229P3zJ/dDueu?= =?us-ascii?Q?mYAyjsjDyYT7g4cSZd4Vz8U8rcn4KdIJ4u6OwH9Umncq9SSNmcyqbZ1GIZfS?= =?us-ascii?Q?Si8xpX+eo0GDu4y9OeTVId33j9wawXd2S9BQSMVYf5QFC+r0fPYXlc2Yb5ST?= =?us-ascii?Q?C/deHNZKizyFmkBvAAQlOvf+I3eco6B/hVudGrIln+U1kEewzl/g/OZFTpY3?= =?us-ascii?Q?kD6J+fz/dRI9I1MV6h9Z2DhM2gARpElDWV4IMw8emRiq+MMaBY9DymrIFj/5?= =?us-ascii?Q?BHOhCLFXwVJnfZgm9GMiFHkTB28FRtLk0ltLEWfFST4X/rslAow9sudZM/MQ?= =?us-ascii?Q?ft3sQ/99+tDnJaNvp8JW8nzbmjsXcnLCanj67ET4/oE7SvtUGIx/SLo4it/4?= =?us-ascii?Q?n5l42cgeaiH/iffqrIKs0CCBH33yDuL2?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?jcHQSMpXJmMX39F6vnrBUKtnDgByU8sEx1vHtSIvBL4X8NWcnoJYrY8Z56PY?= =?us-ascii?Q?oOb0ToU1E1H6E8Fk+zwu9ZIrhF+K9wOSLP2SQ0Iz6C08pdi3TWbGBmIIi4Uc?= =?us-ascii?Q?UsHUxscqZDM6FvBhQOClKjrB0ydLdftdaz5F6ogSLOdY2SriEuPTe/9EeXn5?= =?us-ascii?Q?hNyf0DSC4pRBP/hQbTJQRlIKWyMo9uJGN8qXkhCPahBaiFONL85nL4GHfIzw?= =?us-ascii?Q?BHthoqHeZzAOua7/tukoHYOfjaCWMRdBjHSUHpVrr+M/u7+oeUOmrqUt/jtW?= =?us-ascii?Q?6BtUGvFY+NHelbj7Ojn19cYDXzNR14JnESAVxFU7VUO+nLvJgyQ9raCCv6kd?= =?us-ascii?Q?fLqETXxZYXeTvSKgZ0aU5NpaoLY2OpuF87z5pAerFcAgGGn/KeBbg9/58syy?= =?us-ascii?Q?DMPexJl8/vVvx7Ms/hhNXMpmWfqzJA2nvyqZBW+osim7Q37+KQDw8ubjIP/v?= =?us-ascii?Q?rIYgg85R6JhdrmjOqHwO3s0O05BsdsNnc1i7piiwQLNi6wU6fXZX5beAMtUf?= =?us-ascii?Q?xIDJNW5IQcHO/IJohP3jd9OvoDExb+fAi6k298DLV2Ezz0TE+igBYK1SvI3w?= =?us-ascii?Q?EsCkzJFJWf7CiEvYAqPOVIsA10izEZXDjwib/flmX5H+OR8Nuys7y9jAGPL/?= =?us-ascii?Q?iQMa3sO5McJCoHSRLM0fa+5VZGPXHKSF4bYeD5ufAzxVLMgPQdz6XXy5PLTt?= =?us-ascii?Q?iu2V7rrfMjalbJu2Nrb4L9XirfFw+OD6JNP3Y+UmlP+O/Fo3me15JFoN4Y5g?= =?us-ascii?Q?YuPRXEkjwqHgUIbKPjDKc2oLzClzClbMXfpnxAMcsbBpxZG/lelf8wGWeSKA?= =?us-ascii?Q?p4rQAh2+g9/R7Tmo3+ISenjtt45rhoVoPuaKYXH6XSXezrZq7ukkxiw3ceKu?= =?us-ascii?Q?LtQwBrAVrFEH9uesUwrTEq2TMvxqB+Ty+STE1eapJ+1keBDQWhzbZ+3wT/vR?= =?us-ascii?Q?KkbkhVMeuptPFPS+8cB4lKBZVnR0BNrsfZTfTjUSxMrlgI6D7hdPiDJnyBpu?= =?us-ascii?Q?mP0IiA5mwwzKHE46T2To5R9HeUQRNXpGHt7fVhy9EJMaI5+5sa1VkdwAGgTk?= =?us-ascii?Q?2mGYuvMnc5SqSPHIX+ihpTjKbCqE5aR6yMxUPYjZtRpZ3o59i/lwvTrzm3ld?= =?us-ascii?Q?gTc77r48uu5BHDcVHJlLE/lo0Co+e3uKXZ1PfqESj5WDc+XDwGxNvAA+3kgF?= =?us-ascii?Q?OS4DpYLXHkaXusf/sJGZrjfj6pKOlNJXcpl3z3eJiqNyr8PO8zud7MAkN2ZG?= =?us-ascii?Q?eh17TMQnuAPMENWooNNXQqE94i2xGCSFiZ+3hfNQMk1aeJH+6yKr5QNetQGZ?= =?us-ascii?Q?7nzjE4FtAXF17Fugq8AxPRKYLPrs2ng05fhPG6WbsLChcG/bh7RARou4qGK7?= =?us-ascii?Q?zV019gxFnX6GLWD5uy0+v31WH54RC/Ms1xTRpqvno1dRkebpUUJYOiiLi9/K?= =?us-ascii?Q?m9jNzqczujPmjxnYIE9J/m1wJnBjhlChLzJ3cr64SxEDpOEkHy6vxeDLjHm7?= =?us-ascii?Q?M79Cbm5BxF4Euuw3jjRC5nl5OxY0urXqYY8aEXT9R2g/Txvq2KQWRxdDzQTx?= =?us-ascii?Q?qzJbMqrBiuSY0Y17K1QIBwDAMnSZd+49Bx4THe1kSwysKNC8pONKn7Z6/0X1?= =?us-ascii?Q?2BatyVIogZwWl9u40Clh7BY=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 81e82a98-419a-4c9c-dcef-08de12048904 X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:42.7936 (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: bdm8MxsEjuksvfhRTK7Arl0KBzVR6syIzpsgpUmpkHHqvxpJZnBEvYnSonVXiebLK3k9wET/rLJ7/kAH4Ej56A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7183 Content-Type: text/plain; charset="utf-8" Add helper dw_edma_selfirq_offsets() to query the physical addresses of status and clear registers for software-triggered IRQs. Signed-off-by: Koichiro Den --- drivers/dma/dw-edma/dw-edma-core.c | 23 ++++++++++++++++++++ drivers/pci/controller/dwc/pcie-designware.c | 1 + include/linux/dma/edma.h | 10 +++++++++ 3 files changed, 34 insertions(+) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index 7cf9e5e74a89..28cc319e224d 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -20,6 +20,7 @@ #include "dw-edma-core.h" #include "dw-edma-v0-core.h" #include "dw-hdma-v0-core.h" +#include "dw-edma-v0-regs.h" #include "../dmaengine.h" #include "../virt-dma.h" =20 @@ -903,6 +904,28 @@ static int dw_edma_irq_request(struct dw_edma *dw, return err; } =20 +int dw_edma_selfirq_offsets(struct dw_edma *dw, + resource_size_t *rd_status_off, + resource_size_t *rd_clear_off) +{ + struct dw_edma_chip *chip; + + if (!dw) + return -ENODEV; + + chip =3D dw->chip; + if (dw->chip->mf =3D=3D EDMA_MF_EDMA_LEGACY || dw->chip->mf =3D=3D EDMA_M= F_HDMA_NATIVE) + return -EOPNOTSUPP; + if (rd_status_off) + *rd_status_off =3D (uintptr_t)chip->reg_phys_addr + + offsetof(struct dw_edma_v0_regs, rd_int_status); + if (rd_clear_off) + *rd_clear_off =3D (uintptr_t)chip->reg_phys_addr + + offsetof(struct dw_edma_v0_regs, rd_int_clear); + return 0; +} +EXPORT_SYMBOL_GPL(dw_edma_selfirq_offsets); + int dw_edma_register_selfirq(struct dw_edma *dw, dw_edma_selfirq_fn fn, void *data) { diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/con= troller/dwc/pcie-designware.c index 89aad5a08928..8233cc26249f 100644 --- a/drivers/pci/controller/dwc/pcie-designware.c +++ b/drivers/pci/controller/dwc/pcie-designware.c @@ -162,6 +162,7 @@ int dw_pcie_get_resources(struct dw_pcie *pci) pci->edma.reg_base =3D devm_ioremap_resource(pci->dev, res); if (IS_ERR(pci->edma.reg_base)) return PTR_ERR(pci->edma.reg_base); + pci->edma.reg_phys_addr =3D res->start; } else if (pci->atu_size >=3D 2 * DEFAULT_DBI_DMA_OFFSET) { pci->edma.reg_base =3D pci->atu_base + DEFAULT_DBI_DMA_OFFSET; } diff --git a/include/linux/dma/edma.h b/include/linux/dma/edma.h index 42daf9a76b56..1f11b70e1b1a 100644 --- a/include/linux/dma/edma.h +++ b/include/linux/dma/edma.h @@ -85,6 +85,7 @@ struct dw_edma_chip { u32 flags; =20 void __iomem *reg_base; + resource_size_t reg_phys_addr; =20 u16 ll_wr_cnt; u16 ll_rd_cnt; @@ -107,6 +108,9 @@ typedef void (*dw_edma_selfirq_fn)(struct dw_edma *dw, = void *data); #if IS_REACHABLE(CONFIG_DW_EDMA) int dw_edma_probe(struct dw_edma_chip *chip); int dw_edma_remove(struct dw_edma_chip *chip); +int dw_edma_selfirq_offsets(struct dw_edma *dw, + resource_size_t *rd_status_off, + resource_size_t *rd_clear_off); int dw_edma_register_selfirq(struct dw_edma *dw, dw_edma_selfirq_fn fn, void *data); void dw_edma_unregister_selfirq(struct dw_edma *dw, @@ -121,6 +125,12 @@ static inline int dw_edma_remove(struct dw_edma_chip *= chip) { return 0; } +static inline int dw_edma_selfirq_offsets(struct dw_edma *dw, + resource_size_t *rd_status_off, + resource_size_t *rd_clear_off) +{ + return -EOPNOTSUPP; +} static inline int dw_edma_register_selfirq(struct dw_edma *dw, dw_edma_selfirq_fn fn, void *data) { --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11011003.outbound.protection.outlook.com [52.101.125.3]) (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 563592F9DA5; Thu, 23 Oct 2025 07:19:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.3 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203992; cv=fail; b=RDm0Kl9v+cJXUF5rczh2PnxQeeWRSPwXelUweRghimZbmyIoXNgZP0TszGZK1bgoYCfZoHkp4Xec+k8+l1HupjSNwrGeDTUQwOnOnPSZcdY/W06bqWBurZ1DiLFaAKCh34MrDeqNc8fLfBdWE5FyG1w1mH2SGp8bzTe3f5fuUgY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203992; c=relaxed/simple; bh=9QRsXnm9TZ1FPYI6O0ZyB8ryk2K9BpVI92RTPNHJ4Xo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=RbxvNYcNIGslBh/yTYUeiQterpgK4oWFqy8rgyKrO122xZL9Dml9iqRw3ZNFo2uQXmShO8ETdIAcAM2Hhb7jAWQ5cdc2WO5FGtFWnNRHSr4TelvCM6pUkYbrte/PfYImVbaRHUBT7Kqedqmgqqgm6mU1iVwWbZeuUSPRpG0Ouog= 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=rv3TFjKc; arc=fail smtp.client-ip=52.101.125.3 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="rv3TFjKc" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=riPnuRYh8e2dbZgzl0ENnl+TufQjKH/1kyR0OnPJj49gL95fJ9xYWXKSW91J9h97je+2jbVMMNQv5HgB0w71Pn70j+rSR+kc11h64LqTZWykh6FqXM2AU0eiJvzhh+KIRANOuIbTgApid8UwQ003psI43mTh3WT89NXRNtBe9apRx+QMTmw2fs6sjkYmnz4RfpU09jkMfcnejpKqPTk3hrqhh7FU6GmsXYoU67w5lYt3KCPAxMEKkYWTU9Wdy6HlAdM1W27O6nMFyCuvfbua5Lbb958vg9V+eXJCCZTe99zhGKJGO5Adjg7QdAZhBvJgfXlGMyoadNjjwBhpjuwv9g== 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=6YJfiAfJsTrdEykpglInsYFblZYIcl7L6HNhA+fXGa8=; b=M9RBFl+VrFX0yBiyICgNjejjJgmYuiNnc9bYJ82uO/MR9JIiTpi+A/X6ExvMioz5ONgEOnoITzF81V610MdKRANI8h0yZz7vBp3UqIgbsqmiNsjhY1Gz/IPLIrpCl4LPYmw+qHFjbGlqkCVTvrnzvqx+MclnMVE75H1ATyiOnx/7qbKq+ya2gYF+6U5hnL/MRfcdyikFZtGDP/Xv8Zldpfko5Ps4JxqIcSAA80f3xH+5gb83OLLZPcCUn1TonWt2bL/d/z8PeMfbBvYb4E6v3/+otEZQErFkZiLOSW1BydkX0NYYi9QIQ6lU5tRm31fFPXBt3LAiZ7YvIM9L3pxjzg== 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=6YJfiAfJsTrdEykpglInsYFblZYIcl7L6HNhA+fXGa8=; b=rv3TFjKcDPCHU11aC6A/CyRxQ/rP6WFKiw6d0hPeT4bYuXGqdRggn6n2XWhyLd/DPvoBOxS8WfKMkJ9CPAMAYYmW5o642SspxGmIMmorsmqt9IKmYy3awF5K+L1VDhCMf6lC0zfqOchAwjyQ4Q7UUqVECUNGbuITMiR4gWHBX7c= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by OS7P286MB7183.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:456::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:44 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:44 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 17/25] dmaengine: dw-edma: Add dw_edma_find_by_child() helper Date: Thu, 23 Oct 2025 16:19:08 +0900 Message-ID: <20251023071916.901355-18-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P286CA0087.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:369::15) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|OS7P286MB7183:EE_ X-MS-Office365-Filtering-Correlation-Id: 2f68d9b6-6a25-405f-12cc-08de12048a1a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?dU48aVS77ZM1ny+xojvSyJb72Zvto5tjGvh4uyfMRvXDloO3Tv4ec4tozuUT?= =?us-ascii?Q?eKaw7BprNl4CTUHJpgZoHHm1DYqE2N4jnW77zQCkZcabQ3aTAutAepL9HV2B?= =?us-ascii?Q?8aXdrgDfOSAsjCGetJ9BqdbK0vCLZv4OsyyIa2rTdrVjp1jkAZvE1re0CiK8?= =?us-ascii?Q?zpq+XPgB8KxlZtgWRI7mF6gOx8EXL+dFGMxdDJWBrX2t6jh4CAGTBld6wGUU?= =?us-ascii?Q?gWZZeEzO7IQ3XfSHqZKEpTfFXx5aERYVCRzLfm7/0HgLKMXWTrRixY++0eqo?= =?us-ascii?Q?JEpshmtGL5nhxJJ8QWJSLDwcSkF9QZxhXO3v9XTcC0y/OD/cg/aMEtAtgohZ?= =?us-ascii?Q?3oWng+bitGjbAvOzPFT0UOR6VmknSEEIvYFv3YPVTJlAf+MbnO5SGEORi8bM?= =?us-ascii?Q?dfVtguYnCPnWGTIfsTv1q4nJIpcTCZtCzt+M5IqTv6ylQyp0BpluvP2bTOAA?= =?us-ascii?Q?2GKKTQljck8CfBBW60J5f0dBS+UrRh4itx2ZbSZ5F1tSLMdJzjO8sTBi4s7v?= =?us-ascii?Q?ydI1XXtmJCn/B51bgdRQPu/rcfbHhucd7jHedXHeP1TBeN26mRf1DYMWgdTU?= =?us-ascii?Q?yO0L3IqSxDwtsk26qYoS36DicVCzLhtBbQBJtKxubyWYLIMEQttq9KQZHcLm?= =?us-ascii?Q?dv2EsqsLfYN1QEczDd9UocsLY1WecUMauxJ/bYcVqVUlM+YTcOw6EwkgSNG+?= =?us-ascii?Q?MALOhjsE4JkKpYsNzczPT8/mBJURrmXzULa8UssKzGrMwC7NVb95dhB24v54?= =?us-ascii?Q?fzCa3dXYyTYxoA7kbJIGzzNs+bTPKNd9+r7SzXw1nyYRY9QFd4WJ0Ts5r7I3?= =?us-ascii?Q?yV7YdAVYCDGoypiRJHIBisybbacmi4SZu+FEyqpJvZ9lpmAAfKu9mxLkDJAe?= =?us-ascii?Q?NBB3uLkVpG7XemV4B/tpivR2q0jPseBDwMiVyNIdzQZO7oyOdk6/QlQcTw5R?= =?us-ascii?Q?Jgfl1PZ7KRBxXoMSsBJHgNae/C4abqsh1WIEn+Sl7kQK7JRvGtGtUco131ku?= =?us-ascii?Q?ITZSaMRO8eVuScIMma2OFwns4KjukKAMrtf0x40oaGRL//N6T86bjmD0GdGv?= =?us-ascii?Q?PUN8NEBoXvAcW9XxWI3lS+10S5YZall/BvkYbPWF7Wzx74bYozk60HiLCFzf?= =?us-ascii?Q?y1kdUs2LWNSEf4NIcI1xfcv9oa4sTAuZBQsqAPqzcRvjxI6lORWZ8wHpL8CR?= =?us-ascii?Q?xnjjpNwAxba8ZQ4tMaRc3wGeQRXXGeTFY0xeh6lCNLlwDhCJaZ4pnW0fGWJb?= =?us-ascii?Q?wPvcZJxXRk8OxQ55Pq5LbhbejePkCUMSzPlqFHxzJuRw5cbUUaG+4lcqRt+z?= =?us-ascii?Q?vA5+xxsU72YUlOl459+BamQpDhmy1QyKinUruIWOBB2T70g0vnxGjctbffnO?= =?us-ascii?Q?wkmdEwtEMVJ5I5jw/MoxKabH3oF18wgK2fDbIOzzoYGKUSSM3SBCswFwuhym?= =?us-ascii?Q?HLYtPDX/UUKDaVVuPxyvNTg9CAdaIiTQ?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?n7v2U5170WyWSShpA0H7iW20xSHh/0RP2mYxmuyU0qRzG4G7Ci5PeOjIhlA8?= =?us-ascii?Q?LLJ9aHVq4M1GzYYSm+AeHNDWR1+grC9U91o47BgHR1lv+zwU/Ciap2jL5oV4?= =?us-ascii?Q?Htnyh/CYDIPfT1C+v6O1I63A1CecdMMne9F/5UwRtL/e4pdmFUsqMvEhXdOi?= =?us-ascii?Q?z31a0OChQ+fWu1Go5sBeQN/6mQkQ0PQNdzMlYXhyPRqUU19XExR854ujmN1T?= =?us-ascii?Q?qnxFbIv2ymJx6tqqv9AewnzWLMvHc4LBLajo2AHOfPnu5k8SjVQlEZd7jOY0?= =?us-ascii?Q?0IZ4ZdzS2pUswN5ThGb61QhHMZJa5YRy/xsA1lxC6mXMJcdZ3IZkTt68s1sJ?= =?us-ascii?Q?kFO1Fu1cn882/+BC+ZgUFGgi9mRKDmFuqUjgoG1EM6qjU/fOCTXvGww5W+wL?= =?us-ascii?Q?9NoaPY6KANFOD8MPBKlhUzCARAUphAqzzxU1K1f7n6TGsvimxGIG5MxaQwln?= =?us-ascii?Q?ibpQ2whFCkcFtFr6sJ5vMAad1NWWGoJqKtTLbqXk3TNj3ygWDh6QchnSIAkP?= =?us-ascii?Q?plxvgaqP72GhmVaYyalkNkyKVdcBoHzFpuZp80bI0jdI6Ri4+2sjSJPpf4FT?= =?us-ascii?Q?Gfpp8AjuWw8W8u6ZeOFTDGWitTJtiGEIgbKhMPYh2Z8jqcW2UuuGATlMzNVY?= =?us-ascii?Q?Z0sz5HnZoUF3nDI4gOpU30kc/Wt4KDeLh3ZS5ritJ5ZWP5MLanlp9rioWOzf?= =?us-ascii?Q?0+sSxx8sEjgfWZYXLiYygXzxYB7kfD699Ug6MH02t/jBvLWyNaEuJLd06pl4?= =?us-ascii?Q?qzkk1t22LiqX7xsgODZ5u5A5HiwOl2eKKvgVZLO+eLUMtChNyjosPABxjqv5?= =?us-ascii?Q?lyhoCsaISfIccLQ6HCazYCgahmXjW/sLpeUeZ9Dk0nbF/110RSgZ1yfVG/wR?= =?us-ascii?Q?V2dl+vrarc8CH+9vY5+PNlxqxhhiy4dbffrkDyzsBVH6p3NZNOMOraay/OuB?= =?us-ascii?Q?vS22h/+HfUfQ0VS6g9E0ONWKfdGpF5DRsq8I4S5I0srTw1pm6/qtK1lOr6pt?= =?us-ascii?Q?utcXlw05D0FpR4iqb5KAo/h2c7lEdaaXnzReNTnWrQwNfl3/mVRIzf7CDZJo?= =?us-ascii?Q?pR4qmajjiPUBj1/LbYvysCoaEdXdbMofXTUIzYa8aV9K63geulc/X977lO14?= =?us-ascii?Q?D3+s13j4mOtchEh4cLVlXI235yj7bdNjoAgmNe4H/orI4b0hhofSAdBNq7qY?= =?us-ascii?Q?hgJ9hZCqSubgVzf86VNl6CH1Egxy6RxMwOPJyM3cTqEOyxGdCabDep1QdvMr?= =?us-ascii?Q?6ZWG985N+6cAL9oOl9C70KjxfBYup/xWpfLLOMtWHKDqPkb2hnPuP6UIhwW/?= =?us-ascii?Q?z8PgHNVQXk09O7WwMTv9VjcybGBPKD8Gfw3tLhif4QuWe7UKz2xxmAOkzwRz?= =?us-ascii?Q?+d+SFfDryTq1pZpJ/jIitJvujbL42o6EWF7+4HT3tV4DyKKwK67jQL6n4cgU?= =?us-ascii?Q?tC0wC3MJi0VMK6iiniVFOE1dgFy70w3w+16fAonF6S9WuwtH/T369Fd0aR09?= =?us-ascii?Q?cv9iCtJhXhEbkLexpEL8iYTvNQZOOfc+S1FQ/IR/OazK7y/ZZZOO8MWFaRrH?= =?us-ascii?Q?ouCv15FeWb9hUmG7mAp+bh2LYged13NHs/P0YwJPs4Cc/Zs49qXJ0T4jJ+Bt?= =?us-ascii?Q?kRr4sQ0jc37+9keEuGAWMn4=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 2f68d9b6-6a25-405f-12cc-08de12048a1a X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:44.0401 (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: Qrmvbl9NuOHBKNRMhX7vN6wBZZE7nYpmh/iAs7oV3qV2HaJ9AG6wLIkcqLTSWSKVSCFb/42XGwizpfHkqjX3Nw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7183 Content-Type: text/plain; charset="utf-8" Add a helper to locate a dw_edma instance by its child device pointer. Used by PCI endpoint functions to locate the shared eDMA controller. Signed-off-by: Koichiro Den --- drivers/dma/dw-edma/dw-edma-core.c | 26 ++++++++++++++++++++++++++ drivers/dma/dw-edma/dw-edma-core.h | 2 ++ include/linux/dma/edma.h | 5 +++++ 3 files changed, 33 insertions(+) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index 28cc319e224d..6c7495504456 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -24,6 +24,9 @@ #include "../dmaengine.h" #include "../virt-dma.h" =20 +static DEFINE_MUTEX(dw_edma_list_lock); +static LIST_HEAD(dw_edma_list); + static inline struct dw_edma_desc *vd2dw_edma_desc(struct virt_dma_desc *vd) { @@ -964,6 +967,22 @@ void dw_edma_unregister_selfirq(struct dw_edma *dw, } EXPORT_SYMBOL_GPL(dw_edma_unregister_selfirq); =20 +struct dw_edma *dw_edma_find_by_child(struct device *child) +{ + struct dw_edma *dw; + + if (!child) + return NULL; + + guard(mutex)(&dw_edma_list_lock); + list_for_each_entry(dw, &dw_edma_list, node) + if (child->parent =3D=3D dw->dma.dev) + return dw; + + return NULL; +} +EXPORT_SYMBOL_GPL(dw_edma_find_by_child); + int dw_edma_probe(struct dw_edma_chip *chip) { struct device *dev; @@ -1035,6 +1054,10 @@ int dw_edma_probe(struct dw_edma_chip *chip) =20 chip->dw =3D dw; =20 + INIT_LIST_HEAD(&dw->node); + guard(mutex)(&dw_edma_list_lock); + list_add_tail(&dw->node, &dw_edma_list); + return 0; =20 err_irq_free: @@ -1080,6 +1103,9 @@ int dw_edma_remove(struct dw_edma_chip *chip) list_del(&chan->vc.chan.device_node); } =20 + guard(mutex)(&dw_edma_list_lock); + list_del(&dw->node); + return 0; } EXPORT_SYMBOL_GPL(dw_edma_remove); diff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-ed= ma-core.h index 7d7dd9f13863..249d7e153cbf 100644 --- a/drivers/dma/dw-edma/dw-edma-core.h +++ b/drivers/dma/dw-edma/dw-edma-core.h @@ -122,6 +122,8 @@ struct dw_edma { =20 struct list_head selfirq_handlers; spinlock_t selfirq_lock; + + struct list_head node; }; =20 typedef void (*dw_edma_handler_t)(struct dw_edma_chan *); diff --git a/include/linux/dma/edma.h b/include/linux/dma/edma.h index 1f11b70e1b1a..abc59ffde62c 100644 --- a/include/linux/dma/edma.h +++ b/include/linux/dma/edma.h @@ -115,6 +115,7 @@ int dw_edma_register_selfirq(struct dw_edma *dw, dw_edma_selfirq_fn fn, void *data); void dw_edma_unregister_selfirq(struct dw_edma *dw, dw_edma_selfirq_fn fn, void *data); +struct dw_edma *dw_edma_find_by_child(struct device *child); #else static inline int dw_edma_probe(struct dw_edma_chip *chip) { @@ -141,6 +142,10 @@ static inline void dw_edma_unregister_selfirq(struct d= w_edma *dw, dw_edma_selfirq_fn fn, void *data) { } +struct dw_edma *dw_edma_find_by_child(struct device *child) +{ + return NULL; +} #endif /* CONFIG_DW_EDMA */ =20 #endif /* _DW_EDMA_H */ --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11011003.outbound.protection.outlook.com [52.101.125.3]) (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 AAC572FCC04; Thu, 23 Oct 2025 07:19:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.3 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203994; cv=fail; b=NJMRFA/9vMLM6pf3xNZeNxIYJU9jSlo1V/irOrwf7idyHcSsJQyQoMmPtlfIAvVZwp1qtESk4ae4ny5iYIcwIpUgTpUgV+oErB1FhD13OyVmMee7XQnxkmpilaXwOJBf1qtWUgP8Y0aVIzsvnQu/td23tR0brxGfCJn+Yi8ElJY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203994; c=relaxed/simple; bh=5wPpbTVhuuvQ8x68E3FE3zT5J7V9NhSuy5vAXiL0vrA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=n2iHoJVFVTQ/7CpIaXYevBtJgmYQ1KbeTktlnZzM6kYzs7SCW34D3tjkMuEi/SNxwP3RhI/eQVw5aEZaqthZfyiPS+nwPJRRA4LYLQYCLlScI6LwTI8QNgz+Is9m1IWUnq+0J4B30c2SfQFtPb6BaOCBybmguz+a9TJM7YCcs2A= 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=L+BDCzpX; arc=fail smtp.client-ip=52.101.125.3 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="L+BDCzpX" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wm/ptE7nGIge5x/Mnv/BjWxilWirm2hsoQM/m0+edplXTiu0fWVCDM5P58m1dLPgIZO7SYg5EDKA2VA0gs6UAC+lEUNt6I+uU+W680pzJG4DY3cqeBZrkxs8e87HDvMGUjy0yYsueNQqqwvrkzDxmLar2c/2Qlj0q1JE+u7l2Y+2XoOHGNvMSGVYB2RBEo3Oxzdr6iRSLlV+FS1gdopDsor3Qz+V7Abe0Y8UDkqRsY9pZ+83xALtbW133xra04AoYZ433J8i66yYaHGbKoUYfqEQyP9to+eDW1Wg8pL9Yy+q8A9twp1W3m8zc6jW9It8oeeOjVmtFV4bMP9aQGwvhw== 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=vLAUp4WET7hRSLjxhkwYZVQZ1yL7mW6B4jmZnjtcnpM=; b=sUrkgGlPOQTy53w41z+ho0+LrykCFjQbm2vIDyATV3qxM5JTXPHPmgEYNk2nCOkALrfOE7VcAv0Wn78BEkcJLGEXcDb6JjlpoZaVaxAFQ1EMaMjrMrvXx5Zaw0ia+5tXLZs60avV1RRFnBWz4opu6qUB2owetbQpApvPybd1KwijrM0N3fn55yP+OEbTocf8Ky0UfxNFr5PUqIYSzEqDxt4cRymIM9HLDKKuskVaCK9y3PNpcMf6XaJSRYNrUpe21hB6IF1gbWRe607hRZs9M+eiuOWF3fW33gtFhKPb1wPLYFngeLDv13a43gkFE51cSJlOVx2x2GzTjzSLHh1UHw== 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=vLAUp4WET7hRSLjxhkwYZVQZ1yL7mW6B4jmZnjtcnpM=; b=L+BDCzpX9k8UV2JK6OmckOs/5fSW7HsapQxAb77mrvKBWaO+sL3ji86+nVtocd7HjFgsMDEyF6effFzE+L4Zn1AvjDpe/LqJTqNyY7/sQlA085uXqIlAIlWohjDcVTJiK+TjWSEbCYaT/IyeoffKNYdyYsZ0NKDcoiPxY37ZrHo= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by OS7P286MB7183.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:456::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:45 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:45 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 18/25] NTB: core: Add .get_pci_epc() to ntb_dev_ops Date: Thu, 23 Oct 2025 16:19:09 +0900 Message-ID: <20251023071916.901355-19-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0249.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:456::7) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|OS7P286MB7183:EE_ X-MS-Office365-Filtering-Correlation-Id: fa59d1b1-7b6c-4ec1-f2ac-08de12048ac5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?HTLTdXUnknkd+c5X/1Ldonz6auRMnTq7pweBq9/TbrgvRM9yG0zSTjC9Yop3?= =?us-ascii?Q?fP/XzUMLin0QjEi7UjSls/kERo4XSl45gJCRe9EXzHjCACj9c3ar3z71LL+U?= =?us-ascii?Q?jO3r/Ruu6GQ5EczysoLelOIW+YtG9guZtl5dU4JcjdLO3IAn7pByFdPNzBaw?= =?us-ascii?Q?/H6qYtgs2V3NRRlJSp3oRZXmbDiKKP+7yRg41Jk7lc8NySljx92l2IAYiY/n?= =?us-ascii?Q?L4qvHp5nVvelanIS5GtkJamc9Auo6RlPoiDNybgrq6CCGM/lEaye3Sjuxzd4?= =?us-ascii?Q?jBqAJd4k2wwIUfkWQLH05dvASxR+6r+TAJd/wuSiCxIQHZOJ9MwHZl6gyxKf?= =?us-ascii?Q?KROBBXn3jyg11EPkfbWpBtYq2dmUUvBwiZwpZ3xU1x9ek5hikqbMaq1jrfc4?= =?us-ascii?Q?kBm/DEXMYwwH+cjnVUBImpxGRjwW5k2rs9HweV27d7TwavMFQTGandXiSFqb?= =?us-ascii?Q?CHL3iKzMUKjSQB2WzmdqHNx6Oe0INiG6n05kig+XRRk7ODTyju8HqgzcATaE?= =?us-ascii?Q?bm/b8KuZqY7DgbVlO0+MCQ0esVSIfEYu8LU6JySgcDfu00YJtKf3L9ZPDqHQ?= =?us-ascii?Q?RUMKo0Bfykav9NiqgMrvqekSq4CSN44T9UposaT27ocacOtSMU3DJEWovdDq?= =?us-ascii?Q?82TpZO+kpIstWtqGn4CddeuSk2PbnegpkSIQFu+F1QtC8uLrLiLCelbKbI1K?= =?us-ascii?Q?cIOh3ZTHtAvyrWEUFliqz1m8LZ0Jc3p2Ba8/1353aVzZ9aSQ+DIjkQ7BFmm2?= =?us-ascii?Q?AjWxBnVaRZDRGKUK7/lk/OFOKNUL6yVf6+MhecY1DFvOHFuTtY/TEXlDJl6H?= =?us-ascii?Q?jbSbc9sO9zjos6Mvbp3qJ46myzC+g1LLps3cboQL6sEmFDkjnTsF8OzVkew/?= =?us-ascii?Q?4Ay2Yia7JDcxsqLQoLuALSnie0TTOACpbV8v26Dq08m0yfRJGLh4PGeF4IxK?= =?us-ascii?Q?L9Jwln3D0nFGH9KhhgVYj720WPMyDCwfYK0iQ0bqBnwb1LmQJF9AALQuAvR6?= =?us-ascii?Q?M9g+7N4i2PaBwlv40NI4s2vxiLmBZLoJmaBfY2TdgTbO+HacY5wOWhEROjtT?= =?us-ascii?Q?hu26quyztSxprFYAw6UcvOVff7sxKmMoHb99JFvn6dbNkjmjyzBVIizr7XcQ?= =?us-ascii?Q?vPZQq4kC6tNNML+WT8EaziDCzVhrrPkTueXFxdgUWHIbu/bmLyrdc2AR/+vd?= =?us-ascii?Q?7SWhWhkzPynW8w+72LTYVDz+zLQXOlPfMVR3f3PZHYqE6Yy3UL18c4WtvkXV?= =?us-ascii?Q?qBNaWpP8jzElQmEHvyKfRu7hK2gloifi/rSJuYl6a9ZGBDrSvm6kjJBOyEsa?= =?us-ascii?Q?uzl6MB0/2SdcUrp1kOnB+zkRxw0e8FDsPHgviXQUoK3HPR3UPj5I+1WwoE9A?= =?us-ascii?Q?AjI7m2czlakGbQif9+wxOuqZINPYZKBXe23QVxyWHS1CvVyqkWaM4qHUKcwI?= =?us-ascii?Q?bSZm1LV0N9aiSFIx/0RugY6z0mELkyj/?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?7e0AiRySZ9SFnXtFz64JZniXyhIiNt2FTffJu7/0OhYcMwMfuA8+Cv456Vx0?= =?us-ascii?Q?+sMzRhENNmRUcKKgJkL46fI61h3l0+WEV4x0830fDQxd6Kz8sGymDAT1uefI?= =?us-ascii?Q?z7igjFQft2tWtzl0MtYhoxdyZdCiWLSYKdYq+Yh1ro7VNdiMO4FXizAtVPPH?= =?us-ascii?Q?B17iOBASq83An7VRvxj8rl4B1Fh5UmpYT/f2t9cNDLm0HobmEEsEudkgaiMX?= =?us-ascii?Q?CXia/R4UqSqJwo1dI45x63zdBjmz4d+gq3arrXTc2m2zrVGXkGwVuV1Hn/DT?= =?us-ascii?Q?GwQRgHNNcacShhhs7XIvK83DcmJxw53p597KAnunMzzJuy+ar1YXFIjeQhkL?= =?us-ascii?Q?JUNbwo2GTht67te3qqqie1ClOZFB5l12Z3Xgrx5dyxzhfJu6woW3o9y6gOQd?= =?us-ascii?Q?FW+sOM6vIJiILCuLrW+4kW9EofCGIvcR+B9b7md/DwfpfBlEDS5kx6NQAWnm?= =?us-ascii?Q?HG7lS9TDV/3h1mhcFNwuo8Z/xcQveR3+7LEm0v4uT6g8q0wm08dX8grrq1lb?= =?us-ascii?Q?RjX3iTz7g2PcSJBm0bjzpbDi8SQac44y151iRcOUUO7nbWrUBArEu6q+BGC1?= =?us-ascii?Q?zrl+bOzLzyRW56rle1TaKCE/Cy6m43TEQtQqTPbFW0ght9gs7aHyPTG28g3D?= =?us-ascii?Q?ZXWaRI4a+5TUst46IGSRFvSX56XzIUJjnW4h3Gr/7z+UKHPc0ToK26LCRSxO?= =?us-ascii?Q?7PAbN8rRiTMG+W22EpSKmd/luiF4Hm7xbROxnhU706VOz65haeu4rJV/P5P5?= =?us-ascii?Q?2aBuik7i08EifL4tTq5qpeL0RmnBmoyWhmXABf5HBG6rFuTjgm2BOB7Yg22r?= =?us-ascii?Q?n46vXxmacNaQHzFO8rmuDiI59nx29cubSmN1qgLLEnUZGnWvHyYIC+J8W9LD?= =?us-ascii?Q?yvoJhSG4GNWwSWnNXS0J4owBRaQyg4MTx5S4zq1ea7Rz89EcYniF5mTdG4Yc?= =?us-ascii?Q?fesEXBc2EC7Mh5VsOmDLsyslgmdQi2+iVrjOYez9kTDAB/qkW94sy+0X288p?= =?us-ascii?Q?Uk+mRQRG4STVeoN4Efi34snXnkoV1nAlgBD99Rjgoou6wAwlxpef7VGY0tBB?= =?us-ascii?Q?LAB4RA/qa6KUrgNgHHJfb/vH4SYIfxOLGa1Bvw3e5BDEdGYCtSVobA601xyI?= =?us-ascii?Q?3kg+3qcI7JBg1fTRP+yguWqKLXAKaNfOQ6U+OTtWyIeINKxOcgELAm2+nFZa?= =?us-ascii?Q?9h9BZjJqc/tzi3V2NZzlMMoLO9VqF6obvPirbvYvP4gU9rK6bmMkAFL14hXY?= =?us-ascii?Q?q01AY/4LwzsWjWPybJt8Lbbfrg4KUJ4kxv1iakX2szVZV5bXTaFpUVYT9khv?= =?us-ascii?Q?6CTuoqODANtox+5g8vHfs7urX7XxUq/UROKCYlSmZNzxKzf7XbdIqlfpUZ8N?= =?us-ascii?Q?Q/EIkK/MIxtXKdgFUHH1PkWD+LJFx3+tMjldxcLtlXZe9Kqcongs0tQUzmmu?= =?us-ascii?Q?OhBcLOMPHgNjda+4KRy+mkDt5WzrMOfjHp+VTg/kjW5PtN3ThnC6GUzzZqVo?= =?us-ascii?Q?YKvB3+o8K4yQUOe12zAAahXrK+mWyAv/kJNwWJD2ooW+XK0hHWrygXPgIwM1?= =?us-ascii?Q?0YgTCNSnCHL/8oMsPXYa9wg6MCFTQZmH4QYvhYCfbW1hHcSZT3olT8Zz3h8+?= =?us-ascii?Q?JiSBuUNz9PksgPva7wuORUQ=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: fa59d1b1-7b6c-4ec1-f2ac-08de12048ac5 X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:45.1573 (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: EKQSkP+0inSdJyKCig6W3ZB2MD4pv9Kb+FbTq8fL0Zck+F6CQmUkKji99Jt3/+Dxz5uHk036aOPxZz3eA4pk0A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7183 Content-Type: text/plain; charset="utf-8" Add an optional get_pci_epc() callback to retrieve the underlying pci_epc device associated with the NTB implementation. Signed-off-by: Koichiro Den --- drivers/ntb/hw/epf/ntb_hw_epf.c | 11 +---------- include/linux/ntb.h | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/drivers/ntb/hw/epf/ntb_hw_epf.c b/drivers/ntb/hw/epf/ntb_hw_ep= f.c index a3ec411bfe49..d55ce6b0fad4 100644 --- a/drivers/ntb/hw/epf/ntb_hw_epf.c +++ b/drivers/ntb/hw/epf/ntb_hw_epf.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include =20 @@ -49,16 +50,6 @@ =20 #define NTB_EPF_COMMAND_TIMEOUT 1000 /* 1 Sec */ =20 -enum pci_barno { - NO_BAR =3D -1, - BAR_0, - BAR_1, - BAR_2, - BAR_3, - BAR_4, - BAR_5, -}; - enum epf_ntb_bar { BAR_CONFIG, BAR_PEER_SPAD, diff --git a/include/linux/ntb.h b/include/linux/ntb.h index dc5aab43abc2..9f819c7383a3 100644 --- a/include/linux/ntb.h +++ b/include/linux/ntb.h @@ -59,11 +59,13 @@ #include #include #include +#include =20 struct ntb_client; struct ntb_dev; struct ntb_msi; struct pci_dev; +struct pci_epc; =20 /** * enum ntb_topo - NTB connection topology @@ -256,6 +258,7 @@ static inline int ntb_ctx_ops_is_valid(const struct ntb= _ctx_ops *ops) * @msg_clear_mask: See ntb_msg_clear_mask(). * @msg_read: See ntb_msg_read(). * @peer_msg_write: See ntb_peer_msg_write(). + * @get_pci_epc: See ntb_get_pci_epc(). */ struct ntb_dev_ops { int (*port_number)(struct ntb_dev *ntb); @@ -331,6 +334,7 @@ struct ntb_dev_ops { int (*msg_clear_mask)(struct ntb_dev *ntb, u64 mask_bits); u32 (*msg_read)(struct ntb_dev *ntb, int *pidx, int midx); int (*peer_msg_write)(struct ntb_dev *ntb, int pidx, int midx, u32 msg); + struct pci_epc *(*get_pci_epc)(struct ntb_dev *ntb); }; =20 static inline int ntb_dev_ops_is_valid(const struct ntb_dev_ops *ops) @@ -393,6 +397,9 @@ static inline int ntb_dev_ops_is_valid(const struct ntb= _dev_ops *ops) /* !ops->msg_clear_mask =3D=3D !ops->msg_count && */ !ops->msg_read =3D=3D !ops->msg_count && !ops->peer_msg_write =3D=3D !ops->msg_count && + + /* Miscellaneous optional callbacks */ + /* ops->get_pci_epc && */ 1; } =20 @@ -1567,6 +1574,21 @@ static inline int ntb_peer_msg_write(struct ntb_dev = *ntb, int pidx, int midx, return ntb->ops->peer_msg_write(ntb, pidx, midx, msg); } =20 +/** + * ntb_get_pci_epc() - get backing PCI endpoint controller if possible. + * @ntb: NTB device context. + * + * Get the backing PCI endpoint controller representation. + * + * Return: The pointer of pci_epc instance if possible. or %NULL if not. + */ +static inline struct pci_epc __maybe_unused *ntb_get_pci_epc(struct ntb_de= v *ntb) +{ + if (!ntb->ops->get_pci_epc) + return NULL; + return ntb->ops->get_pci_epc(ntb); +} + /** * ntb_peer_resource_idx() - get a resource index for a given peer idx * @ntb: NTB device context. --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010001.outbound.protection.outlook.com [52.101.229.1]) (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 707A52F7ADC; Thu, 23 Oct 2025 07:19:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.1 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203991; cv=fail; b=py9kQN9O9I/K7/KM2bboY7+jvFgzFrcoXzY8G2EUnKbuPZFhjRNECqD38D8DiGlNro48xEXK0w4TmpUGs6nH6FoHx6Bqna/CTlb+SREjphg0KnjcmGIV53HuC3z43Y6iDc9OaYV7HZwoHnGxFYnce58CjWJYE3crlI8zmlkQyTQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203991; c=relaxed/simple; bh=9BayqkwdMFUuFFNoiZModBX6MXTHNhopW26mdqJGZ2s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=usXMVG4XVfvM0Rfwm7zwiS++3C+PeLzUfswcnlucMlOGeQ9NNKThd/+2+OJf0aEYqo9SrcuAjhBUBB7mQiPR3x3BtoAlsXC3nz2eYKK/OBSOl16yJrURuLdWPxLbkI1X2/rCrCK0l9a613tJy7pUs3pH6hRxANhZnzRLDzqw3Cs= 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=LqhpEFBm; arc=fail smtp.client-ip=52.101.229.1 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="LqhpEFBm" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CIYOzuQs9ElWRSVM2P5DZwcKPWphKU168Nv8EadaGlm9Qg/Nmh6mZmJ7e5DKqB+ElWhBCezjviT99qPJQv/5U5Q1XslUtNau4r3PAJHw2xetRIsnu+pFCUpbrQAlcU5k7F985Qc5RhvQtXGcz3/RT7d3zQNWNJzNe1pUOg2lOhhrTuCBtdCs2ajERG7teh38cuhHXgRE8FDHhIQf2lmdxROtH9Zo982vQc/luVdOWtEazzyKoyyVEyHcbseC5yTtGDylwmCFeZ2wtW7k9v5MbHa7CN/m8zvDjnbV2J4xjF0SmPOeALhFUdoaq1QaFLpBK1UPfNxID+qRQ0JESuPmNg== 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=yRwwL4Ol4YYczw73Inc3X9+xfWPyI16h+gL0z2OJlHU=; b=RPymhlsnGSH38E6ShLJqJ2Xjwga0lRCNrsSco+BxY9d1wtRxb1StWFmxW19QSFVeeWHnb6mWUWMWMpv0bVkrp6+HZt5H8451Gg4YGZJHqA138nWxfH9kTqSZMaNd9Aczo6EsfoZjOyL0wnkKuSB5VhipXsjuGOicPuomPU5kqMXdvsgwjVS15kKJ0wLF6DxH0y91jaOXEJX0BF1Jzy+fixCRvz+ilp5D21e5I6VDmpkftXdunQkr+aUs+uYfyGnvVyrLqZRlaVYztxyuLrhMq7iQr7XEunDXv8F3uldxFkA3oI+NVIBTN8CGeQXH+LF+b6sCQf8D3Pv7lyME9TYG3w== 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=yRwwL4Ol4YYczw73Inc3X9+xfWPyI16h+gL0z2OJlHU=; b=LqhpEFBmrUuUK75H0iJ6IOmyGQ9AjT3w4KBSNw2EyOw1KnWayDmXo1xHGnjchDsLRNfsn2CMQV2gLQ8U9EeMD/2jaB2T8UIXur5CoFJq61oPNCGZkGRRsC426+K5B5ZLV5LIh7W4HIH2eb6UoydtXhzVJ7BTs/uH6XRcHvJlP3E= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by TYRP286MB4555.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:1b0::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:46 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:46 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 19/25] NTB: epf: vntb: Implement .get_pci_epc() callback Date: Thu, 23 Oct 2025 16:19:10 +0900 Message-ID: <20251023071916.901355-20-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0074.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:31a::19) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|TYRP286MB4555:EE_ X-MS-Office365-Filtering-Correlation-Id: 313a7e19-4abd-4677-af85-08de12048b77 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|10070799003|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?PS42BXTFpDdtyyXgcy5ue9cE38JpvoDKUhMkzWeJlw3yFJ8apC7Eod+n4wD5?= =?us-ascii?Q?zl6AMzN7o1GMGitEC+zSFia3ZyPXafVpKfNF9kpXOsrb0hCRJliuSo03YDU4?= =?us-ascii?Q?LbWBIOHjNh9KssZ+Ib9SR4bVndryROj5wHhErjd5zAWcdeOnMUrZU3+9oGuq?= =?us-ascii?Q?eN0xxk6Ot2n9so5cWE3BzcEU9hYvfa68xte6d4G75cqi4K2WQByOknuqa/K3?= =?us-ascii?Q?ZxDOi/K1c7erNYg0y+UXgw+gjzCE+Jfc9uH7Fi+a+D8B1Ixh+1EmehtVaubX?= =?us-ascii?Q?HrDQU9mCMgbehwwRqITqddr2n9ElFilapc1w4+2XJ/B01/6c2t6PhYUGumLE?= =?us-ascii?Q?aFSYQ2tpTnCmgQn4apjVQpf4RwY09gbftGOnK2dbf8Fl+0iPzmVN/n6Of3o8?= =?us-ascii?Q?ap1AkiWFwmcvBNt/NFs0mHgRR6F6E4lHlFm4nl24TNEf+y9qtXJXMVsTk2eY?= =?us-ascii?Q?PA+XXmT2mPFuPxnG7IY6jdub5W/ntjgMLVwQ7vov/X1JyrYVkWGhIuDy4rur?= =?us-ascii?Q?2OQi+oN5uQE3RdAEcU5HxxXeerGt6BYBb+b2KMd3FTjMIfjYnNPaG3TSMyUj?= =?us-ascii?Q?FKH0j7hEfOGT+Ops6533b7t1FSGiTu0aMCjPRcOiU6bDBbyzFxRGBifz9AJo?= =?us-ascii?Q?TqLDCXszykbxZo8NmAQCqEiGsgeAk764DhOkNJ+qde4asARAp+nYhGEI8hQr?= =?us-ascii?Q?toNfU46yPkOyOVx/UpngdUoXSE5ygtpsjAf6dvczIdtWXgv2A9wEyBGY2z12?= =?us-ascii?Q?9FqACKwo07lVAPQnrDtsVWGC3PqHYyIihORvTJvC7Qh4fTEEEU63gaswlbzX?= =?us-ascii?Q?4lIOiqOvxGziR0bGR5aD4GTVjPjei6Vjv246UMyF5hGhZrE79z2IyQBBwj5g?= =?us-ascii?Q?8r+cxS7GP+bLv+oAhPVcEXBpthOge5uwdaTR9lFiEZz+cYeMqaU0wMUIIb46?= =?us-ascii?Q?JjeiouPQ4mNwM/hZPB0JOzZl6VXfxfYYjGqxd+P/3aRH7wS5YO+AevW0bRnk?= =?us-ascii?Q?RA06XcILTstk71Z5iBvT5o8CO5MKHa+A+ZkCQg/LlJVov8aCCphpj90iHs54?= =?us-ascii?Q?NLIODebv2WRFEaMXz4UI2b34hiBitRTJLgGrUqS2c/U/BinTpO7W92ZhVF9D?= =?us-ascii?Q?bm9SM15VOF2+6i2zU8bFiicgT0XydlByT2WMkSYum+faVprxkWn5e1w/D8VZ?= =?us-ascii?Q?lgjbc2IS4GtR+f8R9Z+g9/Rwb6OCf+rmsuKMFB6ilQZFkUJOqZCz6Umvel8d?= =?us-ascii?Q?fac3V5oIGq0SR19hK7qEKtssNGU5fQxrplU+QPSJQFvOz8TKgrL4xEYl1BIZ?= =?us-ascii?Q?nvYnIdhCWdlurDyUnKmFnmeJlNhBrgLtjA2aGAvPuvRe+75EFDCogablrlhi?= =?us-ascii?Q?0k/XYBPbG0R2HRiS/rIEim298gikp/nCb831v2keoCKfW/BF12qFb82Mvp3J?= =?us-ascii?Q?V+WhEM/TJ/QsOgrJWgqhAWyQUpCvttJl?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(10070799003)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?EF1jRKSRj8RJUF5Zcx8Rg9kHuThtbx2bCrdQNchrO6hZgN1/FflZpTZL3xk7?= =?us-ascii?Q?55G+c4Dd6E++G+dgKBkEdVeXq3U1efxaeiDeUHpfiT+8dferDbStClUJU0Ob?= =?us-ascii?Q?sNoXSe8yoWSmTieoDUtDs48NSA836fJV/ULNBlbedZzU+Rgbo0CYBW/pRJTu?= =?us-ascii?Q?4cjF0iySe3Vw2yqqIVE6w9Tzh3/XyfR0rLVd4tmLbzuxkwh+E+BMgYoKuXMW?= =?us-ascii?Q?LBkthn/O/CyAIZD5Tu7KxZ3gvLpdyEcANgUf6tIzzMRzIqv1ppF/i+FjZgNv?= =?us-ascii?Q?4VH8TBTmeGhcxeLSIKUuq4M9JRh10GCkwwMazswBGYjU8KPR8O2feO0XnGHj?= =?us-ascii?Q?IN3emC2nsbxuakrk0Xe0yVpYWafspkOhLfIGBMJzL/x1sP0RDC7XPdE2fETL?= =?us-ascii?Q?/acJAz5g21RlG+NozkbxQd2msAfbwUq3ILocYvPUHI+MTTVR9J1YWBuhCg2v?= =?us-ascii?Q?hHlo+pMCtW1/t2MmO/l42zhhcULxyNsVC20FyCuOMnHoGE3WS2GlK3MxE3nW?= =?us-ascii?Q?59bj2gIREJj2QdC5foAvxOFUxe7O7Yfkc381PLNxiPtF4/1n+NRogdmQjdCh?= =?us-ascii?Q?fbN+BitJJhZdwJzCXIW7y8s1WkfEMrfZ4jZoDbl1GFV2GMH6wPd2KKfnMRDx?= =?us-ascii?Q?16tGJzZlAqG+XH+yc7f2lCsqAzWZdh83G8CR79Lfz1jL+Yq0oo+WoPZdHkHs?= =?us-ascii?Q?cdawfi9S4roJj4hJhT0WtMAmOKQtN+I4AvOZtPDxGCTDg7HPF4zMIFVfRINs?= =?us-ascii?Q?wZ56PdW1ScEGMLV1VhM3F5/22Yo0nnMN3epfa/yea8QSFgzNGI84RnbSw67X?= =?us-ascii?Q?U4B3rxrw3Pg1BNnkyVUEwlXhCrqHvjUweraWa5aT+WtAcWr8ZqYvda7HL9OD?= =?us-ascii?Q?A+wd0I6ED2tNy5ChkiaLQ7nWyBBK1iTrBStbs2vkPW+VrxLcF9H7ii4ATgsu?= =?us-ascii?Q?HxOU0z5kB+Yk5vXSE24+auJqN+Flw9xiBuC3ZUyINIZfhTNSdTRCoP0vQTLy?= =?us-ascii?Q?rPYljyX44H8dhAP4MnNEaysT8E3gqCY5HCa1j46o1gN7YrSuAJN6cBm/Galz?= =?us-ascii?Q?vlBKQrQHAebYXiaKHen+y+sfspkNMT0g3b6VFmyLSX9YDr/nM7qCPjHS3HhX?= =?us-ascii?Q?t/18tcnVJrZmm8Cl4l29VLrC+7SRV/7lR7E26u3Oke59lxVX3zFo2Llj7AkA?= =?us-ascii?Q?B3DM3ry4RwdYOCv/j5xlgeqGXEhMPWPFDU33tRcv0rqH2XTavlVdY2mNsH1F?= =?us-ascii?Q?IOSLdEtdREKsitWULRYOE2Ctvggr2bbRNsL0zV908iYolv7iPIboTrjkXklw?= =?us-ascii?Q?C1zl6SZMyIRqHDgTG1Wk4B9gGRo1tTPTMa3LTXRYJvcJrwNIibWR6Pd+9AkR?= =?us-ascii?Q?1+uRzL6Di5jO8jB5lGz8LvsbqNSbxBnZ0ukGBZJvYeOB+Q3mAsc0KS/LUIn5?= =?us-ascii?Q?KCTtwtFKof4OMeXJNa9D+wXb2ilT1whu8xkFxOVgMaiW6d1YjMMOgMkDmhlW?= =?us-ascii?Q?YaEbYP2Lu/XcUUAhMqFRyaUoKch8gDCvew23Jp4cV1Bqz4ZXRHdIGa6Z1fzc?= =?us-ascii?Q?XIvt33PfNmdno7ZG0vm/lxD+e/s4KdZ2PEyMJr9s4H6uGJP75SqfNeyD9l2Z?= =?us-ascii?Q?POfOEbZkTfEBpjygzTvKtQU=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 313a7e19-4abd-4677-af85-08de12048b77 X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:46.3521 (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: JMOhipxLj9uHnPjf/5b5vXNYin2D7yZSfWTkqZmeeM/1Q6IH3SV4SMm9rYsOAwkpGsBeecQPSffAmM3vvFeQNw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYRP286MB4555 Content-Type: text/plain; charset="utf-8" Implement the new get_pci_epc() operation for the EPF vNTB driver to expose its associated EPC device to NTB subsystems. Signed-off-by: Koichiro Den --- drivers/pci/endpoint/functions/pci-epf-vntb.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c b/drivers/pci/en= dpoint/functions/pci-epf-vntb.c index 6495f99ffd4f..e3acea19f473 100644 --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c @@ -1446,6 +1446,15 @@ static int vntb_epf_link_disable(struct ntb_dev *ntb) return 0; } =20 +static struct pci_epc *vntb_epf_get_pci_epc(struct ntb_dev *ntb) +{ + struct epf_ntb *ndev =3D ntb_ndev(ntb); + + if (!ndev || !ndev->epf) + return NULL; + return ndev->epf->epc; +} + static const struct ntb_dev_ops vntb_epf_ops =3D { .mw_count =3D vntb_epf_mw_count, .spad_count =3D vntb_epf_spad_count, @@ -1467,6 +1476,7 @@ static const struct ntb_dev_ops vntb_epf_ops =3D { .db_clear_mask =3D vntb_epf_db_clear_mask, .db_clear =3D vntb_epf_db_clear, .link_disable =3D vntb_epf_link_disable, + .get_pci_epc =3D vntb_epf_get_pci_epc, }; =20 static int pci_vntb_probe(struct pci_dev *pdev, const struct pci_device_id= *id) --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010001.outbound.protection.outlook.com [52.101.229.1]) (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 B7E732FBE0B; Thu, 23 Oct 2025 07:19:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.1 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203994; cv=fail; b=F6HTGE/n9hSflHLVeZCOxSVaQRaKlHC4ebb7ErW8IUW1jzpCwIpmiUT4au5C4VMyblDm429L7YkV2z+W4x4kmEwmABIDa+k25L1z1HW2MDFSy5/hU9RHNpZvZJfNszmj6yZpnI3TfTXxmUfzZxyRl4U7rcXKdglnhDiVgwbax3w= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203994; c=relaxed/simple; bh=HHvePQhsOn5udlhhyl2q+oij4aEmiImdxFZVeO/iDW8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=gbYwU2a6IWfC4VLjR0sYwgHHoZ7SAZa76LC+q2HSTTZuA8pTj1pIXwiuCC+1klSw7Kof3e4GiiJexNJYwAprikIbIydzmk4u5KhVyd6UII0RTZeuXDEPEqYfEQVx5NFJM64DPrb44eYIF45YdzMJjYrMlCBR0SDYoiS35JqEb50= 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=gZrzxZEm; arc=fail smtp.client-ip=52.101.229.1 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="gZrzxZEm" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XALltJF7+y9hErCDFy81k5m1Y7cn87tdjHzFVaujLF++FqrjcEIj64Eu0/5k6Za4F7OFdjDGMJxN6RDb19RZF8mdZuMn/to5TpYVRwHWvxUQQ0qglexV0YsDfoCatmS2F1nBjvzDsYLhRr1D7tWCQyhOKUYNb9KF4kKfjuHXyyL/zozrxENbyiQXzBl4Si/+rJdrpbINgOtDMSG+ZLBr9MqWklrEp43uWypZxbFbkDhFLGfk/gSzvCjdPgugO0tQOVM0rJccimM6Wr6J4gk2ffXVc3CioHZtUnRjZu7EYGM1yeVnHfm4SNPcfSslAdLh5tqrHFyfDVKS/z9iA/Htxg== 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=pBVqk1iaKbdExkShWLIRzkuPCWnELf8T/NIc9UtZNZ0=; b=zCDp8t4nbrvpYd8/WCrdf3ZAA88n10y5l7N33BAL5Kmz4VZT5UBNveRDF+9p4TFxMqmBEclnlDkBj3rfmApxEpZkdXfx/wM8F0twXKbLvDCimeVjioJ+uVuiPoCxhPJG80Ed4Ll2OAy9JFdyrXYPY6qJFWIHOTassGrIons/Zm1iNVZUJ6aY9e9etNMBek+LhyQns084u/OIqo9fu4FYhO5O5WpK/KtT3CsW6AsS1HuloAnGeEp7JRfClW3LaKXSjdpoYWQBIXxS47QCXmLWETJ3ze1r1gQf+ebTzfvom1rnvscCL90s5nLF51m4R0SB3AOpb8HIF56XNCRfhysEaw== 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=pBVqk1iaKbdExkShWLIRzkuPCWnELf8T/NIc9UtZNZ0=; b=gZrzxZEmLWwIumha7XMCl1W4xsChSLLD81ivAzPr9mSK9FT5Qszfnyf5Z7YCXfZehtFgDQN5+4d0YisfbwwbKHWaHGcvf3TcrqgzzqDAHvFVCevfOx7ov8nSiI1PhsWVhHxhuDAF7lpsi7ECdeJN0zVUirt25Zy/jIhQvfXLsYk= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by TYRP286MB4555.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:1b0::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:47 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:47 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 20/25] NTB: ntb_transport: Rename use_msi to use_intr (keep alias) Date: Thu, 23 Oct 2025 16:19:11 +0900 Message-ID: <20251023071916.901355-21-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0285.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c9::20) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|TYRP286MB4555:EE_ X-MS-Office365-Filtering-Correlation-Id: 82a63b43-7c1f-4d8a-ec2a-08de12048c3e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|10070799003|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?K1KRXXEIvB6sxrmcjpWQ8UAHJ+xGzS7pBgXD/OUv9q3EkbAssL+VkQtWtSBJ?= =?us-ascii?Q?b3bLaisCTbPOb9o1wa3I0ghP372ExE0Pzmu45PBQ1LGVOkj++dM6Ii+SVy1Z?= =?us-ascii?Q?Z99v95q4oBQZG0XYsFyLau23xczidFjOraWenKn4MnxQZPy85nv/yRwKJTSn?= =?us-ascii?Q?Kpsyl9cbr12yRJrn8sr5bTIwZE1KnvxCSJg/X2VnQknU1nAFuDABhfd7hm9V?= =?us-ascii?Q?YtVKmTvK8luOd52rIbfqQ7tpXIezDIcHbWZefofroFNpiVgtsQw2ShwV2O2v?= =?us-ascii?Q?GmeHprAOpBng+f4enFVmviuMSprPY32xMOtofHu/S2icL+R+hBaVXPkyvYjQ?= =?us-ascii?Q?/gpVQXwqAnkDfgwwoXz6EABtrOLkVcboPkC5jjbaiOQxs9PO19snJkA2aT/U?= =?us-ascii?Q?CEiDL5OSmvd8lt/F6UWY3ht41YYJjqR8dFa7YSvlLRwkJwTXquYX+nw7F8Hw?= =?us-ascii?Q?uUxzX/tNO62GHugQSvb9IgI7ZyOLuXiDSfedmog4OIIfBkNjeinMv6OEeQsR?= =?us-ascii?Q?SomDh9Boh41zEZHe7x4l0daxSWNY5zO6ozvlgZoESg94SCyopUc+UxIiCX+9?= =?us-ascii?Q?M1Fr5tjDxSCKe0p/f34IRH+wp+zaCLCWZ77gPWj5IJLx0W06j7gNjOxplbch?= =?us-ascii?Q?AjDixS+mqFvxKLVJoaBlpOIwye4Qb+GoadtVrmIDISQNADYKaDaOldUYaioW?= =?us-ascii?Q?2hTz3j4eS/7SBFQerfMh4OPMM8wTdCsfO9bxk6eG1+FdnnvxJ4Plff6ggzvj?= =?us-ascii?Q?RVnYBjztGYIK2XG2ZGpp58ZawWk/SJVlbJKJmAmMSctd21Gq5g17g891dIJu?= =?us-ascii?Q?yBoUmXM6z63at9M6ibpT0PtWLq8U7l8qX/GcRZLK/OKegCbTilC5HrmOZt5N?= =?us-ascii?Q?R3C2TyPc4SLvc4WNUgeQTOGnbRusCATybLEOM87MDsTsNv/dXjdAXSvZT0An?= =?us-ascii?Q?O7rU5PzPDhHQ6Q2XkYUfV2IG+/W4/SqjexXcOZzcJ1N66qSaC869ZG7vOavF?= =?us-ascii?Q?EvrjHd++hf/d5/SmbS3XoOMMnO1W+fgbg0h3+zgs6n8U6dOo5tjbZwOcpSY9?= =?us-ascii?Q?0ZlWPR9Q40VcsUAuLkwfobayxcp7mT3rENzkCUsKppLCZMyD6LTZAb6WS2AA?= =?us-ascii?Q?pqDRIu6w+c0DCVkeWpKU71CNpIAIkY0y9odbokePkP63JbCHIFLl9a0lSsba?= =?us-ascii?Q?mG4B4aEn47nhabZ51/Idqqd2NNZlN1rzu5i6LUTVXPsbH/l638bf0Lp0dCmx?= =?us-ascii?Q?4t1t5XLp+Gpu3et1GAgvqXA/OzW/LOdgxt/CgGanYN+Ri1q0XCOwHTmru6lu?= =?us-ascii?Q?fBy4lobTSe3LkkE0R+1YzZP91uXkL5S0SNrEHSzGkgMkXch9YY0wTLKckS5C?= =?us-ascii?Q?lOr8wazVdy0Wwlt5BMna4RE6bhQNmd+Lo3Qvxkt54GmF+USaVdscFqv1VSf0?= =?us-ascii?Q?DHjL+sywlsHpfnmEHd6q0r9eG+kWH1HT?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(10070799003)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?p1VkAHDe4JFuE9px7u9xzu2QZ6MLmM0LVWNlRpmzVi6mdSFnmtxHKLWwlAag?= =?us-ascii?Q?4xdKX0A9saMd5SAOQxI9uF7grxWk3pt2rjN07TGwktE0BC9I8uxDD8yFO7EM?= =?us-ascii?Q?tCUbe9tyaUUW6RYPBaO2fECqEdPqIvwzZNX5FzquNJB0JVaF/gauflzNn0oU?= =?us-ascii?Q?oedSr6GCz5W+sM5M/KEod99Gp6BjHvYMt1sDVSkip2T9hMKt5GmSSJN+hG9x?= =?us-ascii?Q?zSP3Yy1KFnWvGShWCdTDzFu4ihCVfjADN0FpAx2837kJKRTjzgvbrMTp5A+i?= =?us-ascii?Q?Ia3KQIaT/vuh2d5Wi/Sp8jRvlbkLaUjNZeKQxrECrRjgYdV29y3StA+RnOVD?= =?us-ascii?Q?0VU3CRm52lkE+/Alu3kfYRdljKjks1fpQOOovccSB69gitZ7a4tNL3t1FOHO?= =?us-ascii?Q?6Gyw9168kSFQ/oSpiQN/AISvB6SosGHcsS50fysGARuPXigEOhY0YIF1JH4W?= =?us-ascii?Q?YTTI/QCWMkBTyUXKxscpb7XiWdcf1PH8xWeF7wCYC6RNv8oFZIwWPQWHhsTm?= =?us-ascii?Q?7IvAzfSCKfO26mLb2KsX/ESAl/qiQJYWugNic6hpaaAa6VRnymTxtsrV4/u3?= =?us-ascii?Q?522ucMmCUBXJaBKbI/XPosD2xTP3B3qtkHiNvzfQF5JtPU8s89UjUtKeLWIf?= =?us-ascii?Q?0cozZFkb1lVXGG0z8Qs9vJP6Gmp6GnAllDoMZ7KEC65qT5FV93rxP4c/4vGk?= =?us-ascii?Q?ch26xxeKoy341XES3JSbCJCKNYRe4q8CoRh3MpTDX7dauCOV8grZdDqe60Rw?= =?us-ascii?Q?SsYL0O/3DLD/mWJXzJV/8l98P/a7o9VV5WDmx4uYOcIKmeb2uyuLtGCfN7y5?= =?us-ascii?Q?c7uuVNp8lbxuPj9b6U7hFdPFiEP9ipFl99YiD0x6fw1yEsJdYyQthn70oGsi?= =?us-ascii?Q?sSyiO9jeycux+NbA9+SkQX9j8xBHFCiH5dxHeaZceTUnsBdaqVyRsaTCZm0Q?= =?us-ascii?Q?JYDcnL5y7hr2ZKSk/H9p7Z5cfKmz37ScySWlxFPDVeOuZArD9Jpq5t/kX1wU?= =?us-ascii?Q?m44cNuQQQrdPRFAkdyVmvMQrzULC2KygjOefjScDJ5M2UtNoW06yqxbV34oE?= =?us-ascii?Q?wO7D7f0xPw7JztV0XFvYtrCyaFIe/AY0uo4v7hhOPSYlB5Vu8ROZKwd8Zb6Z?= =?us-ascii?Q?coWnnZoUrJuS+KuDQ6jUvsSoTd+iQArZWcd4kKTYG31p3R60dM0etws3Y8+D?= =?us-ascii?Q?HOeYNkle/mcHM+7yJWc+uxAlv23Jr82xYJg8Uih1U5VQY6xPq3FRhZmi2xu4?= =?us-ascii?Q?KyR1gak9bieENJDhb5EF5BLeL4S0U651yK3vGNs0wn1PWUhGfBwFnXSwkdEb?= =?us-ascii?Q?uGVM3AIke+RAbcRlCMqvD44QiWWKM3MmEKCv78tWG4S1VOK6+wbwlUbwJseo?= =?us-ascii?Q?ZHFHko9MTV1WAMKV6pL71sNpz8q1+NuYzMkEDRZVh5PXS8JshOgN9N9uelCo?= =?us-ascii?Q?KCjbPqOScn0JYXc+uNjOXBZgKcYiChCVUgujRkHkPg7CAIozJNo7taz7kZsG?= =?us-ascii?Q?wQ5RvikFVPMoXre/Qcvl07YVTZy/U68t6R1C/fwbDypRnCxc+8yaoDagGW6t?= =?us-ascii?Q?HMPNlxv+U1rbraGxRjx84wQh89RGhyFDesRv6A7pSyYCxTyUKAaE51dNYvy+?= =?us-ascii?Q?pliSH656XYq6JvOVOqglGHU=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 82a63b43-7c1f-4d8a-ec2a-08de12048c3e X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:47.6324 (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: 9sMA3kq5xWMvEgpQVImzlkzp+IPEfjBCSnJGSiJJuuDf0KyrFm9LYEefE48IBQ2MG0MjV69eFoCiEN7j28ecdw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYRP286MB4555 Content-Type: text/plain; charset="utf-8" Replace the module parameter use_msi with use_intr as a more generic interrupt selector, while keeping use_msi as a deprecated alias for compatibility. Signed-off-by: Koichiro Den --- drivers/ntb/ntb_transport.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index d9fc450ef497..4695eb5e6831 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -97,10 +97,14 @@ static bool use_dma; module_param(use_dma, bool, 0644); MODULE_PARM_DESC(use_dma, "Use DMA engine to perform large data copy"); =20 -static bool use_msi; +static bool use_intr; +module_param(use_intr, bool, 0644); +MODULE_PARM_DESC(use_intr, "Use peer-triggerable interrupts (MSI if availa= ble, otherwise provider fallback)"); + +/* Backward-compat: keep 'use_msi' as an alias to 'use_intr'. Marked depre= cated */ #ifdef CONFIG_NTB_MSI -module_param(use_msi, bool, 0644); -MODULE_PARM_DESC(use_msi, "Use MSI interrupts instead of doorbells"); +module_param_named(use_msi, use_intr, bool, 0644); +MODULE_PARM_DESC(use_msi, "DEPRECATED: same as use_intr (will be removed a= fter grace period)"); #endif =20 static struct dentry *nt_debugfs_dir; @@ -236,7 +240,7 @@ struct ntb_transport_ctx { u64 qp_bitmap; u64 qp_bitmap_free; =20 - bool use_msi; + bool use_intr; unsigned int msi_spad_offset; u64 msi_db_mask; =20 @@ -704,7 +708,7 @@ static void ntb_transport_setup_qp_peer_msi(struct ntb_= transport_ctx *nt, struct ntb_transport_qp *qp =3D &nt->qp_vec[qp_num]; int spad =3D qp_num * 2 + nt->msi_spad_offset; =20 - if (!nt->use_msi) + if (!nt->use_intr) return; =20 if (spad >=3D ntb_spad_count(nt->ndev)) @@ -742,7 +746,7 @@ static void ntb_transport_setup_qp_msi(struct ntb_trans= port_ctx *nt, ntb_spad_write(qp->ndev, spad, INTR_INVALID_ADDR_OFFSET); ntb_spad_write(qp->ndev, spad + 1, INTR_INVALID_DATA); =20 - if (!nt->use_msi) + if (!nt->use_intr) return; =20 if (spad >=3D ntb_spad_count(nt->ndev)) { @@ -1067,13 +1071,13 @@ static void ntb_transport_link_work(struct work_str= uct *work) =20 /* send the local info, in the opposite order of the way we read it */ =20 - if (nt->use_msi) { + if (nt->use_intr) { rc =3D ntb_msi_setup_mws(ndev); if (rc) { dev_warn(&pdev->dev, "Failed to register MSI memory window: %d\n", rc); - nt->use_msi =3D false; + nt->use_intr =3D false; } } =20 @@ -1316,11 +1320,11 @@ static int ntb_transport_probe(struct ntb_client *s= elf, struct ntb_dev *ndev) * If we are using MSI, and have at least one extra memory window, * we will reserve the last MW for the MSI window. */ - if (use_msi && mw_count > 1) { + if (use_intr && mw_count > 1) { rc =3D ntb_msi_init(ndev, ntb_transport_msi_desc_changed); if (!rc) { mw_count -=3D 1; - nt->use_msi =3D true; + nt->use_intr =3D true; } } =20 @@ -1369,7 +1373,7 @@ static int ntb_transport_probe(struct ntb_client *sel= f, struct ntb_dev *ndev) qp_bitmap =3D ntb_db_valid_mask(ndev); =20 qp_count =3D ilog2(qp_bitmap); - if (nt->use_msi) { + if (nt->use_intr) { qp_count -=3D 1; nt->msi_db_mask =3D BIT_ULL(qp_count); ntb_db_clear_mask(ndev, nt->msi_db_mask); --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010001.outbound.protection.outlook.com [52.101.229.1]) (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 20CD62FF142; Thu, 23 Oct 2025 07:19:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.1 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203998; cv=fail; b=LF2HqWB+XiFdCT34B8FDKi78L/ffILwJ6VobVzjKB+uxrjCSNPOq556EElbuRA81kCWG1Uvhn/HUDHAWZRbXw2r3ArDiNG2wrmQ9kg/R0jkhVKIP9zBalBwUwTCaoQJWn2AaQOHAQnutn7TaVEzt8fv2n9TYZAyT9WhhAZNE2Us= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761203998; c=relaxed/simple; bh=nSHySCVR0vsuAaMLPr+Z73TzpoHUhItdZs05XdPO65Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ZFlyxtIzYJSsiU8n/fTgUafG8jpPx9UvFNLnxKlhcx4YVdOsb8UEjguFDXeLmELkL26P41dzB76L9fcPAeYAjsdXBVQiasWY40lyVOJ0Pdhjg3nxmiXkMySQFNd+2rxMt2+8oM77L3IH5n7/YvjDqwwU60zzI92f7M0Nmg6XL5k= 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=ZsFL3qhK; arc=fail smtp.client-ip=52.101.229.1 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="ZsFL3qhK" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hvnq0Uyrzh+uL0+vB/dZJG1GcLN+B6rLFXYw/Qq/QaDvkN7BtnnHN01dM3zcU+JvzxZ1YC5dbx1jnj13Wy+ZSKkebwba1wtrKOm0IHCChI83XL5GoJttYwowEQS/Mlt5HZWAFE3I0WiH7cZSz4Prjc2T2Sggctg1GgBjlByU5IapZXGf4SO7PJXpoaoZ0hBnx8XQOYZwL2MsFP644UDnn8cIO1z+ZwDynCz3R6ciosa1X+eCMhEGZxohuEfqcRFagtFaOBFHQAbY8EnWnjJw6slJU9RsfQ3t3W4KPXq/Bi1Cas2ma0kSSR2kxDSmXpAuvfKHHdoC0MzUDlwMx5OcGw== 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=CqdN+mJWIPQQ2Ky6VZd7V0Yf+N/UGUg/a5xwzqX9geY=; b=sLWX8IqrUUP8A5whkII8gVH8emCq0RWpUJ3jUl88trcqjgLJorBRzFqZVp+A6D/gfSOSQcDgovhD2z+D/9zTEIgFm/sB8OCFiNnHMLCPnFXGa63Ad0N9hfGPIe50sztSMX+KfAT5WS4V53vwfw9lH+SOx6rqFO0JrAsHqJQJOSjQMkoge8RpFnZm00NHVzmNLGdJe2v7Ek4GhE3DIEY/QOGBZ3nqldKblXho8S3/Xju/IQd0G3e7W7MyIP2UBn6QIsBSvr40HKLieP2JCYdtG+dJiz4qwtRssnQnKvGCpAEVu6bPIz1HiRaN128Z8nothhWSS7bSYqV0Ac3ygtCcAw== 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=CqdN+mJWIPQQ2Ky6VZd7V0Yf+N/UGUg/a5xwzqX9geY=; b=ZsFL3qhKDnAJUCHplQ17DnOnYMoD5lrvaoEvxLAf7NEUz/jARzwSwDapvTP8odGjC+y4AnIwq2tHO1Ghj1dRTWSAZi/blcQi0eq7+vFPeNAkDETkWCocnQL8deVC8pq1u4TXB9mLD3xO+wNV6+78rvQRwNY/US9ol8BcP4kr22A= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by TYRP286MB4555.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:1b0::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:49 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:49 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 21/25] NTB: Introduce generic interrupt backend abstraction and convert MSI Date: Thu, 23 Oct 2025 16:19:12 +0900 Message-ID: <20251023071916.901355-22-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0062.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:31a::7) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|TYRP286MB4555:EE_ X-MS-Office365-Filtering-Correlation-Id: a009a493-f2a5-4f69-8fa0-08de12048cfc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|10070799003|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?dVT1EMr10IIX4tw/H3S12zOnmz7drqvxdO4XU7wXwC/TcAS4SzhFP3359Gqx?= =?us-ascii?Q?QLxk8nmdl8uKsajCaTDp58EZqBoWrdL4yvPynuyGBdmNhWqDjIDiW6vFV+Yu?= =?us-ascii?Q?KxAbB3tAtAY6j+0OW5hchOjGYJNPfpdQO1PH3ahUD8E9g11c3btVl+AaSsE9?= =?us-ascii?Q?EIS7BpzqAI5dVP/WQtoUyViTxwTnqzgJMphdAF33y55V19p/nAYXBfNhIxZd?= =?us-ascii?Q?XO2kjJpF6Wx6TwIkI+vpd9SaGA3exn4yD9baNTeHVxGBRqALCz/3dkc6Bzxz?= =?us-ascii?Q?ddf+UzkL0dTOFN5XHa+qJSyobFCyi5Adk87lbURyh4JExDaKrWBcXmSPqOqH?= =?us-ascii?Q?08HsOsYIoqf4w4/fGm1PENrrQ+igyaPTUoMK9qAYl9vmjMDX3uddeqSHAeSY?= =?us-ascii?Q?ybemW/gDsHyQJEa+RcPlRwUpY2927biPO1P120uNpGbkxafWdpWBEHjcorGW?= =?us-ascii?Q?zWcmQtm7kwNSJwk6GrzfHb1fDB9v2sfvTtnFSRH0yiAVaF8NtdPZhi1gkwZ4?= =?us-ascii?Q?TifnJTPLtsq8HKZKlGv9au04mZBFg3f9L9vaTPmvOxegcbuOa1JcJvy3hees?= =?us-ascii?Q?7wVxgadPciPyjl8VZKgfecnGFheygBopzgHiuUzazOMduPf6U1V4AOKug8Aw?= =?us-ascii?Q?FgJ+nsOgUgrtn8JGldOCAmaQYwgBmr6Glwh8LbuB5YBcQJQdlyuvQ8xhl6hy?= =?us-ascii?Q?bYsT5CupUEdkvRUM15RQFo6BPtYX7EsA0bSWFqqSJ+u5FNajl4aq1hmV9XoJ?= =?us-ascii?Q?VN/RZxP8/URx2QqPWGxUEdSBIvpsyFLNb7dUUr5EH6Q2dSV1NN33s+sMnijU?= =?us-ascii?Q?mHvvVIIlcUtNM0o5PbgRQ8mQCgZdPJEWWuCn/eVUXIuKra2nR5dEXctO6QbR?= =?us-ascii?Q?QVSih0XkCl383u7aovxSvL5Gr8DUfYIHMFUv1gKO4kyWksJ7n6gUxZN4afnz?= =?us-ascii?Q?6K8Foe+LpMVkzFAdoXwErqTjU/PJRLW18Q4bjl+oWPIySaWg/7LZWOq9Pud7?= =?us-ascii?Q?JjpKqok+aL42XXm0BZRB6jfi38HHb+ewpVaAXEusoCYdup5Xnb3jJ8pgyHlk?= =?us-ascii?Q?Q0jT4qgyF8VBYwgV3ixfn4KMPkFxeoSIK8+WrSKX2pM6ayMhj24aKty7aa7c?= =?us-ascii?Q?mfRGT2ftpDDgTcg0CASl6bP46aicPP8mP52EHZXALvkk03XA2MKRlDsRdSoJ?= =?us-ascii?Q?TkEyMr/JKig2C5i6HicgBRHHJCmMeLYaQ6ItYU1D8gpuaAnJuNIgTvvHMmwt?= =?us-ascii?Q?1IbLlP9xBkEpa1GOgVUcBEnmPaKjyF/4JH+F1eqsGQIZTxbJBkdBV/R147N9?= =?us-ascii?Q?NudBQp8hI0xXJMhziQqCeh7rPcj3XoYN/pta7llwrsvFwH2g9fpy7qCEA3nk?= =?us-ascii?Q?bKW2xQu90rnkPnI0ePnN0atMcu2a0JNO3h5S2w0Ij9znDV2SHsWKu0po6Dm+?= =?us-ascii?Q?rbVSvQk+GlS24qe7DqxoDaLeCed/7yHj?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(10070799003)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?wCU2UCr881896E2sO0b90hbA4Uphqpp3JFpHjflIN4i4DX80dvykqXfYDOW6?= =?us-ascii?Q?QxHGWbHFzYctEH8dj/ojWb10YqYNlSdtqfrw+7Iq4XWkZOkORtOzyv+6SAIS?= =?us-ascii?Q?yWpVRpY3ERdrxrKVw1THN7yNKXGx/+pl05j3chpGJqrGEVeaHsMHBDFmrZqh?= =?us-ascii?Q?EKzyTWVuqWM0V7T42KvuruImfOPEQENVolRQwla63l+f/26/RuKC2QaAiQ+F?= =?us-ascii?Q?DdQb56V3ANBnOIrvBeORDm16zdvf250rK2YE2lPkYgpKeg5LOqoDnmy4NyZq?= =?us-ascii?Q?AbZ649QfQYou41MIdI0htGog61SukWxG4JprwWGmPFNvyGDe3EI/Nmac2NcV?= =?us-ascii?Q?YdxWq9wJIE3WDYKvBZUENyyNyp91nE/zntSq1p4JNavH3IdIqSojWCBdO+Df?= =?us-ascii?Q?Mub3/6EiEcl483PPyT8z0NZhCAryzYt8xBwHsp++SPd2OvHBxU90N9LJyc5T?= =?us-ascii?Q?4FxlmeG4/mhOTfLzRpIMLIRSayoEtkEJb6f9s1fK6Tmod2e/GRUhX1UKXNu7?= =?us-ascii?Q?UW/Trf4KW2g1HzYhfk5VCtJLfiQqWOb/hC9DtEmdP0gOytz26j3ezkrh7i4+?= =?us-ascii?Q?XWmpVWgr4mCKLtAiRjaz2wkyo470k1HMC2UpgB6XbegsQCKI2nSGLz2b87P+?= =?us-ascii?Q?nfSn5XonG3w44bf1CRT8hZ4Tqi3RByLpw93efOTmm4/L1aw01qNpA04pVS8Z?= =?us-ascii?Q?FJkZsLHl5BUbGkr1mKul5T1gjX6G8IzYQ6v889uQlhqiXP/Rc9UVr7BIQdiK?= =?us-ascii?Q?lJpPziSrsDotgFmSKlNJK7ObLE36Iki3McwLOChOD0M77ipzDeT+1rF0+9Pe?= =?us-ascii?Q?m4JRNafiypE8sn3by/SvUIBX0fpvGdXoa4qwoiuIEebHibGbN44g/c32/Uba?= =?us-ascii?Q?K5QpX3L1gmUfcjzpaErRXWKNuD926B3GYdd9lu7JjaRnELji1N8kLJZpmbAB?= =?us-ascii?Q?DGKTCLCySK6WbUchLk1ZBaQFgzkglIBgaz7vM44TENIw3/T5wrIdzHw7FOOi?= =?us-ascii?Q?1qS341ItQztcEVqQstQnAmdZKLYTwLKu8u068TJptwl2eoWhsZw6Q7uDZi6C?= =?us-ascii?Q?32BZwFZW1YqBq6CaNlZ3Sj39vP2YGvDE+vxWZO+SxA/pfL4kOgHU2cOUomCK?= =?us-ascii?Q?PLDsc87tIDSe0DAcQbhn1zmsTQEmXJIhL8Q5z65cDpXvyXB4B9yU7wzhWrvl?= =?us-ascii?Q?Tj/BsjfnN6xG5VObfKNYf0FWEhcI32OkG/UIL1ThhWZwXDLMcRzZ0NdSAfST?= =?us-ascii?Q?zOCP6Etf05VyxvFhFyfm9a31eBvKomY9+RUiffNcbncy7bLCgRKMCzxIeLmZ?= =?us-ascii?Q?75NFloAQ1zsreAbdPPqgcd90Mtx1TSA2GipvcrJK8+UTIWUNn6e5kwNWEexG?= =?us-ascii?Q?CWpK4pIIuG7azcZ704KxoOTE2acYlsAkH1wlziNHlq3GQzOWCWAC3CUhP9qT?= =?us-ascii?Q?7tc/Sa5vXzOUEBohbLuCF90/9ugR8Aye7t1tiAY9tiEZQOjENHPZ7i/QJnOl?= =?us-ascii?Q?vBPPgptO/YSH6ccYstazweX4GmlfLF+YkY7gEoI+kKpHJ+8ovTaEFBbwB7Va?= =?us-ascii?Q?JIZynJ6gy2lHL15aW3qRWcNsclmKkF3BiW11LgZNdP+5raybmg/WO12A5qzJ?= =?us-ascii?Q?rQ81GX1qs0f5ZKqUSv6p11A=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: a009a493-f2a5-4f69-8fa0-08de12048cfc X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:48.9176 (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: hwmb8y/jF6Fp4Vt0EaBnOzE+4hlgjbnxRzHLB+kinJw/++cKllLSjqzMLT+2uVAYtu2rTVdzalEsdeT68kceww== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYRP286MB4555 Content-Type: text/plain; charset="utf-8" Refactor interrupt handling into a new ntb_intr_backend abstraction layer, and migrate the MSI implementation to use it as a backend. This enables alternate backends such as DW eDMA test interrupts. No functional changes. Signed-off-by: Koichiro Den --- drivers/ntb/Kconfig | 5 ++ drivers/ntb/Makefile | 5 +- drivers/ntb/intr_common.c | 55 ++++++++++++ drivers/ntb/msi.c | 145 ++++++++++++++++++-------------- drivers/ntb/ntb_transport.c | 36 ++++---- drivers/ntb/test/ntb_msi_test.c | 26 +++--- include/linux/ntb.h | 85 ++++++++++++------- 7 files changed, 231 insertions(+), 126 deletions(-) create mode 100644 drivers/ntb/intr_common.c diff --git a/drivers/ntb/Kconfig b/drivers/ntb/Kconfig index df16c755b4da..2f22f44245b3 100644 --- a/drivers/ntb/Kconfig +++ b/drivers/ntb/Kconfig @@ -13,9 +13,13 @@ menuconfig NTB =20 if NTB =20 +config NTB_INTR_COMMON + bool + config NTB_MSI bool "MSI Interrupt Support" depends on PCI_MSI + select NTB_INTR_COMMON help Support using MSI interrupt forwarding instead of (or in addition to) hardware doorbells. MSI interrupts typically offer lower latency @@ -24,6 +28,7 @@ config NTB_MSI in the hardware driver for creating the MSI interrupts. =20 If unsure, say N. + source "drivers/ntb/hw/Kconfig" =20 source "drivers/ntb/test/Kconfig" diff --git a/drivers/ntb/Makefile b/drivers/ntb/Makefile index 3a6fa181ff99..feaa2a77cbf6 100644 --- a/drivers/ntb/Makefile +++ b/drivers/ntb/Makefile @@ -2,5 +2,6 @@ obj-$(CONFIG_NTB) +=3D ntb.o hw/ test/ obj-$(CONFIG_NTB_TRANSPORT) +=3D ntb_transport.o =20 -ntb-y :=3D core.o -ntb-$(CONFIG_NTB_MSI) +=3D msi.o +ntb-y :=3D core.o +ntb-$(CONFIG_NTB_INTR_COMMON) +=3D intr_common.o +ntb-$(CONFIG_NTB_MSI) +=3D msi.o diff --git a/drivers/ntb/intr_common.c b/drivers/ntb/intr_common.c new file mode 100644 index 000000000000..e0e296fd3e3c --- /dev/null +++ b/drivers/ntb/intr_common.c @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) + +#include +#include +#include +#include + +int ntb_intr_init(struct ntb_dev *ntb, + void (*desc_changed)(void *ctx)) +{ +#ifdef CONFIG_NTB_MSI + if (ntb->pdev->dev.msi.data) { + ntb->intr_backend =3D ntb_intr_msi_backend(); + dev_info(&ntb->dev, "NTB interrupt MSI backend selected.\n"); + } +#endif + if (!ntb->intr_backend) + return -ENODEV; + return ntb->intr_backend->init(ntb, desc_changed); +} +EXPORT_SYMBOL_GPL(ntb_intr_init); + +int ntb_intr_setup_mws(struct ntb_dev *ntb) +{ + return ntb->intr_backend->setup_mws(ntb); +} +EXPORT_SYMBOL_GPL(ntb_intr_setup_mws); + +void ntb_intr_clear_mws(struct ntb_dev *ntb) +{ + ntb->intr_backend->clear_mws(ntb); +} +EXPORT_SYMBOL_GPL(ntb_intr_clear_mws); + +int ntb_intr_request_irq(struct ntb_dev *ntb, irq_handler_t h, + const char *name, void *dev_id, + struct ntb_intr_desc *d) +{ + return ntb->intr_backend->request_irq(ntb, h, name, dev_id, d); +} +EXPORT_SYMBOL_GPL(ntb_intr_request_irq); + +void ntb_intr_free_irq(struct ntb_dev *ntb, int irq, void *dev_id, + struct ntb_intr_desc *d) +{ + return ntb->intr_backend->free_irq(ntb, irq, dev_id, d); +} +EXPORT_SYMBOL_GPL(ntb_intr_free_irq); + +int ntb_intr_peer_trigger(struct ntb_dev *ntb, int peer, + struct ntb_intr_desc *d) +{ + return ntb->intr_backend->peer_trigger(ntb, peer, d); +} +EXPORT_SYMBOL_GPL(ntb_intr_peer_trigger); diff --git a/drivers/ntb/msi.c b/drivers/ntb/msi.c index 983725d4eb13..cdc3ff6040c8 100644 --- a/drivers/ntb/msi.c +++ b/drivers/ntb/msi.c @@ -28,11 +28,12 @@ struct ntb_msi { * * Return: Zero on success, otherwise a negative error number. */ -int ntb_msi_init(struct ntb_dev *ntb, - void (*desc_changed)(void *ctx)) +static int ntb_msi_init(struct ntb_dev *ntb, + void (*desc_changed)(void *ctx)) { phys_addr_t mw_phys_addr; resource_size_t mw_size; + struct ntb_msi *msi; int peer_widx; int peers; int ret; @@ -42,12 +43,12 @@ int ntb_msi_init(struct ntb_dev *ntb, if (peers <=3D 0) return -EINVAL; =20 - ntb->msi =3D devm_kzalloc(&ntb->dev, struct_size(ntb->msi, peer_mws, peer= s), + msi =3D devm_kzalloc(&ntb->dev, struct_size(msi, peer_mws, peers), GFP_KERNEL); - if (!ntb->msi) + if (!msi) return -ENOMEM; =20 - ntb->msi->desc_changed =3D desc_changed; + msi->desc_changed =3D desc_changed; =20 for (i =3D 0; i < peers; i++) { peer_widx =3D ntb_peer_mw_count(ntb) - 1 - i; @@ -57,26 +58,26 @@ int ntb_msi_init(struct ntb_dev *ntb, if (ret) goto unroll; =20 - ntb->msi->peer_mws[i] =3D devm_ioremap(&ntb->dev, mw_phys_addr, + msi->peer_mws[i] =3D devm_ioremap(&ntb->dev, mw_phys_addr, mw_size); - if (!ntb->msi->peer_mws[i]) { + if (!msi->peer_mws[i]) { ret =3D -EFAULT; goto unroll; } } =20 + ntb->intr_priv =3D msi; + return 0; =20 unroll: for (i =3D 0; i < peers; i++) - if (ntb->msi->peer_mws[i]) - devm_iounmap(&ntb->dev, ntb->msi->peer_mws[i]); + if (msi->peer_mws[i]) + devm_iounmap(&ntb->dev, msi->peer_mws[i]); =20 - devm_kfree(&ntb->dev, ntb->msi); - ntb->msi =3D NULL; + devm_kfree(&ntb->dev, msi); return ret; } -EXPORT_SYMBOL(ntb_msi_init); =20 /** * ntb_msi_setup_mws() - Initialize the MSI inbound memory windows @@ -92,7 +93,7 @@ EXPORT_SYMBOL(ntb_msi_init); * * Return: Zero on success, otherwise a negative error number. */ -int ntb_msi_setup_mws(struct ntb_dev *ntb) +static int ntb_msi_setup_mws(struct ntb_dev *ntb) { struct msi_desc *desc; u64 addr; @@ -100,13 +101,14 @@ int ntb_msi_setup_mws(struct ntb_dev *ntb) resource_size_t addr_align, size_align, offset; resource_size_t mw_size =3D SZ_32K; resource_size_t mw_min_size =3D mw_size; + struct ntb_msi *msi =3D ntb->intr_priv; int i; int ret; =20 - if (!ntb->msi) + if (!msi) return -EINVAL; =20 - if (ntb->msi->base_addr) + if (msi->base_addr) return 0; =20 scoped_guard (msi_descs_lock, &ntb->pdev->dev) { @@ -149,8 +151,8 @@ int ntb_msi_setup_mws(struct ntb_dev *ntb) goto error_out; } =20 - ntb->msi->base_addr =3D addr; - ntb->msi->end_addr =3D addr + mw_min_size; + msi->base_addr =3D addr; + msi->end_addr =3D addr + mw_min_size; =20 return 0; =20 @@ -165,7 +167,6 @@ int ntb_msi_setup_mws(struct ntb_dev *ntb) =20 return ret; } -EXPORT_SYMBOL(ntb_msi_setup_mws); =20 /** * ntb_msi_clear_mws() - Clear all inbound memory windows @@ -173,7 +174,7 @@ EXPORT_SYMBOL(ntb_msi_setup_mws); * * This function tears down the resources used by ntb_msi_setup_mws(). */ -void ntb_msi_clear_mws(struct ntb_dev *ntb) +static void ntb_msi_clear_mws(struct ntb_dev *ntb) { int peer; int peer_widx; @@ -186,33 +187,33 @@ void ntb_msi_clear_mws(struct ntb_dev *ntb) ntb_mw_clear_trans(ntb, peer, peer_widx); } } -EXPORT_SYMBOL(ntb_msi_clear_mws); =20 struct ntb_msi_devres { struct ntb_dev *ntb; struct msi_desc *entry; - struct ntb_msi_desc *msi_desc; + struct ntb_intr_desc *intr_desc; }; =20 static int ntb_msi_set_desc(struct ntb_dev *ntb, struct msi_desc *entry, - struct ntb_msi_desc *msi_desc, u16 vector_offset) + struct ntb_intr_desc *intr_desc, u16 vector_offset) { + struct ntb_msi *msi =3D ntb->intr_priv; u64 addr; =20 addr =3D entry->msg.address_lo + ((uint64_t)entry->msg.address_hi << 32); =20 - if (addr < ntb->msi->base_addr || addr >=3D ntb->msi->end_addr) { + if (addr < msi->base_addr || addr >=3D msi->end_addr) { dev_warn_once(&ntb->dev, "IRQ %d: MSI Address not within the memory window (%llx, [%llx %l= lx])\n", - entry->irq, addr, ntb->msi->base_addr, - ntb->msi->end_addr); + entry->irq, addr, msi->base_addr, + msi->end_addr); return -EFAULT; } =20 - msi_desc->addr_offset =3D addr - ntb->msi->base_addr; - msi_desc->data =3D entry->msg.data + vector_offset; - msi_desc->vector_offset =3D vector_offset; + intr_desc->addr_offset =3D addr - msi->base_addr; + intr_desc->data =3D entry->msg.data + vector_offset; + intr_desc->vector_offset =3D vector_offset; =20 return 0; } @@ -220,12 +221,13 @@ static int ntb_msi_set_desc(struct ntb_dev *ntb, stru= ct msi_desc *entry, static void ntb_msi_write_msg(struct msi_desc *entry, void *data) { struct ntb_msi_devres *dr =3D data; + struct ntb_msi *msi =3D dr->ntb->intr_priv; =20 - WARN_ON(ntb_msi_set_desc(dr->ntb, entry, dr->msi_desc, - dr->msi_desc->vector_offset)); + WARN_ON(ntb_msi_set_desc(dr->ntb, entry, dr->intr_desc, + dr->intr_desc->vector_offset)); =20 - if (dr->ntb->msi->desc_changed) - dr->ntb->msi->desc_changed(dr->ntb->ctx); + if (msi->desc_changed) + msi->desc_changed(dr->ntb->ctx); } =20 static void ntbm_msi_callback_release(struct device *dev, void *res) @@ -237,7 +239,7 @@ static void ntbm_msi_callback_release(struct device *de= v, void *res) } =20 static int ntbm_msi_setup_callback(struct ntb_dev *ntb, struct msi_desc *e= ntry, - struct ntb_msi_desc *msi_desc) + struct ntb_intr_desc *intr_desc) { struct ntb_msi_devres *dr; =20 @@ -248,7 +250,7 @@ static int ntbm_msi_setup_callback(struct ntb_dev *ntb,= struct msi_desc *entry, =20 dr->ntb =3D ntb; dr->entry =3D entry; - dr->msi_desc =3D msi_desc; + dr->intr_desc =3D intr_desc; =20 devres_add(&ntb->dev, dr); =20 @@ -259,14 +261,12 @@ static int ntbm_msi_setup_callback(struct ntb_dev *nt= b, struct msi_desc *entry, } =20 /** - * ntbm_msi_request_threaded_irq() - allocate an MSI interrupt + * ntb_msi_request_irq() - allocate an MSI interrupt * @ntb: NTB device context * @handler: Function to be called when the IRQ occurs - * @thread_fn: Function to be called in a threaded interrupt context. NULL - * for clients which handle everything in @handler - * @name: An ascii name for the claiming device, dev_name(dev) if NULL - * @dev_id: A cookie passed back to the handler function - * @msi_desc: MSI descriptor data which triggers the interrupt + * @name: An ascii name for the claiming device, dev_name(dev) if NULL + * @dev_id: A cookie passed back to the handler function + * @intr_desc: Generic interrupt descriptor * * This function assigns an interrupt handler to an unused * MSI interrupt and returns the descriptor used to trigger @@ -281,19 +281,15 @@ static int ntbm_msi_setup_callback(struct ntb_dev *nt= b, struct msi_desc *entry, * * Return: IRQ number assigned on success, otherwise a negative error numb= er. */ -int ntbm_msi_request_threaded_irq(struct ntb_dev *ntb, irq_handler_t handl= er, - irq_handler_t thread_fn, - const char *name, void *dev_id, - struct ntb_msi_desc *msi_desc) +static int ntb_msi_request_irq(struct ntb_dev *ntb, irq_handler_t handler, + const char *name, void *dev_id, + struct ntb_intr_desc *intr_desc) { struct device *dev =3D &ntb->pdev->dev; struct msi_desc *entry; unsigned int virq; int ret, i; =20 - if (!ntb->msi) - return -EINVAL; - guard(msi_descs_lock)(dev); msi_for_each_desc(entry, dev, MSI_DESC_ASSOCIATED) { for (i =3D 0; i < entry->nvec_used; i++) { @@ -301,18 +297,17 @@ int ntbm_msi_request_threaded_irq(struct ntb_dev *ntb= , irq_handler_t handler, if (irq_has_action(virq)) continue; =20 - ret =3D devm_request_threaded_irq( - &ntb->dev, virq, handler, - thread_fn, 0, name, dev_id); + ret =3D devm_request_irq(&ntb->dev, virq, handler, + 0, name, dev_id); if (ret) continue; =20 - if (ntb_msi_set_desc(ntb, entry, msi_desc, i)) { + if (ntb_msi_set_desc(ntb, entry, intr_desc, i)) { devm_free_irq(&ntb->dev, virq, dev_id); continue; } =20 - ret =3D ntbm_msi_setup_callback(ntb, entry, msi_desc); + ret =3D ntbm_msi_setup_callback(ntb, entry, intr_desc); if (ret) { devm_free_irq(&ntb->dev, virq, dev_id); return ret; @@ -322,7 +317,23 @@ int ntbm_msi_request_threaded_irq(struct ntb_dev *ntb,= irq_handler_t handler, } return -ENODEV; } -EXPORT_SYMBOL(ntbm_msi_request_threaded_irq); + +/** + * ntb_msi_free_irq() - free an MSI interrupt + * @ntb: NTB device context + * @irq: IRQ number assigned + * @dev_id: A cookie passed back to the handler function + * @desc: Generic interrupt descriptor + * + * Free an IRQ assigned by ntb_msi_request_irq(). + * + * Return: void + */ +static void ntb_msi_free_irq(struct ntb_dev *ntb, int irq, void *dev_id, + struct ntb_intr_desc *desc) +{ + devm_free_irq(&ntb->dev, irq, dev_id); +} =20 /** * ntb_msi_peer_trigger() - Trigger an interrupt handler on a peer @@ -336,18 +347,30 @@ EXPORT_SYMBOL(ntbm_msi_request_threaded_irq); * * Return: Zero on success, otherwise a negative error number. */ -int ntb_msi_peer_trigger(struct ntb_dev *ntb, int peer, - struct ntb_msi_desc *desc) +static int ntb_msi_peer_trigger(struct ntb_dev *ntb, int peer, + struct ntb_intr_desc *desc) { + struct ntb_msi *msi =3D ntb->intr_priv; int idx; =20 - if (!ntb->msi) - return -EINVAL; + idx =3D desc->addr_offset / sizeof(*msi->peer_mws[peer]); =20 - idx =3D desc->addr_offset / sizeof(*ntb->msi->peer_mws[peer]); - - iowrite32(desc->data, &ntb->msi->peer_mws[peer][idx]); + iowrite32(desc->data, &msi->peer_mws[peer][idx]); =20 return 0; } -EXPORT_SYMBOL(ntb_msi_peer_trigger); + +static const struct ntb_intr_backend ntb_intr_backend_msi =3D { + .name =3D "msi", + .init =3D ntb_msi_init, + .setup_mws =3D ntb_msi_setup_mws, + .clear_mws =3D ntb_msi_clear_mws, + .request_irq =3D ntb_msi_request_irq, + .free_irq =3D ntb_msi_free_irq, + .peer_trigger =3D ntb_msi_peer_trigger, +}; + +const struct ntb_intr_backend *ntb_intr_msi_backend(void) +{ + return &ntb_intr_backend_msi; +} diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index 4695eb5e6831..ff4a149680c5 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -205,8 +205,8 @@ struct ntb_transport_qp { =20 bool use_msi; int msi_irq; - struct ntb_msi_desc msi_desc; - struct ntb_msi_desc peer_msi_desc; + struct ntb_intr_desc intr_desc; + struct ntb_intr_desc peer_intr_desc; }; =20 struct ntb_transport_mw { @@ -714,16 +714,16 @@ static void ntb_transport_setup_qp_peer_msi(struct nt= b_transport_ctx *nt, if (spad >=3D ntb_spad_count(nt->ndev)) return; =20 - qp->peer_msi_desc.addr_offset =3D + qp->peer_intr_desc.addr_offset =3D ntb_peer_spad_read(qp->ndev, PIDX, spad); - qp->peer_msi_desc.data =3D + qp->peer_intr_desc.data =3D ntb_peer_spad_read(qp->ndev, PIDX, spad + 1); =20 dev_dbg(&qp->ndev->pdev->dev, "QP%d Peer MSI addr=3D%x data=3D%x\n", - qp_num, qp->peer_msi_desc.addr_offset, qp->peer_msi_desc.data); + qp_num, qp->peer_intr_desc.addr_offset, qp->peer_intr_desc.data); =20 - if (qp->peer_msi_desc.addr_offset =3D=3D INTR_INVALID_ADDR_OFFSET || - qp->peer_msi_desc.data =3D=3D INTR_INVALID_DATA) + if (qp->peer_intr_desc.addr_offset =3D=3D INTR_INVALID_ADDR_OFFSET || + qp->peer_intr_desc.data =3D=3D INTR_INVALID_DATA) dev_info(&qp->ndev->pdev->dev, "Invalid addr_offset or data, falling back to doorbell\n"); else { @@ -756,9 +756,9 @@ static void ntb_transport_setup_qp_msi(struct ntb_trans= port_ctx *nt, } =20 if (!qp->msi_irq) { - qp->msi_irq =3D ntbm_msi_request_irq(qp->ndev, ntb_transport_isr, + qp->msi_irq =3D ntb_intr_request_irq(qp->ndev, ntb_transport_isr, KBUILD_MODNAME, qp, - &qp->msi_desc); + &qp->intr_desc); if (qp->msi_irq < 0) { dev_warn(&qp->ndev->pdev->dev, "Unable to allocate MSI interrupt for qp%d\n", @@ -767,22 +767,22 @@ static void ntb_transport_setup_qp_msi(struct ntb_tra= nsport_ctx *nt, } } =20 - rc =3D ntb_spad_write(qp->ndev, spad, qp->msi_desc.addr_offset); + rc =3D ntb_spad_write(qp->ndev, spad, qp->intr_desc.addr_offset); if (rc) goto err_free_interrupt; =20 - rc =3D ntb_spad_write(qp->ndev, spad + 1, qp->msi_desc.data); + rc =3D ntb_spad_write(qp->ndev, spad + 1, qp->intr_desc.data); if (rc) goto err_free_interrupt; =20 dev_dbg(&qp->ndev->pdev->dev, "QP%d MSI %d addr=3D%x data=3D%x\n", - qp_num, qp->msi_irq, qp->msi_desc.addr_offset, - qp->msi_desc.data); + qp_num, qp->msi_irq, qp->intr_desc.addr_offset, + qp->intr_desc.data); =20 return; =20 err_free_interrupt: - devm_free_irq(&nt->ndev->dev, qp->msi_irq, qp); + ntb_intr_free_irq(qp->ndev, qp->msi_irq, qp, &qp->intr_desc); } =20 static void ntb_transport_msi_peer_desc_changed(struct ntb_transport_ctx *= nt) @@ -795,7 +795,7 @@ static void ntb_transport_msi_peer_desc_changed(struct = ntb_transport_ctx *nt) ntb_transport_setup_qp_peer_msi(nt, i); } =20 -static void ntb_transport_msi_desc_changed(void *data) +static void ntb_transport_intr_desc_changed(void *data) { struct ntb_transport_ctx *nt =3D data; int i; @@ -1072,7 +1072,7 @@ static void ntb_transport_link_work(struct work_struc= t *work) /* send the local info, in the opposite order of the way we read it */ =20 if (nt->use_intr) { - rc =3D ntb_msi_setup_mws(ndev); + rc =3D ntb_intr_setup_mws(ndev); if (rc) { dev_warn(&pdev->dev, "Failed to register MSI memory window: %d\n", @@ -1321,7 +1321,7 @@ static int ntb_transport_probe(struct ntb_client *sel= f, struct ntb_dev *ndev) * we will reserve the last MW for the MSI window. */ if (use_intr && mw_count > 1) { - rc =3D ntb_msi_init(ndev, ntb_transport_msi_desc_changed); + rc =3D ntb_intr_init(ndev, ntb_transport_intr_desc_changed); if (!rc) { mw_count -=3D 1; nt->use_intr =3D true; @@ -1803,7 +1803,7 @@ static void ntb_tx_copy_callback(void *data, iowrite32(entry->flags | DESC_DONE_FLAG, &hdr->flags); =20 if (qp->use_msi) - ntb_msi_peer_trigger(qp->ndev, PIDX, &qp->peer_msi_desc); + ntb_intr_peer_trigger(qp->ndev, PIDX, &qp->peer_intr_desc); else ntb_peer_db_set(qp->ndev, BIT_ULL(qp->qp_num)); =20 diff --git a/drivers/ntb/test/ntb_msi_test.c b/drivers/ntb/test/ntb_msi_tes= t.c index 4e18e08776c9..d037892e752e 100644 --- a/drivers/ntb/test/ntb_msi_test.c +++ b/drivers/ntb/test/ntb_msi_test.c @@ -26,7 +26,7 @@ struct ntb_msit_ctx { int irq_num; int occurrences; struct ntb_msit_ctx *nm; - struct ntb_msi_desc desc; + struct ntb_intr_desc desc; } *isr_ctx; =20 struct ntb_msit_peer { @@ -34,7 +34,7 @@ struct ntb_msit_ctx { int pidx; int num_irqs; struct completion init_comp; - struct ntb_msi_desc *msi_desc; + struct ntb_intr_desc *intr_desc; } peers[]; }; =20 @@ -62,7 +62,7 @@ static void ntb_msit_setup_work(struct work_struct *work) int ret; uintptr_t i; =20 - ret =3D ntb_msi_setup_mws(nm->ntb); + ret =3D ntb_intr_setup_mws(nm->ntb); if (ret) { dev_err(&nm->ntb->dev, "Unable to setup MSI windows: %d\n", ret); @@ -74,7 +74,7 @@ static void ntb_msit_setup_work(struct work_struct *work) nm->isr_ctx[i].nm =3D nm; =20 if (!nm->isr_ctx[i].irq_num) { - irq =3D ntbm_msi_request_irq(nm->ntb, ntb_msit_isr, + irq =3D ntb_intr_request_irq(nm->ntb, ntb_msit_isr, KBUILD_MODNAME, &nm->isr_ctx[i], &nm->isr_ctx[i].desc); @@ -131,7 +131,7 @@ static void ntb_msit_link_event(void *ctx) static void ntb_msit_copy_peer_desc(struct ntb_msit_ctx *nm, int peer) { int i; - struct ntb_msi_desc *desc =3D nm->peers[peer].msi_desc; + struct ntb_intr_desc *desc =3D nm->peers[peer].intr_desc; int irq_count =3D nm->peers[peer].num_irqs; =20 for (i =3D 0; i < irq_count; i++) { @@ -149,7 +149,7 @@ static void ntb_msit_copy_peer_desc(struct ntb_msit_ctx= *nm, int peer) static void ntb_msit_db_event(void *ctx, int vec) { struct ntb_msit_ctx *nm =3D ctx; - struct ntb_msi_desc *desc; + struct ntb_intr_desc *desc; u64 peer_mask =3D ntb_db_read(nm->ntb); u32 irq_count; int peer; @@ -168,8 +168,8 @@ static void ntb_msit_db_event(void *ctx, int vec) if (!desc) continue; =20 - kfree(nm->peers[peer].msi_desc); - nm->peers[peer].msi_desc =3D desc; + kfree(nm->peers[peer].intr_desc); + nm->peers[peer].intr_desc =3D desc; nm->peers[peer].num_irqs =3D irq_count; =20 ntb_msit_copy_peer_desc(nm, peer); @@ -191,8 +191,8 @@ static int ntb_msit_dbgfs_trigger(void *data, u64 idx) dev_dbg(&peer->nm->ntb->dev, "trigger irq %llu on peer %u\n", idx, peer->pidx); =20 - return ntb_msi_peer_trigger(peer->nm->ntb, peer->pidx, - &peer->msi_desc[idx]); + return ntb_intr_peer_trigger(peer->nm->ntb, peer->pidx, + &peer->intr_desc[idx]); } =20 DEFINE_DEBUGFS_ATTRIBUTE(ntb_msit_trigger_fops, NULL, @@ -344,7 +344,7 @@ static int ntb_msit_probe(struct ntb_client *client, st= ruct ntb_dev *ntb) return ret; } =20 - ret =3D ntb_msi_init(ntb, ntb_msit_desc_changed); + ret =3D ntb_intr_init(ntb, ntb_msit_desc_changed); if (ret) { dev_err(&ntb->dev, "Unable to initialize MSI library: %d\n", ret); @@ -392,10 +392,10 @@ static void ntb_msit_remove(struct ntb_client *client= , struct ntb_dev *ntb) =20 ntb_link_disable(ntb); ntb_db_set_mask(ntb, ntb_db_valid_mask(ntb)); - ntb_msi_clear_mws(ntb); + ntb_intr_clear_mws(ntb); =20 for (i =3D 0; i < ntb_peer_port_count(ntb); i++) - kfree(nm->peers[i].msi_desc); + kfree(nm->peers[i].intr_desc); =20 ntb_clear_ctx(ntb); ntb_msit_remove_dbgfs(nm); diff --git a/include/linux/ntb.h b/include/linux/ntb.h index 9f819c7383a3..1a88fe45471e 100644 --- a/include/linux/ntb.h +++ b/include/linux/ntb.h @@ -63,7 +63,7 @@ =20 struct ntb_client; struct ntb_dev; -struct ntb_msi; +struct ntb_intr_backend; struct pci_dev; struct pci_epc; =20 @@ -438,8 +438,9 @@ struct ntb_dev { /* block unregister until device is fully released */ struct completion released; =20 -#ifdef CONFIG_NTB_MSI - struct ntb_msi *msi; +#ifdef CONFIG_NTB_INTR_COMMON + void *intr_priv; + const struct ntb_intr_backend *intr_backend; #endif }; #define dev_ntb(__dev) container_of((__dev), struct ntb_dev, dev) @@ -1659,58 +1660,78 @@ static inline int ntb_peer_highest_mw_idx(struct nt= b_dev *ntb, int pidx) return ntb_mw_count(ntb, pidx) - ret - 1; } =20 -struct ntb_msi_desc { +struct ntb_intr_desc { u32 addr_offset; u32 data; u16 vector_offset; }; =20 -#ifdef CONFIG_NTB_MSI +struct ntb_intr_backend { + const char *name; + int (*init)(struct ntb_dev *ntb, void (*desc_changed)(void *ctx)); + int (*setup_mws)(struct ntb_dev *ntb); + void (*clear_mws)(struct ntb_dev *ntb); + int (*request_irq)(struct ntb_dev *ntb, irq_handler_t handler, + const char *name, void *dev_id, + struct ntb_intr_desc *desc); + void (*free_irq)(struct ntb_dev *ntb, int irq, void *dev_id, + struct ntb_intr_desc *desc); + int (*peer_trigger)(struct ntb_dev *ntb, int pidx, + struct ntb_intr_desc *desc); + int (*peer_addr)(struct ntb_dev *ntb, int pidx, + const struct ntb_intr_desc *local, phys_addr_t *addr); +}; + +#ifdef CONFIG_NTB_INTR_COMMON =20 -int ntb_msi_init(struct ntb_dev *ntb, void (*desc_changed)(void *ctx)); -int ntb_msi_setup_mws(struct ntb_dev *ntb); -void ntb_msi_clear_mws(struct ntb_dev *ntb); -int ntbm_msi_request_threaded_irq(struct ntb_dev *ntb, irq_handler_t handl= er, - irq_handler_t thread_fn, - const char *name, void *dev_id, - struct ntb_msi_desc *msi_desc); -int ntb_msi_peer_trigger(struct ntb_dev *ntb, int peer, - struct ntb_msi_desc *desc); +int ntb_intr_init(struct ntb_dev *ntb, void (*desc_changed)(void *ctx)); +int ntb_intr_setup_mws(struct ntb_dev *ntb); +void ntb_intr_clear_mws(struct ntb_dev *ntb); +int ntb_intr_request_irq(struct ntb_dev *ntb, irq_handler_t handler, + const char *name, void *dev_id, + struct ntb_intr_desc *intr_desc); +void ntb_intr_free_irq(struct ntb_dev *ntb, int irq, void *dev_id, + struct ntb_intr_desc *intr_desc); +int ntb_intr_peer_trigger(struct ntb_dev *ntb, int peer, + struct ntb_intr_desc *desc); =20 -#else /* not CONFIG_NTB_MSI */ +#else /* not CONFIG_NTB_INTR_COMMON */ =20 -static inline int ntb_msi_init(struct ntb_dev *ntb, +static inline int ntb_intr_init(struct ntb_dev *ntb, void (*desc_changed)(void *ctx)) { return -EOPNOTSUPP; } -static inline int ntb_msi_setup_mws(struct ntb_dev *ntb) +static inline int ntb_intr_setup_mws(struct ntb_dev *ntb) { return -EOPNOTSUPP; } -static inline void ntb_msi_clear_mws(struct ntb_dev *ntb) {} -static inline int ntbm_msi_request_threaded_irq(struct ntb_dev *ntb, - irq_handler_t handler, - irq_handler_t thread_fn, - const char *name, void *dev_id, - struct ntb_msi_desc *msi_desc) +static inline void ntb_intr_clear_mws(struct ntb_dev *ntb) {} +static inline int ntb_intr_request_irq(struct ntb_dev *ntb, + irq_handler_t handler, + const char *name, void *dev_id, + struct ntb_intr_desc *intr_desc) { return -EOPNOTSUPP; } -static inline int ntb_msi_peer_trigger(struct ntb_dev *ntb, int peer, - struct ntb_msi_desc *desc) +static inline void ntb_intr_free_irq(struct ntb_dev *ntb, int irq, void *d= ev_id, + struct ntb_intr_desc *desc) +{ +} +static inline int ntb_intr_peer_trigger(struct ntb_dev *ntb, int peer, + struct ntb_intr_desc *desc) { return -EOPNOTSUPP; } -#endif /* CONFIG_NTB_MSI */ +#endif /* CONFIG_NTB_INTR_COMMON */ =20 -static inline int ntbm_msi_request_irq(struct ntb_dev *ntb, - irq_handler_t handler, - const char *name, void *dev_id, - struct ntb_msi_desc *msi_desc) +#ifdef CONFIG_NTB_MSI +extern const struct ntb_intr_backend *ntb_intr_msi_backend(void); +#else +static inline const struct ntb_intr_backend *ntb_intr_msi_backend(void) { - return ntbm_msi_request_threaded_irq(ntb, handler, NULL, name, - dev_id, msi_desc); + return NULL; } +#endif /* CONFIG_NTB_MSI */ =20 #endif --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010001.outbound.protection.outlook.com [52.101.229.1]) (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 94D732FFDFC; Thu, 23 Oct 2025 07:19:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.1 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761204000; cv=fail; b=aUsL06967F+ht3zDWRFB4BitorJ06NRS3SROOMBTdhVWvnM9ufotQhfZghWALvYvAcHyVUOunwmnVldbOBHJ+dJTsNb5GIYJ8u/xKc5Qr16bGxNkaCRgOIABnFpWbfYUtgxDPneZXgbnVcwNBQfQ0YG1Bi4xk08JGbKsaxUXzEE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761204000; c=relaxed/simple; bh=fjJhqRCWj3fTwesjpdgQWW6pj9o8yCh1GVPgWhfQIfk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=hnRvkhvLjfSKHMaPfhxJXhBNxcel54316EtVSBTG2cDJpoL1oyGgNWRP6OzjLjavyEQb6mZO9KaODv3qdN+XJ6jJWKYXcEFyESECuc8NnpjQeptdQ7ARZ0z8cN8NIcmQ/YcqyNelxw8SObP2VUFJyt8DVSg7b/PTGVcjrlJ3YYo= 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=S5YnTbtE; arc=fail smtp.client-ip=52.101.229.1 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="S5YnTbtE" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lDK1Bb3BRB7mc0FQPHp0A+cyuf4O6XlHG0FZ+IqZXCWTUD8KXYZ04rioRNQaH9/SBgOc5qkO/F2vmaI3Q+pGZurFe6WGESitzMnUEbkj4jMmiGoj7hiBq1dUQg4Z0MowipeVHWYssTjBdp9AEo7HNG/q6AnuzcnrOazbd6mqHsca4//Swu8Z28RGbQoAWj6wSA7WIhDRDRgyL3+D17DJDYACw54ISZayyBcJCfzbICFTqac3Rf5Dz3RZD5SiLQYsPwsbv4CIEL1QTvYS/BAXn5MlDG+GCK+EtXx+1m3THvSKcGLDr8Vew/oDRMgeArVbIEKkZtHCgdwVVAxocuEMPg== 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=94Mtazti3JysasAtnCHIJES2qclBLehTS/GYXSjhAHU=; b=BbtUBKVRcmeI7C3VkDyDA5hVy+wsk8G0vsp20rQRQ0W8E83ZhDIgJyTew8Rt9xjyJdkAHyS6q8sxBIpcXGlOxG1JLx0SUxzvFZzvoIuOh3njObTC5c0LmtTl85wVFZuyRdYfrhQa0l04uCS9B76SkmzcIsOW1FxBk5YNyPkJnOKiXctiFQtgX8hX6jDRJ75ETLNpPkEMbYYlGoBCQhy5zk2l+e42zUUSLKVwUzod8xfU4O/GR/UbSvbLa9auER2ChojFeC2h1OCTwoLhPXSxrIlApOyIkKplgB0hMkfO1c+ry5qrdiFgNItITz3O2IXGIxLaNncotSxCxwoc+Cs7zw== 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=94Mtazti3JysasAtnCHIJES2qclBLehTS/GYXSjhAHU=; b=S5YnTbtEDhwx6OBgXMdFkX4kezJSWtM5eVOD3ejuFq6FIdR3j1Tx/x3TZteacw8YqGpBDZzggN8xzhYhpdrsY0qOWRdwj42vVoQk+pJRJUuQpFVihkVtrlKxy7XzSxjFfDdkhHOMVqLopPHv2mMno6lZtHbN607wO3D2Y8LSeL0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by TYRP286MB4555.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:1b0::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:50 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:50 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 22/25] NTB: ntb_transport: Rename MSI symbols to generic interrupt form Date: Thu, 23 Oct 2025 16:19:13 +0900 Message-ID: <20251023071916.901355-23-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0042.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:2be::18) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|TYRP286MB4555:EE_ X-MS-Office365-Filtering-Correlation-Id: 0dad12b8-812c-4eb4-543f-08de12048da5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|10070799003|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?5Uhdpd/Aye1/OKpCKR6c54vk4PK1r1VxUCPtsEHmIhRurXiqsABOLMLR4Wd/?= =?us-ascii?Q?vOnPQtii6D/jcRV3jTJqU9hv5M4kia7DDOHeXfvZCvePzKxJwbnfcTk8DuOw?= =?us-ascii?Q?ccGFPhpEoIbiJqp0TzNrfFQ4oHQOUuw8JS4+zA+O8F9Qo4PBw6Fo0H7XJMkc?= =?us-ascii?Q?6BB1URspPeT3NYF7XHn5vFSMzFnIDz8ihErwXHRZvQZNcrAXMGjnq0HJ6Vnu?= =?us-ascii?Q?UB1NPSZAkSjmEv22PnmHfrQ9MBlrgfFFZ7WrXTW51IzuJ2I+kA7iNp2UMAbk?= =?us-ascii?Q?r1A+aUDMVd5dwWpDnGu9XshEFQ9edFZVbeqsXOJUV/QI8iMIULE2XoN7svy/?= =?us-ascii?Q?VmB84TdlYRSpk4wU6wlBjS6iwsyWI3hqV/VMPEZdAWPu9GPMxId39/w1N5uA?= =?us-ascii?Q?+akK2neKwQvXbX45I7vyFSlRyAMl4BKYvxLE4qcN5u+aDAZd0oInUHTMaGOB?= =?us-ascii?Q?XDRK6Ls6O//3NVa6MgBocq/zSM9rCe9DLhfAK5CgSh7UgoWVUtGqEEluTwxW?= =?us-ascii?Q?v2HR7jFBWuUyHPWN2BCfujia+BcQawEBeYuJjO0V+o7jLa2rfrKGNG+nlox3?= =?us-ascii?Q?rq+fwxBvt2wwthcccgp+ZVU/pf6WeuyWNI362+m0h3iuhF22xQMmTBnQIRdO?= =?us-ascii?Q?hW26g9cRptdDIVR4usTNc6knC+kofArXg0U4/UMffUKyFu6E+R7AyZDnAMt6?= =?us-ascii?Q?JnKCH9Cq6AFn8GKwZv5D7n3AONKsQNbrnu9WcVtQ49h5YePsRJsI9v+t0YNu?= =?us-ascii?Q?0PQVgKdoxOvlfBsgWd7eBdt+UR2u357zhUiv9tNHFoAex+7/G0QcEJKSAZxg?= =?us-ascii?Q?BExS/YTMGdaJp9gGo6MtAJlzEf83v+Lac9VBcnEKOT/rWJSrxDRpnbqQzS+/?= =?us-ascii?Q?j2ZtuEtH4MCjuJ8UIhh4AVumHHLFjCdilbj16siscwhp01z96HT9H6hIxl7f?= =?us-ascii?Q?qoGUnGy0IMyXxtms/k/yZ3h5hp4DRb3yVc2xO7R4xuhxQsLD4DguDNpp2jmI?= =?us-ascii?Q?LnWqH+jvOduvMgEUuhbKGe4N7RBHJB8YW/qXmR9z4xh5jKgy7qW6qKK4C2lb?= =?us-ascii?Q?HgTRG3ygTBp6IeQ/8LnPAYt3jzWgPnzbOyliMtxM0+CdqQlZk260Cr0qgbDT?= =?us-ascii?Q?WTj98f4BJEwueOIC6kPcLWzxofUczkw44k+0GYHUR3vauyWDkNfmX2OzRm1B?= =?us-ascii?Q?wXeWoZWs2/GMD/NRb5eDx6Us8rP3X+/j0F5R9s8zd6yBnxiM1TcH89iAOEsP?= =?us-ascii?Q?M0khUm95KltOolFZ1XyfSMuvsR7fP1CucqKh206ROI6RQoHV1+N8quZ0UGNa?= =?us-ascii?Q?uRPZ6Qqngq6ALFl/dSCXRGzUo0EheJj+W/jGhdxzgG3iOABInLPe3M2bFZvn?= =?us-ascii?Q?iErHSCTNX1acznROYocybBmKNy0q+odF27ciBl1gzmLE6wFVDL4Js04fNWLR?= =?us-ascii?Q?ykbkq8yubWpAO8NrQG+067Ujwe/BpXll?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(10070799003)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Zw0fA0a/v7tcpcSiqQjG9kYr7CPaCHdyiekLai6clOvJD6qPhuwme4uDk4CI?= =?us-ascii?Q?oFC7f6VGRqtSCQu9nm65rIHZUVLku/dwVI8TOR4DlO6CgI7tGc8UVxhayrSg?= =?us-ascii?Q?VdyEK0/1HzJlnc4j5VBPy116WT/iOvpbKBVJxJiMBsksW33GOZwwgThWxU12?= =?us-ascii?Q?D7V0LBPD1J62/5pxrU2zSXOyLTRytk3f7BHnSanbXLbMRxG69cu+Os/XZZJy?= =?us-ascii?Q?M9j6IMp7WfP+jsLw1cFT90BhHguoZm7HL33srEVrshHOtGV6MFsiAAs/GE6x?= =?us-ascii?Q?WPJsMHx0W3DmqNKSoOWcETeU/hAWz09eD+560TvrEUFe6rGHOQUxVz05Nsnc?= =?us-ascii?Q?mKcnyOCfQ3AmFU8og0yhzmkc49O+rat8p0A2c49YOC1XSXvumX9Z5ONNj3Zq?= =?us-ascii?Q?7td6XKd2dPVnTYdgM7nmwH8IFi/4G35Hsou6UIT7uBlD2VFuDgXgTwTV9JXa?= =?us-ascii?Q?bdcqVuBGwz9szkEBJ3ZD+kmSZH32vKsxmBBBjBQrFlB0uXTxguuiy7VQNU0i?= =?us-ascii?Q?rFgA4hxcJw7tRvRLJYeStFsOsePeclhi0KEJusjsiMO5nYae4Qrod3EdgSRr?= =?us-ascii?Q?Y0q2/h7H+qAR7i3OGC83+VKssxs2HaV4k4DhEQ9MjBBdWj4bPumhTNFLsg0A?= =?us-ascii?Q?NmoGsm5QA5q2W9ELdLaiMByKM6weJ8hEYt1isXbBQ+gvZob/uMYi9iZ48/Ms?= =?us-ascii?Q?mOqF9uunS1UjzgtZclX49wxyGp79cCtoX8DDLkTOdpTL2E+qYTXRFAIvr3fG?= =?us-ascii?Q?fpBObPGRGIN9zaJKKtakTA/7nYh8cKijXtp/ZtWJxXxu/Q0HRh70sMwsXk6+?= =?us-ascii?Q?a6OBY4UOs9+wXdkbJ1UJegJzf7TgGXqVDetC6tQr2GheTXSbhYh2t3DQfjsD?= =?us-ascii?Q?Y8TeetDadXBxQz00ooKCoT4ymuv1rmQ4Zcinwa9eQwpb9TrKq/wZwjytGatw?= =?us-ascii?Q?OLTBVci2N4GFnBXbqIvE2VpJtKA1rI/teKELsfX+ArvZfPux6TmNjclJx49j?= =?us-ascii?Q?sxTHHbbcmha9l08s4qf5EGso8Hatkyjr6u9ahBao+qX+iYHohHT3vN3jsK0c?= =?us-ascii?Q?sIciu+fGpXCdsulU55DrH+2S51kRj8xALd4H1iGQM2KDGjYahcrn5LGhnzh0?= =?us-ascii?Q?mM4AcUb9dDfNIYLSQxvjNgBBBtb4blLLwABdOO7HSu1ibLyqxNACRf6DyKH5?= =?us-ascii?Q?gmESGBkGV+HbrfwekDNa8MMRY3ZaD3vxiAtu085QSkK4PJEzpQVaNmiZEAKO?= =?us-ascii?Q?AkJWE8Y977Ilr/5l+lf6KMhRlA2ND5CTHUmJJrQVKspjgCdqnrG1X/8x33Ve?= =?us-ascii?Q?zW3tBuxiouTFgJnOoSCXdgON+WrmWGcRY+7XqYP9BZqAIGsfvf0h7fU3sF9X?= =?us-ascii?Q?JcYbYWDjgNa9Nlmm9cIT/4mQXuKmHV4y4w2xPu9PX5JsdARkmDVHH0lMEwob?= =?us-ascii?Q?MHJbCmxvURb3duh9Hzi0MGVdRPE9XPnAGdFP7z93OVGHbSC5AtWL2KWPrvzx?= =?us-ascii?Q?Y7kUyy3GsheUragkhn/zA06g0EraiWyTZl1/N2KnD8mUeG3pwAHvsHAExnGt?= =?us-ascii?Q?/spGMVESTI0FzPr+6sAS35IO1ljF/qnjroG99TsBVWwk/eQl6cLpBtUcgC4G?= =?us-ascii?Q?Sl6kudGTukjAX8FmBeG1z+k=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 0dad12b8-812c-4eb4-543f-08de12048da5 X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:49.9878 (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: YrkL3TAEwpnp2JJ9Y0y6VtJyCRo3++/yulJ1pq7P6WMfT2K7F3Mt+M4ZyqyB/nMPlpkLeiXhO+2SCENslvZ25g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYRP286MB4555 Content-Type: text/plain; charset="utf-8" Rename the remaining MSI-specific symbols and functions in ntb_transport to reflect their new generic interrupt backend usage. This unifies naming for both MSI-based and non-MSI backends. No functional changes. Signed-off-by: Koichiro Den --- drivers/ntb/ntb_transport.c | 84 ++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index ff4a149680c5..a4f51c9f18b7 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -203,8 +203,8 @@ struct ntb_transport_qp { u64 tx_memcpy; u64 tx_async; =20 - bool use_msi; - int msi_irq; + bool use_intr; + int irq; struct ntb_intr_desc intr_desc; struct ntb_intr_desc peer_intr_desc; }; @@ -241,8 +241,8 @@ struct ntb_transport_ctx { u64 qp_bitmap_free; =20 bool use_intr; - unsigned int msi_spad_offset; - u64 msi_db_mask; + unsigned int intr_spad_offset; + u64 intr_db_mask; =20 bool link_is_up; struct delayed_work link_work; @@ -702,11 +702,11 @@ static irqreturn_t ntb_transport_isr(int irq, void *d= ev) return IRQ_HANDLED; } =20 -static void ntb_transport_setup_qp_peer_msi(struct ntb_transport_ctx *nt, - unsigned int qp_num) +static void ntb_transport_setup_qp_peer_intr(struct ntb_transport_ctx *nt, + unsigned int qp_num) { struct ntb_transport_qp *qp =3D &nt->qp_vec[qp_num]; - int spad =3D qp_num * 2 + nt->msi_spad_offset; + int spad =3D qp_num * 2 + nt->intr_spad_offset; =20 if (!nt->use_intr) return; @@ -719,7 +719,7 @@ static void ntb_transport_setup_qp_peer_msi(struct ntb_= transport_ctx *nt, qp->peer_intr_desc.data =3D ntb_peer_spad_read(qp->ndev, PIDX, spad + 1); =20 - dev_dbg(&qp->ndev->pdev->dev, "QP%d Peer MSI addr=3D%x data=3D%x\n", + dev_dbg(&qp->ndev->pdev->dev, "QP%d Peer interruption addr=3D%x data=3D%x= \n", qp_num, qp->peer_intr_desc.addr_offset, qp->peer_intr_desc.data); =20 if (qp->peer_intr_desc.addr_offset =3D=3D INTR_INVALID_ADDR_OFFSET || @@ -727,20 +727,20 @@ static void ntb_transport_setup_qp_peer_msi(struct nt= b_transport_ctx *nt, dev_info(&qp->ndev->pdev->dev, "Invalid addr_offset or data, falling back to doorbell\n"); else { - qp->use_msi =3D true; + qp->use_intr =3D true; dev_info(&qp->ndev->pdev->dev, - "Using MSI interrupts for QP%d\n", qp_num); + "Using interrupts for QP%d\n", qp_num); } } =20 -static void ntb_transport_setup_qp_msi(struct ntb_transport_ctx *nt, - unsigned int qp_num, bool changed) +static void ntb_transport_setup_qp_intr(struct ntb_transport_ctx *nt, + unsigned int qp_num, bool changed) { struct ntb_transport_qp *qp =3D &nt->qp_vec[qp_num]; - int spad =3D qp_num * 2 + nt->msi_spad_offset; + int spad =3D qp_num * 2 + nt->intr_spad_offset; int rc; =20 - if (!changed && qp->msi_irq) + if (!changed && qp->irq) return; =20 ntb_spad_write(qp->ndev, spad, INTR_INVALID_ADDR_OFFSET); @@ -751,17 +751,17 @@ static void ntb_transport_setup_qp_msi(struct ntb_tra= nsport_ctx *nt, =20 if (spad >=3D ntb_spad_count(nt->ndev)) { dev_warn_once(&qp->ndev->pdev->dev, - "Not enough SPADS to use MSI interrupts\n"); + "Not enough SPADS to use interrupts\n"); return; } =20 - if (!qp->msi_irq) { - qp->msi_irq =3D ntb_intr_request_irq(qp->ndev, ntb_transport_isr, - KBUILD_MODNAME, qp, - &qp->intr_desc); - if (qp->msi_irq < 0) { + if (!qp->irq) { + qp->irq =3D ntb_intr_request_irq(qp->ndev, ntb_transport_isr, + KBUILD_MODNAME, qp, + &qp->intr_desc); + if (qp->irq < 0) { dev_warn(&qp->ndev->pdev->dev, - "Unable to allocate MSI interrupt for qp%d\n", + "Unable to allocate an interrupt for qp%d\n", qp_num); return; } @@ -775,24 +775,24 @@ static void ntb_transport_setup_qp_msi(struct ntb_tra= nsport_ctx *nt, if (rc) goto err_free_interrupt; =20 - dev_dbg(&qp->ndev->pdev->dev, "QP%d MSI %d addr=3D%x data=3D%x\n", - qp_num, qp->msi_irq, qp->intr_desc.addr_offset, + dev_dbg(&qp->ndev->pdev->dev, "QP%d Interrupt %d addr=3D%x data=3D%x\n", + qp_num, qp->irq, qp->intr_desc.addr_offset, qp->intr_desc.data); =20 return; =20 err_free_interrupt: - ntb_intr_free_irq(qp->ndev, qp->msi_irq, qp, &qp->intr_desc); + ntb_intr_free_irq(qp->ndev, qp->irq, qp, &qp->intr_desc); } =20 -static void ntb_transport_msi_peer_desc_changed(struct ntb_transport_ctx *= nt) +static void ntb_transport_intr_peer_desc_changed(struct ntb_transport_ctx = *nt) { int i; =20 - dev_dbg(&nt->ndev->pdev->dev, "Peer MSI descriptors changed"); + dev_dbg(&nt->ndev->pdev->dev, "Peer Interrupt descriptors changed"); =20 for (i =3D 0; i < nt->qp_count; i++) - ntb_transport_setup_qp_peer_msi(nt, i); + ntb_transport_setup_qp_peer_intr(nt, i); } =20 static void ntb_transport_intr_desc_changed(void *data) @@ -800,12 +800,12 @@ static void ntb_transport_intr_desc_changed(void *dat= a) struct ntb_transport_ctx *nt =3D data; int i; =20 - dev_dbg(&nt->ndev->pdev->dev, "MSI descriptors changed"); + dev_dbg(&nt->ndev->pdev->dev, "Interrupt descriptors changed"); =20 for (i =3D 0; i < nt->qp_count; i++) - ntb_transport_setup_qp_msi(nt, i, true); + ntb_transport_setup_qp_intr(nt, i, true); =20 - ntb_peer_db_set(nt->ndev, nt->msi_db_mask); + ntb_peer_db_set(nt->ndev, nt->intr_db_mask); } =20 static void ntb_free_mw(struct ntb_transport_ctx *nt, int num_mw) @@ -1075,14 +1075,14 @@ static void ntb_transport_link_work(struct work_str= uct *work) rc =3D ntb_intr_setup_mws(ndev); if (rc) { dev_warn(&pdev->dev, - "Failed to register MSI memory window: %d\n", + "Failed to register Interrupt memory window: %d\n", rc); nt->use_intr =3D false; } } =20 for (i =3D 0; i < nt->qp_count; i++) - ntb_transport_setup_qp_msi(nt, i, false); + ntb_transport_setup_qp_intr(nt, i, false); =20 for (i =3D 0; i < nt->mw_count; i++) { size =3D nt->mw_vec[i].phys_size; @@ -1141,7 +1141,7 @@ static void ntb_transport_link_work(struct work_struc= t *work) struct ntb_transport_qp *qp =3D &nt->qp_vec[i]; =20 ntb_transport_setup_qp_mw(nt, i); - ntb_transport_setup_qp_peer_msi(nt, i); + ntb_transport_setup_qp_peer_intr(nt, i); =20 if (qp->client_ready) schedule_delayed_work(&qp->link_work, 0); @@ -1317,8 +1317,8 @@ static int ntb_transport_probe(struct ntb_client *sel= f, struct ntb_dev *ndev) nt->ndev =3D ndev; =20 /* - * If we are using MSI, and have at least one extra memory window, - * we will reserve the last MW for the MSI window. + * If we are using interrupt, and have at least one extra memory window, + * we will reserve the last MW for the interrupt window. */ if (use_intr && mw_count > 1) { rc =3D ntb_intr_init(ndev, ntb_transport_intr_desc_changed); @@ -1341,7 +1341,7 @@ static int ntb_transport_probe(struct ntb_client *sel= f, struct ntb_dev *ndev) max_mw_count_for_spads =3D (spad_count - MW0_SZ_HIGH) / 2; nt->mw_count =3D min(mw_count, max_mw_count_for_spads); =20 - nt->msi_spad_offset =3D nt->mw_count * 2 + MW0_SZ_HIGH; + nt->intr_spad_offset =3D nt->mw_count * 2 + MW0_SZ_HIGH; =20 nt->mw_vec =3D kcalloc_node(mw_count, sizeof(*nt->mw_vec), GFP_KERNEL, node); @@ -1375,8 +1375,8 @@ static int ntb_transport_probe(struct ntb_client *sel= f, struct ntb_dev *ndev) qp_count =3D ilog2(qp_bitmap); if (nt->use_intr) { qp_count -=3D 1; - nt->msi_db_mask =3D BIT_ULL(qp_count); - ntb_db_clear_mask(ndev, nt->msi_db_mask); + nt->intr_db_mask =3D BIT_ULL(qp_count); + ntb_db_clear_mask(ndev, nt->intr_db_mask); } =20 if (max_num_clients && max_num_clients < qp_count) @@ -1802,7 +1802,7 @@ static void ntb_tx_copy_callback(void *data, =20 iowrite32(entry->flags | DESC_DONE_FLAG, &hdr->flags); =20 - if (qp->use_msi) + if (qp->use_intr) ntb_intr_peer_trigger(qp->ndev, PIDX, &qp->peer_intr_desc); else ntb_peer_db_set(qp->ndev, BIT_ULL(qp->qp_num)); @@ -2477,9 +2477,9 @@ static void ntb_transport_doorbell_callback(void *dat= a, int vector) u64 db_bits; unsigned int qp_num; =20 - if (ntb_db_read(nt->ndev) & nt->msi_db_mask) { - ntb_transport_msi_peer_desc_changed(nt); - ntb_db_clear(nt->ndev, nt->msi_db_mask); + if (ntb_db_read(nt->ndev) & nt->intr_db_mask) { + ntb_transport_intr_peer_desc_changed(nt); + ntb_db_clear(nt->ndev, nt->intr_db_mask); } =20 db_bits =3D (nt->qp_bitmap & ~nt->qp_bitmap_free & --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010001.outbound.protection.outlook.com [52.101.229.1]) (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 9FD8E3002A7; Thu, 23 Oct 2025 07:20:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.1 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761204002; cv=fail; b=DXy3PoWV3dbmSxKr1WjiDQ8iSA70Ar9ZS0WWajQoZXRKwFZQiwYTkybYXKTE6bNEUF7eVSvJ9iISbirM81YZwedNfVsxBPwIyTDXSCFcD8Z7lnL50htnKs1sxDZdRaFIt9IX0npaQ2JNbdreG8TKUXCkU31poIRJv3vY71iMFZc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761204002; c=relaxed/simple; bh=uu6N67nDcBwKqODIPajhCIkafRwQ/69ej7P8bI7JNnY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=jslkD0Ny3SElBfEsATeKuBwWQkWVxMDfHCMnzw5ZiT+RmMd6DIqeCCqQL303e26xOltIz/KQ9Wo+FBIep+YGwSZCRKDtWlXviT6eJfDyXoXfrnadfDg/ymbjcmh40xeDm4U6pCXTHTg29Ogs7j0vVEDrNkpaXZRIAms0BYk1ToE= 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=C49l1S/T; arc=fail smtp.client-ip=52.101.229.1 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="C49l1S/T" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yGE3fwu3LJMKFZbaA64Vg742GckmuUBd4K5UhWFWnRflnGQuBohY3lkkk2ZdA+L7Fm3BbJXs3UzsXU9xURnhc4oVhpkOwNzNGD0Va4w6CC49Go0z8czXDCw7WbQfeOAvNDodoVULfkjRsSUy46QXm5OvLFljkMoCxkm2InP0UO0AdGAvKwvp2HB7ICC9wsgUu2mrP7tl4TCkwEjz6JDfXemu5KgBoqV6FgPTu3Y/B0llY3kCF/dF8o2Y7QBguT/pFJojAx7FppTMwTb1yECaZSRZE8Q1TIM2QfT/mw9NnMHndFTrglrMcMsrFvoeiIbe5qDcdw9AADKpyNXTETuZqA== 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=E+qQK1lbIBDEO+Ac9RCJO+5eASwT3EpZ4LQu5FT/aao=; b=uyJwrGznWG8o18ZyTAigeNRhiyZqzKq0J3iJMjWOwDEdzA0B9hRA7CcUGpRbC4WcW/zJK08HcmwmR2JlPlVCDMwAdNRN9rtVKf4STSwxEt7vfvCKS1IRbuGI80Jn1WY5PPEHfoonTh0BlFvmzvZWjjrSxyoYI2Vt2r8nJE0AM+ypOY7aYlczn95+jTcDHpdjKd1P6y1TH5V67RBnAx+ld/xVtQiv+hxaJgPzaBcaZ2D98zOf8utLDVC+Szd9vBY4coQad5DVU1v6F8FX15KPSvm1AKIrkBlcEcT0zbioo+N5H4bAeFp6Uw5pnldQ0W8d9xQu00XuNipKFdlI6Q0kgA== 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=E+qQK1lbIBDEO+Ac9RCJO+5eASwT3EpZ4LQu5FT/aao=; b=C49l1S/T3XEiybxuHWEx6PEPkhlZUTclT2OTxXFYXEJoxl3L+Xjq9D48u/gmd7ViBhyaJrezcvsdcQ5OKxgHtbdFUQV0Hjvtt8wvcXon1YQiV9ioGr+wTVRMBqG2joLkic+5C0Rk5dy46k5HiQMNYERKav6PkwkraChhXtGVZZE= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by TYRP286MB4555.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:1b0::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:51 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:51 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 23/25] NTB: intr_dw_edma: Add DW eDMA emulated interrupt backend Date: Thu, 23 Oct 2025 16:19:14 +0900 Message-ID: <20251023071916.901355-24-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0274.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c9::10) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|TYRP286MB4555:EE_ X-MS-Office365-Filtering-Correlation-Id: 25c7e3f3-31fc-40ae-4c02-08de12048e60 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|10070799003|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ah2WM0LFx3lysjkR14ld+Q7jLIq/rNn03s6rm5JU/sxpTIjnrOqeXSSxJCuv?= =?us-ascii?Q?tRCTpYAdo+hOoSUVCtx1Kj1BcVeeYPeS4YJ40aKPz+LrBJQVL7778qa1xtlB?= =?us-ascii?Q?LgA6TAvo2KjiS+L/9xsEsizwM8nknHX2HhNyfyC3M2kXVyaIboEF9EeYyuw7?= =?us-ascii?Q?B6ic4BvVOYROZZ8u0zT/k68As/rQK09Js7w17GfzU4gzaUvjg8zmXO9riHA8?= =?us-ascii?Q?SNzDsu9QbZm3o0ABDwub6VegsyBEMwrKeiMFwdtQ67X30wQuUi3EF8V5eQmS?= =?us-ascii?Q?QjpADzQUVPJWchU1/D2x6/QxiesXxfVdSKu+LBLFm3X4CFhL9kJuPYHhDtMX?= =?us-ascii?Q?z0n8K6s0MzNPe6MBs5CJ9lYlUqTyCsUK8PIuQjtFGglh6qPMWT3oQCzVLZkC?= =?us-ascii?Q?zgelznhXjuzplrqHZISiuWCpnNttIQrEjLa51Cc95ja5EEwxY1ABidIcWoJY?= =?us-ascii?Q?BzY7rrurl6lrDAEmouNdHzCenIk6a/6bxE1/VpbZ1qyrsIn0uFf93z7ehXIa?= =?us-ascii?Q?KxgFUWM+NeABQpsHVd2Rhg+2b9XCmJH7Hvu0C6tzbpQpUp8h74V2v3ICpejg?= =?us-ascii?Q?NbLPDySd09UFmPhClZzFBEzW8XV7s5OhonsXkIV4QxWkZQDsTeCp570X65my?= =?us-ascii?Q?0SRAj38oLPB3+xn7plhO9k0a7THi3jZgxifym0GXztHF5F6lCyzrvDEdN8ro?= =?us-ascii?Q?s+S0EzKfXRiZC6fDA+pqWnV+xl7oJ6liJwdxMDAj1BqyBbfsfEalw0b2u+P0?= =?us-ascii?Q?WyAj/xJee9RdXhh8nYi8pUBKdw/IcUtmZdafjuhc5jacE/HG20rp6MTdfJcA?= =?us-ascii?Q?ESf+C8KsozghgPAO5Y+hZ4B7Vps2BNY2jq3FIErTXZLUwW34V+YleoBfI1ml?= =?us-ascii?Q?jQYw241e1Fbas+tI6jkaks/3RG1Fh0Z4E9GECxUHT0moYdROOyjX+JETT7Y5?= =?us-ascii?Q?PtUUkixyPLdbzGH17dSlMKjxRYIl1QyTmLeV7TQmqd1X5ZtgrqtgNzQ2K6CG?= =?us-ascii?Q?dJhufooQx4q243oDiIGDFNZZ/RLBl9IXbzism23IENNCDwxpYwg15mfP7xsF?= =?us-ascii?Q?/WG7z7TlF/JpuzXRJvaQMZ3tRZRVEWe6faBqEqGsduMWet/s/1bmRkflqucY?= =?us-ascii?Q?ZwxkQzR9SG89nU2352aPGw+IoL4CdzdKmgBU43kLZXIyA1s1uRj1ps70W/wp?= =?us-ascii?Q?inxw+JnxwbPH45qsFB/JfLAzUi4E7BYH9RFT9VkPIBBmsZ7I/LyiDTK3HmVV?= =?us-ascii?Q?eN6cXp0hCar70ssYosaB2891aYb81ECrbR4FwcxEXMy6ptGfcZp8tzf2+/HQ?= =?us-ascii?Q?aNENxbdCRYAHX6vxkI2eVtmPUa82G0PnY4u7H6cYxc/PXPakaQxoVvaOEEDi?= =?us-ascii?Q?VzHMAPNiG5zq0SuPUt5lZnf9plIoAAWZwLKDdDhFozJTSpxRZGdFkj/dd9iJ?= =?us-ascii?Q?yE2yzaq+oNlkLCzs8al/nTyloC6piNi8?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(10070799003)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4x9h7BEzRU9Tt2vtw/agW7IHpUmjd9MOoQNAxqwvwKPUnMiB51Xv1HVukoR+?= =?us-ascii?Q?jMQMLd3YvxJhmfcA4dkL2Cr8U7VJy6HLNP+vbB19fXvWp23onPYVlwo0rYdC?= =?us-ascii?Q?xj2/xx9ByxDU6KLefSh2vExqn75fmsrexDWQz8PtFcpIy7zzRnRH/SMXn+yv?= =?us-ascii?Q?LDj5s1SzU5HMlqcBPWi4bDs54RKgTPqiBCREo6BaV/c2sMkoD9o1NR1aTzcY?= =?us-ascii?Q?axhtKgwiQ0XWFjNkrhvZlFXGI3hOzxyB8iLPqzkHCAOtwY5i+IPsXF9FGQol?= =?us-ascii?Q?0jE4aASFkbk4+7XtZBuVXs/8XQxyb3njkob4ELBhgcNX6UW0IRnGkSJ5s2Au?= =?us-ascii?Q?DWN7KfpME735LZmlj6oUTx4XbQ57Dkt2CPeLGHFq+zKmIDv6HMO9thY5Dkzc?= =?us-ascii?Q?becM12lrZXtpGf+hbFAE38MuTAiE0kiPgyAK1QEMRf883PGSjKMSZYYydFIa?= =?us-ascii?Q?wFRhszbDWIHb2XWK4WPtp2Q+PNeeKtkmi+US8OvGPvSGhHF/2pFVr5ke7bOI?= =?us-ascii?Q?MIpOTlLRCtWTS3znMqKn05O0DJ441ajQw8q9TJGxv9juYCpU/oF2cexm5/Eu?= =?us-ascii?Q?d4iiaVFlfRb6TPMGoBU70ab8JKXcFyih1Ccqza5+6I2CtViTz+80rx6gg18r?= =?us-ascii?Q?kchT3zVcxX/FJbzJIRHOdJT2DNW9YLEdZb2vhEYZQeBHNeUQGCTTVuUcZRBg?= =?us-ascii?Q?FG8CqbpVlfuhJBHiqEZ/+FdRBpnvqnqnlnPQJJKPC3l8fE4unZL9wwNaivDs?= =?us-ascii?Q?dvaI0GjqwHYVTNfi7eCxAm4TJW+8tRSIe7+y8vUA/vaYwH/RV3oCN2aoKIrD?= =?us-ascii?Q?SdwaiBzbX8OyLemHe6ZqWsx/R7O+S1Kh5dVeVhCkzdi23SivNHuxiNA7rRXx?= =?us-ascii?Q?JMLsMVqT8McDzRcrOvDrpgQerVQ+UK8qzE7ZYf38kh2t1lgD1bsK1Mobt7yA?= =?us-ascii?Q?nWCkWWhUGntPBXH8u7UK+NKzYWzGuRboK0H/msfl17Q1clxAf9FQJk5WTu5w?= =?us-ascii?Q?H7DZrueWcU8/SQhkPoWQ7ODC8Lf12SqpkJWIh6CpMsWStXxqDoczNRuGB2Vf?= =?us-ascii?Q?YKElrXCSgFSeti9yxa/SQ6I7Lpw2EmZCqjEuBVhcRr3MkOPjs3JeyCtLhu4q?= =?us-ascii?Q?4mRfS+Q0NZAkbFqK+0UXldZE/zj1WQKTNLpA5cqzWt/j/ZkSw8vjID2X4x+U?= =?us-ascii?Q?6J5Cadbdk017cMUWTGW6FOZDTzMOu1agXWjwUB9u+zrKwb8XXaGVH1gAuN8s?= =?us-ascii?Q?3UGr1qBLvJn/8cfrFkGgzxF40KINr6d0+OgqVIK6/YNcFrJzWDkjOgRLpzAM?= =?us-ascii?Q?O05uYHV4wHPlwdkowftJFQ0JZK17BysZrCvPJKwoN8IcOc2fkOF3FA3c++/J?= =?us-ascii?Q?jucib4qZj1bUB627qgQ7ccBNFePfzo7YVJyV9EbcCSq2/5+yow6PAtXgwK+5?= =?us-ascii?Q?VBw6H3y51Ir57k4P+/R0eUj2agyN5srac1u7XKZTeHtwonadbmXLeRgJ9gZD?= =?us-ascii?Q?qYu+BTRSGiEAPjbTDONuwJEd1gBMMyyQf9faZb1TZmQDvdIdzWHdo9T7t0lR?= =?us-ascii?Q?JyFhyW3Jn1c2u3xqV1QTs9vANAfRs4IRwSWhNIBm3KIMfi0C0ypog3Y1zEgU?= =?us-ascii?Q?n/6Tp/hwhf4ENu34fG/ytiU=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 25c7e3f3-31fc-40ae-4c02-08de12048e60 X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:51.2596 (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: gGFkPGEwkdYeZuQtoGxMLzSVYQ+r/HAXlBxeFjLkDsvPyPPQIiVKjDy+lD4NgkcRvZdcQzKNYrW9DBgex8huug== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYRP286MB4555 Content-Type: text/plain; charset="utf-8" Introduce a new NTB interrupt backend using DW eDMA's emulated interrupt mechanism. Enables interrupt-based signaling from RC to EP where MSI is impossible due to security restrictions on the platform. Signed-off-by: Koichiro Den --- drivers/ntb/Kconfig | 10 ++ drivers/ntb/Makefile | 1 + drivers/ntb/intr_common.c | 8 +- drivers/ntb/intr_dw_edma.c | 253 +++++++++++++++++++++++++++++++++++++ include/linux/ntb.h | 10 ++ 5 files changed, 281 insertions(+), 1 deletion(-) create mode 100644 drivers/ntb/intr_dw_edma.c diff --git a/drivers/ntb/Kconfig b/drivers/ntb/Kconfig index 2f22f44245b3..5b7e1563e639 100644 --- a/drivers/ntb/Kconfig +++ b/drivers/ntb/Kconfig @@ -29,6 +29,16 @@ config NTB_MSI =20 If unsure, say N. =20 +config NTB_DW_EDMA + bool "DW eDMA test-interrupt backend" + depends on PCI_ENDPOINT && PCIE_DW_EP && DW_EDMA + select NTB_INTR_COMMON + help + Use DW eDMA v0 test interrupt as a doorbell-like backend + for NTB transports when MSI is not available on EPF side. + + If unsure, say N. + source "drivers/ntb/hw/Kconfig" =20 source "drivers/ntb/test/Kconfig" diff --git a/drivers/ntb/Makefile b/drivers/ntb/Makefile index feaa2a77cbf6..cae84d132b78 100644 --- a/drivers/ntb/Makefile +++ b/drivers/ntb/Makefile @@ -5,3 +5,4 @@ obj-$(CONFIG_NTB_TRANSPORT) +=3D ntb_transport.o ntb-y :=3D core.o ntb-$(CONFIG_NTB_INTR_COMMON) +=3D intr_common.o ntb-$(CONFIG_NTB_MSI) +=3D msi.o +ntb-$(CONFIG_NTB_DW_EDMA) +=3D intr_dw_edma.o diff --git a/drivers/ntb/intr_common.c b/drivers/ntb/intr_common.c index e0e296fd3e3c..41b2752c6d03 100644 --- a/drivers/ntb/intr_common.c +++ b/drivers/ntb/intr_common.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) =20 -#include #include +#include #include #include =20 @@ -13,6 +13,12 @@ int ntb_intr_init(struct ntb_dev *ntb, ntb->intr_backend =3D ntb_intr_msi_backend(); dev_info(&ntb->dev, "NTB interrupt MSI backend selected.\n"); } +#endif +#ifdef CONFIG_NTB_DW_EDMA + if (!ntb->intr_backend) { + ntb->intr_backend =3D ntb_intr_dw_edma_backend(); + dev_info(&ntb->dev, "NTB interrupt DW eDMA backend selected.\n"); + } #endif if (!ntb->intr_backend) return -ENODEV; diff --git a/drivers/ntb/intr_dw_edma.c b/drivers/ntb/intr_dw_edma.c new file mode 100644 index 000000000000..0e408ecfaf61 --- /dev/null +++ b/drivers/ntb/intr_dw_edma.c @@ -0,0 +1,253 @@ +// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) + +#include +#include +#include + +struct ntb_intr_dw { + u64 base_addr; + u64 end_addr; + + struct dw_edma *edma; + resource_size_t rd_status_off; + resource_size_t rd_clear_off; + + u32 __iomem *peer_mws[]; +}; + +struct ntb_intr_dw_ctx { + irq_handler_t handler; + void *dev; + struct dw_edma *edma; +}; + +static void dw_edma_selfirq_handler(struct dw_edma *dw, void *data) +{ + struct ntb_intr_dw_ctx *ctx =3D data; + + ctx->handler(0, ctx->dev); +} + +static int dw_edma_find_backend_for_ntb(struct ntb_dev *ntb, struct ntb_in= tr_dw *intr_dw) +{ + struct pci_epc *epc =3D NULL; + + epc =3D ntb_get_pci_epc(ntb); + if (!epc) + return -ENODEV; + intr_dw->edma =3D dw_edma_find_by_child(&epc->dev); + if (!intr_dw->edma) + return -ENODEV; + dw_edma_selfirq_offsets(intr_dw->edma, &intr_dw->rd_status_off, &intr_dw-= >rd_clear_off); + return 0; +} + +static int dw_intr_init(struct ntb_dev *ntb, void (*desc_changed)(void *ct= x)) +{ + struct ntb_intr_dw *intr_dw; + phys_addr_t mw_phys_addr; + resource_size_t mw_size; + int peer_widx; + int peers; + int ret; + int i; + + peers =3D ntb_peer_port_count(ntb); + if (peers <=3D 0) + return -EINVAL; + + intr_dw =3D devm_kzalloc(&ntb->dev, struct_size(intr_dw, peer_mws, peers), + GFP_KERNEL); + if (!intr_dw) + return -ENOMEM; + + ret =3D dw_edma_find_backend_for_ntb(ntb, intr_dw); + if (ret) { + devm_kfree(&ntb->dev, intr_dw); + return ret; + } + + for (i =3D 0; i < peers; i++) { + peer_widx =3D ntb_peer_mw_count(ntb) - 1 - i; + + ret =3D ntb_peer_mw_get_addr(ntb, peer_widx, &mw_phys_addr, + &mw_size); + if (ret) + goto unroll; + + intr_dw->peer_mws[i] =3D devm_ioremap(&ntb->dev, mw_phys_addr, + mw_size); + if (!intr_dw->peer_mws[i]) { + ret =3D -EFAULT; + goto unroll; + } + } + + ntb->intr_priv =3D intr_dw; + + return 0; + +unroll: + for (i =3D 0; i < peers; i++) + if (intr_dw->peer_mws[i]) + devm_iounmap(&ntb->dev, intr_dw->peer_mws[i]); + + devm_kfree(&ntb->dev, intr_dw); + return ret; +} + +static int dw_intr_setup_mws(struct ntb_dev *ntb) +{ + struct ntb_intr_dw *dwc =3D ntb->intr_priv; + resource_size_t addr_align, size_align, offset; + resource_size_t mw_size =3D SZ_32K; + resource_size_t mw_min_size =3D mw_size; + u64 addr =3D dwc->rd_status_off; + int peer, peer_widx, ret; + int i; + + for (peer =3D 0; peer < ntb_peer_port_count(ntb); peer++) { + peer_widx =3D ntb_peer_highest_mw_idx(ntb, peer); + if (peer_widx < 0) + return peer_widx; + + ret =3D ntb_mw_get_align(ntb, peer, peer_widx, &addr_align, + NULL, NULL, NULL); + if (ret) + return ret; + + addr &=3D ~(addr_align - 1); + } + + for (peer =3D 0; peer < ntb_peer_port_count(ntb); peer++) { + peer_widx =3D ntb_peer_highest_mw_idx(ntb, peer); + if (peer_widx < 0) { + ret =3D peer_widx; + goto error_out; + } + + ret =3D ntb_mw_get_align(ntb, peer, peer_widx, NULL, + &size_align, NULL, &offset); + if (ret) + goto error_out; + + mw_size =3D round_up(mw_size, size_align); + if (mw_size < mw_min_size) + mw_min_size =3D mw_size; + + ret =3D ntb_mw_set_trans(ntb, peer, peer_widx, + addr, mw_size, offset); + if (ret) + goto error_out; + } + + dwc->base_addr =3D addr; + dwc->end_addr =3D addr + mw_min_size; + + return 0; + +error_out: + for (i =3D 0; i < peer; i++) { + peer_widx =3D ntb_peer_highest_mw_idx(ntb, peer); + if (peer_widx < 0) + continue; + + ntb_mw_clear_trans(ntb, i, peer_widx); + } + + return ret; +} + +static void dw_intr_clear_mws(struct ntb_dev *ntb) +{ + int peer, peer_widx; + + for (peer =3D 0; peer < ntb_peer_port_count(ntb); peer++) { + peer_widx =3D ntb_peer_highest_mw_idx(ntb, peer); + if (peer_widx < 0) + continue; + + ntb_mw_clear_trans(ntb, peer, peer_widx); + } +} + +static void dw_intr_release_irq(void *data) +{ + struct ntb_intr_dw_ctx *ctx =3D data; + + dw_edma_unregister_selfirq(ctx->edma, dw_edma_selfirq_handler, ctx); + kfree(ctx); +} + +static int dw_intr_request_irq(struct ntb_dev *ntb, irq_handler_t h, + const char *name, void *dev_id, + struct ntb_intr_desc *intr_desc) +{ + struct ntb_intr_dw *dwc =3D ntb->intr_priv; + struct dw_edma *edma =3D dwc->edma; + int ret; + + if (intr_desc->ctx) + return 1; + + struct ntb_intr_dw_ctx *ctx __free(kfree) =3D kzalloc( + sizeof(*ctx), GFP_KERNEL); + if (!ctx) + return -ENOMEM; + ctx->handler =3D h; + ctx->dev =3D dev_id; + ctx->edma =3D edma; + + ret =3D dw_edma_register_selfirq(edma, dw_edma_selfirq_handler, ctx); + if (ret) + return ret; + + ret =3D devm_add_action_or_reset(&ntb->dev, dw_intr_release_irq, ctx); + if (ret) + return ret; + + intr_desc->addr_offset =3D dwc->rd_status_off - dwc->base_addr; + intr_desc->data =3D 0x0; + intr_desc->ctx =3D no_free_ptr(ctx); + return 1; +} + +static void dw_intr_free_irq(struct ntb_dev *ntb, int irq, void *dev_id, + struct ntb_intr_desc *intr_desc) +{ + struct ntb_intr_dw *dwc =3D ntb->intr_priv; + struct dw_edma *edma =3D dwc->edma; + struct ntb_intr_dw_ctx *ctx; + + ctx =3D intr_desc->ctx; + dw_edma_unregister_selfirq(edma, dw_edma_selfirq_handler, ctx); + devm_remove_action(&ntb->dev, dw_intr_release_irq, ctx); + kfree(ctx); +} + +static int dw_intr_peer_trigger(struct ntb_dev *ntb, int peer, struct ntb_= intr_desc *desc) +{ + struct ntb_intr_dw *intr_dw =3D ntb->intr_priv; + int idx; + + idx =3D desc->addr_offset / sizeof(*intr_dw->peer_mws[peer]); + + iowrite32(desc->data, &intr_dw->peer_mws[peer][idx]); + + return 0; +} + +static const struct ntb_intr_backend ntb_intr_backend_dw_edma =3D { + .name =3D "dw-edma-testirq", + .init =3D dw_intr_init, + .setup_mws =3D dw_intr_setup_mws, + .clear_mws =3D dw_intr_clear_mws, + .request_irq =3D dw_intr_request_irq, + .free_irq =3D dw_intr_free_irq, + .peer_trigger =3D dw_intr_peer_trigger, +}; + +const struct ntb_intr_backend *ntb_intr_dw_edma_backend(void) +{ + return &ntb_intr_backend_dw_edma; +} diff --git a/include/linux/ntb.h b/include/linux/ntb.h index 1a88fe45471e..7daba67928e9 100644 --- a/include/linux/ntb.h +++ b/include/linux/ntb.h @@ -1664,6 +1664,7 @@ struct ntb_intr_desc { u32 addr_offset; u32 data; u16 vector_offset; + void *ctx; }; =20 struct ntb_intr_backend { @@ -1734,4 +1735,13 @@ static inline const struct ntb_intr_backend *ntb_int= r_msi_backend(void) } #endif /* CONFIG_NTB_MSI */ =20 +#ifdef CONFIG_NTB_DW_EDMA +extern const struct ntb_intr_backend *ntb_intr_dw_edma_backend(void); +#else +static inline const struct ntb_intr_backend *ntb_intr_dw_edma_backend(void) +{ + return NULL; +} +#endif /* CONFIG_NTB_DW_EDMA */ + #endif --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010001.outbound.protection.outlook.com [52.101.229.1]) (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 E962B3002D1; Thu, 23 Oct 2025 07:20:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.1 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761204004; cv=fail; b=VI927eZMJ3kCLK/wNIo82Dc4+sqsdw+Z4dMqn+Zdr/2foNN6pWUmsjuo2Wxw17lhkGkiryBUMKwkwRaovpsrpTXWFlWIt4fWbLcdGdEp6LKEwN18pZCuuzjvKn82LfbpDyBUUSwDEhNrTfdtpxgUT3cqqZhscDj0kPCoKdGt7S0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761204004; c=relaxed/simple; bh=nZMCS9Jnw97vfcuL+WHvOSplmE+NNUz10Y7tfEnKALU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=hYFNtaz7AHNqA5eRxA4zPBP/i0Cvw5GAK++YiUrI16OC17u6/37r7oV+neqcE3gbva4kQQCfZxd83RdwKMBzBMd8ifxFJQ65iT7P7WtLvxSm4kS0/yPi2hjtK2htFD/2Cph2hvIt0k7k/FA2pFzcptR/RcnZsZiU5DDn85Q18xM= 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=FxXxRS//; arc=fail smtp.client-ip=52.101.229.1 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="FxXxRS//" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yQB/POwteTT7gj7bTSkf0m0C5NmHLIiJuU1YWyzwv8+XbqVJtiQhutLrL3/Y+5l2DeIh/r2+cJr0MGw0yp3/pyzzKk95a541LMh+q+0NTrGJFUh3o9udj2PGRBiqjDUGkFHWvxO6qB8QUmq/qbGclxRhWekMb5yHctSvf3gyVxP04FIeg8ssOJjBsUqAqj+bRfg98izv4JrUcvwEEqYilfw75lgVERyepJdAM24y4J+HbjdfgEDZNxfj889tp8pIHN5KwKh0hylYlZbtGWEhHQojxP3vawycK9LE2Zbpl4pwHfxKIw66a4GCh0xl4saEUviGvcXhca0tZL34XUwuVQ== 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=/Xvy+8jLLmHKVtauIunrPmjfBybD+vwXf4XFjmv2Q0E=; b=oHMZrcjKYn4Yrbcvsug5otOFlmjE6LvV6N8Ftmcg+dNwTXdyx0d+HEThYeiZVv2txWWR3+MGROSG2B8Cb94u7+gcJxyUBITW/oQXFGe+0eh+ddW3LcQ1PdxfJ1PQF0NAIs0vWgPqPe1xBUcpP+ONHG2UjTzdwEDBpoIXAGS1YDA5RmsVFyTA7VFFyWVhW5RUthr5czI4jCCvPI5A6/30oUHv4s4Jl9D2Evdfhztq4O/nYdvCOPYpCyu205yKfvz+X1V2WnEj0VQbXtqIuiagFARRxGO1sPmd6F/WxVn9bGbIXlNzSkqkMGmIk/5eNkLauf5bwY5xkjUSCqxgDcGGzw== 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=/Xvy+8jLLmHKVtauIunrPmjfBybD+vwXf4XFjmv2Q0E=; b=FxXxRS//GEhKukOlGX9hLNZuSPqPKw1zIq5cWmk784JFEIeCSNta8Edec0bguhOSHXdw7zud/0C9wuCYe7/+leq7mO0TeFWaZdL49cPB8ClbmMf/Ao9O4+dO3B14wbyrCsOl3LKDYwSbx68R7CCmueO6ZkSBPL4noHPDOeJFEd4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by TYRP286MB4555.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:1b0::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:52 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:52 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 24/25] NTB: epf: Add MW2 for interrupt use on Renesas R-Car Date: Thu, 23 Oct 2025 16:19:15 +0900 Message-ID: <20251023071916.901355-25-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0175.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c6::14) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|TYRP286MB4555:EE_ X-MS-Office365-Filtering-Correlation-Id: 3a4e57fb-0248-4821-d8a2-08de12048f0e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|10070799003|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?/xQgi0tzu9DK0YdUuO1m+r8Uj0PVDFxeWxJb7UoYdSbihTDRpvDhKo4nJH2I?= =?us-ascii?Q?89aztIS08rjp91r5xG3uaIePd9Oz1LsNt/F+zTyKGzqjzVULQiZ034rJ37y5?= =?us-ascii?Q?biuszzUCVkkP5qRGtd+4N8bXyv/x9g05+ML0wz5g9em3Kxq+kIM018IE0p5Z?= =?us-ascii?Q?EjDvjMHSHGacw7Eeg5pRoDCMF7EmGp85Ylfw7uN1iI01txSnBy2eTDcGUHld?= =?us-ascii?Q?FGXAL/d1X2IIlm+cZK0OkrJqxxLBb7kbAW+IA62T3rBNeB5/x4Vhs5R1CLYe?= =?us-ascii?Q?oKSRi/XTs1LY2HKjtBwFg/9udka83UnCuGqwukB8bUp0GYVLQKd37uiwqCh0?= =?us-ascii?Q?zpY1J5HQabRfoVdUKq21N35zGiTHoUmwGmQHWSFkgG8qEl/77yFr51aGTtBt?= =?us-ascii?Q?QBzyf1Gl3GJEnLgNvYUSllHSDZtCuXKNfLrQ/caYibbcyZFiarFd71w7OhJY?= =?us-ascii?Q?rFI3DQJd7YFdzR9FtfwmqhvJuql/je+zam5UMC5t4TGv7tHd5/GJ5ggetlr9?= =?us-ascii?Q?0JI9hecCB6TMhgtl65BldxHv4ADh4qPLRFbtkgd+oEjrRGl4o2rj/eVql/W8?= =?us-ascii?Q?/2WulRAVuJEORsZ8J2WU6l1dQbefgGSK+JUmaPB6BZeo8FtmBEbgKXOaN3vV?= =?us-ascii?Q?F3eKPkbu5ysKV4aXorjpRb4xztfii1+KYhITuHLPF9EXd9P1RXEaGMbcD9fS?= =?us-ascii?Q?iQPBI7kcHrZBa2BQSHYqsb9v2QG6l3ta/zlDQTdvAnufIHyryFPjZ1bb5Wow?= =?us-ascii?Q?RyVHFm0jHNq3XE/rnXeiefVofB3yYalOM/RMc+xWKAI+A/Y3c5m67DrGhAi+?= =?us-ascii?Q?J+OPj+3QGu/uDPwhNNFvWBy32cvAy/fJ/xjh6rZpTTOcAt4SMgK1Uo9HFh85?= =?us-ascii?Q?ZQV4HFdfLL+B7Yh6xEjigaaNLq0CNCKLIr10D991AI02r4wHNjnp7bDZ81hS?= =?us-ascii?Q?d1cN5+JqNlCIqT2G2aKEXxSmFu5EX9Ixa31fApEFdx2WFdpLLJC7jseVlaVY?= =?us-ascii?Q?IZ0IGm8UXSMILaAOQMOCamojey2IoMBuFECOfD7WbTj4lX9S0qikWt19dAy0?= =?us-ascii?Q?t379wOpSYfPG3iSnbIyqprNptye+NJTL2iG2ddL05ORf7PGUVvQxY41KoqUa?= =?us-ascii?Q?9+CCkflbptpiPK3Z9hGJNGAobq6oXumbDNUdZI+UDbbooN8xr96N6ifqgnRh?= =?us-ascii?Q?fF2DgSZKb8VZ/+49dZXaCa9gWZRjZZy0fE8LWwREVm+DV0E0V0y6E3qSXnZd?= =?us-ascii?Q?2ciuelIxfjEw+bVvkaQZgDaaBQvy+mKzvGl0ANMw+5zGzXb1EHNUgn9qrlSX?= =?us-ascii?Q?eiKK2595oHIRLrcOWyqyGYkUSwmXxCQWSln2WGFFGcGcm7icOjAa1H4pIcnw?= =?us-ascii?Q?FvaEY1HQovM5rbMuzfEDAeBVjikO6udNws8TccaLSS7wAD5sqePLWire9VCM?= =?us-ascii?Q?mPfaeEbuYE72f+U0A1mqrrsbOhisLO0Y?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(10070799003)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?IEuq0tWR1zPyx1fBYaNtN04kT1Bg8ov2YeL/dyilKShFuWiIAUrHMxxtFXpl?= =?us-ascii?Q?UB4g9S4SnCOEHsKyZf2zeaiwu1YQ67dsz/wjTr0U6tVQk5e7zekyjC4OPlP8?= =?us-ascii?Q?6RUNmJHwyGGK9ArygqGhjmrBFJlScB3cTGuOszRUz5zMfw/55/sENIeA6cjR?= =?us-ascii?Q?1UlnTEYiytBIITXPV8olocL+ZovmcZqHEdXtqABmKBcJ04oWvmA+imjZJ816?= =?us-ascii?Q?bXqze1ixf9zhTdgqs6BclJR29CllIsN6cE33koU/3NWulSUnj4yaLmQWVw2i?= =?us-ascii?Q?a1+nEIXBgTUaimRrn1LUZHxhwLXO28WspVpLUEFuNOpwT4GaBxw6h8nHyfIz?= =?us-ascii?Q?2wzSlIxurbocYc7cQP0xSW7Y5zVNDri090Yjqd6LaI1/qYgYBrvfjkSWbLSY?= =?us-ascii?Q?R8wSLAeOP5GbZrUZ0TIZBRYFt6Qn+65SiYtH4LgG5DuCtIQC2R3P1a3EkYqB?= =?us-ascii?Q?AdxDrrVsKjSGFXRathtsSnt1kJluUn1HyaCKAvp8HVTT52iv+CQb6GtqxfPv?= =?us-ascii?Q?MDOk83cZn/LQ9fHre2Bj5x6I/Y+y2VcmncXufEaHgPCQIa7Xm1J43OHSY4OP?= =?us-ascii?Q?JQsmY7YD6piXT21LNWyTNb/kNVfR//AhRwqt3YHT3DmPun+9kAXviWB667ln?= =?us-ascii?Q?+/Vyr0Peqc/9yyghR6CKgecDZXZdFLb+eqGdaf4wik2BuBwkLIN9veFLKBlO?= =?us-ascii?Q?5ZYKJonKETEop/1J93mArQMlvlzu+KtFENHnbA0kwa/W77z3yl/Frv/TGJeC?= =?us-ascii?Q?dAba4X7qoo2M3i+fysYymCAX5gcynRlmUCxGjvGMw7jbhVihU0jnyeBP3pwb?= =?us-ascii?Q?nq7fw+AdU0jgu0diZmCT1LRQNjByP+Liy8nHchvrt0rqd5gee7D3ukB9siOe?= =?us-ascii?Q?nWcLBYMEUHKVb58p8ceuKu7oLDtUFliedxGh9zKAsC+79FHqlg8HOKlBGccr?= =?us-ascii?Q?g8eCoyadiy/y4fJPMLtiXJH3BwoxfKuaxjvglieBp5ImW2FqGXGt5O44cJmz?= =?us-ascii?Q?irBxHb6JejC/JUHT5TPyTFDolfR/I60sb4dIhLRBCBKMdvnr/rynAhzi9zCZ?= =?us-ascii?Q?Nv8qFarKluC2BINdOZ+HNtXTYsPjUOQ7P3n8vHSKB61fhpB+NLb4PQfYJnT7?= =?us-ascii?Q?iyNfkdcBGiLKHNl0YsVyGOtRbpXPxyM9vB0/GOtsdDlKYiyiojTBR1bhbQ+N?= =?us-ascii?Q?u+WQACj8k4lVHKGMgrERpWfffmyTTYcyLagUeOQiD7p4REEJoxGjakRDWuuA?= =?us-ascii?Q?AZaIKXFvcJhL/QrwtdfuyjwGqINwuxkGRYMfmsbf7J484+0kwEZYu8lRJfTy?= =?us-ascii?Q?1pqB/8dguoS21jsJ/uPH5Zc+8xI2BHtJ7gwjwv54X4oUXZEZhM/BJfuW5MMM?= =?us-ascii?Q?A5YQGXVQKwDioIducOcrymXG84YEvAw/2m4zjilD/b8xXi61R+iKDhNPniEw?= =?us-ascii?Q?bfLyKOVMc5JwU9hJioLRSOYq2xrNEzHiZos+tYvQ1IPdApTpzFaDMmxeTtgE?= =?us-ascii?Q?kaZEEHN7p+k1LcvwP5uS8B4yG5HU0V3p4e0fRLXoI8UxOJ2j/R/0CCuUpSBY?= =?us-ascii?Q?f663ZR+sb88HoXuMu3kvPTBdVp1ahhKGWY9LiCdik72nHzvxonIfRT+o7uGM?= =?us-ascii?Q?1E7pZfzUgaCVCjWkatejDJ8=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 3a4e57fb-0248-4821-d8a2-08de12048f0e X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:52.3972 (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: 8jh5+Mp7U0s+R/1it0tkkoUfRzN3LD2H4ji+n1PF56QDucREagymilVJecbwxUy4NmeOdZsdjmbCHjWsO+7+9w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYRP286MB4555 Content-Type: text/plain; charset="utf-8" To enable interrupt support, one additional memory window is required. Since a single BAR can now be split into multiple memory windows, add MW2 to BAR2 on R-Car. For pci_epf_vntb configfs settings, it may look like this: $ echo 2 > functions/pci_epf_vntb/func1/pci_epf_vntb.0/num_mws $ echo 0xF0000 > functions/pci_epf_vntb/func1/pci_epf_vntb.0/mw1 $ echo 0x8000 > functions/pci_epf_vntb/func1/pci_epf_vntb.0/mw2 $ echo 0xF0000 > functions/pci_epf_vntb/func1/pci_epf_vntb.0/mw2_offset $ echo 2 > functions/pci_epf_vntb/func1/pci_epf_vntb.0/mw1_bar $ echo 2 > functions/pci_epf_vntb/func1/pci_epf_vntb.0/mw2_bar Note that users who do not use interrupts can keep their existing configfs settings, and this changes will not affect them. Signed-off-by: Koichiro Den --- drivers/ntb/hw/epf/ntb_hw_epf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/ntb/hw/epf/ntb_hw_epf.c b/drivers/ntb/hw/epf/ntb_hw_ep= f.c index d55ce6b0fad4..85165662a03b 100644 --- a/drivers/ntb/hw/epf/ntb_hw_epf.c +++ b/drivers/ntb/hw/epf/ntb_hw_epf.c @@ -750,7 +750,7 @@ static const enum pci_barno rcar_barno[NTB_BAR_NUM] =3D= { [BAR_PEER_SPAD] =3D BAR_0, [BAR_DB] =3D BAR_4, [BAR_MW1] =3D BAR_2, - [BAR_MW2] =3D NO_BAR, + [BAR_MW2] =3D BAR_2, [BAR_MW3] =3D NO_BAR, [BAR_MW4] =3D NO_BAR, }; --=20 2.48.1 From nobody Sun Feb 8 14:07:15 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010001.outbound.protection.outlook.com [52.101.229.1]) (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 D01323002D2; Thu, 23 Oct 2025 07:20:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.1 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761204006; cv=fail; b=fF06O9F22vfotMiUPfCDkP2VpEqd9p5KJZPCljh0+g0lRZvk5SByekY1KUtVg1/045BuelAd6xhGbCVS27PVPOSURfyCweav+ETK3xQmVMUtmrbJLzjnEKOajJby9V4s2oRs/34DwfWs2usGGJRT9cuYBdmLDjxGbs2ezIigQ5o= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761204006; c=relaxed/simple; bh=teM/tF8b7G3BJoHvpRnJl8Ey+5rdVnJrfU02aN91LIo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=X3FkJgWRoWaGsGiULP7gd8/lq7+N1UPcP/Ip0NYYKn2rjbCM1YBO0yztldHkbgly5lnDVjrEBMuDRN414G6mI6tRilINqjniGRMqpT4wQhI+5W5MMVHq1J7cSkpWwDJzYJwq0hVEKDaZps33ESLpBJEPQRmSYJT1p14KwWPN0Ho= 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=Yr3TPcwY; arc=fail smtp.client-ip=52.101.229.1 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="Yr3TPcwY" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XTSxJ0ggQXYSnAvQ7i0Ob9MoG/AxRrQBsL79KcuxByhdWThw7joBEvzisqbUeXazmXxeQ+40NDhiaQeYO8navVJbNB9BibYZsv0EvGwRsrx14fdg/pSX66KVcdwmbSELQLs2rRKj2oecZD+ZTh7SXQHIGjubSDkPn/NZ1S8uuYDzBcjMGcrnDN5hAV/T1ft+6MHZ4S5EYkAq1klgZaMhHXonIu0kWrR+cDoCN7XtLpQyyoiDw2rtQDWcdygXnS5s2MN+37qwEMQ/so1Z3cnfHX4HwQn8cVdZGrYKaeCeeKxyDA4bhASobuEvDR4zT+smKbWIR6l6WmNYh2mTXje+XQ== 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=nb3M6WBZATBeCr1pWjurr8J5kMDGBbH8naGljGihLhI=; b=FfByaBw0j7JSjau1tGzh419JfSY/ntKItmaFwazOE9A4D2A//OkK6VqolyNbB4JbNZCs1P/pc1JRBprNBOPcnlY9qlBoGEGZbIEOdXwqqf5jsntMF7kI9yL4TTMi8CC1BbNZCDEChci3lWICz2UbVpkkR9ySRFsQasLZM/5c/B1uiX10rvOUVEZMFeHqEJuXGre9X0HZsUt/nskc8CzCP3qhB4XC1igTN5PTn0ENYNAZT/dD8y+YKz45VDqHwQ5SfGoQywSWpmMhz4MXDvofhnxjkcMK2rFuySt8JvTTvZmbX40nUl6WCRZEETZE6oyConrelYGZxk+tq+lJ+EIeCA== 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=nb3M6WBZATBeCr1pWjurr8J5kMDGBbH8naGljGihLhI=; b=Yr3TPcwYgxQlqEWf1eaEZ6foQCcYHPXi1Hd8ZFs8KIgUyXVVXGq6Ms+mZ4ON9nsMbFD85kj3A/eidKKI9SykGXGPTSUFjHWJjAfIGOTeeMCClnpGu2H2XTZlmcAxO9zU/WJ8lsadDVCSgl2hhO6ebbASjXWtiDOnzycaP9dmb+E= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) by TYRP286MB4555.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:1b0::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Thu, 23 Oct 2025 07:19:55 +0000 Received: from OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a]) by OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM ([fe80::80f1:db56:4a11:3f7a%5]) with mapi id 15.20.9253.011; Thu, 23 Oct 2025 07:19:54 +0000 From: Koichiro Den To: ntb@lists.linux.dev, linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mani@kernel.org, kwilczynski@kernel.org, kishon@kernel.org, bhelgaas@google.com, corbet@lwn.net, vkoul@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, kurt.schwemmer@microsemi.com, logang@deltatee.com, jingoohan1@gmail.com, lpieralisi@kernel.org, robh@kernel.org, jbrunet@baylibre.com, Frank.Li@nxp.com, fancer.lancer@gmail.com, arnd@arndb.de, pstanner@redhat.com, elfring@users.sourceforge.net Subject: [RFC PATCH 25/25] Documentation: PCI: endpoint: pci-epf-vntb: Update and add mwN_offset usage Date: Thu, 23 Oct 2025 16:19:16 +0900 Message-ID: <20251023071916.901355-26-den@valinux.co.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251023071916.901355-1-den@valinux.co.jp> References: <20251023071916.901355-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYWP286CA0030.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:262::20) To OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:10d::7) 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: OS3P286MB0979:EE_|TYRP286MB4555:EE_ X-MS-Office365-Filtering-Correlation-Id: a49cc4c2-e1d7-43ef-f162-08de12049007 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|10070799003|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?oZ/V24qL2xxOySGxZWMoxpprxtEj9FBh3IecgHC8/Jj7eaT1Jqr36tP4DmPk?= =?us-ascii?Q?hjvG+CMDSAOmeJJcDYx7WdlWnkbET3u3Zz7lOlGQ+L4Ewlq4RfvExEruvNRI?= =?us-ascii?Q?ry8FpRfVaKCswI6WAa+716L7oByzIQll2Wagevf8Ghbax+jqIWihQXNu/B7J?= =?us-ascii?Q?3Tpimyhi3J7mxcolY1nHe433zG7VJzurnvcot0lVFpYXkN4rMuOkR3/Z0Quj?= =?us-ascii?Q?S4q7JsA4QBFcWtKEqWRYFA4sVgQwejwwO/hFmh/Nt20ebrSUohh5kP/ev7vp?= =?us-ascii?Q?MD+DGJGUlO3cKkFW8noKmIwWkQzN4R17Jnlb442Kq8RCDKVjr/mQ/rX4Vr26?= =?us-ascii?Q?d6r0bse4y2/rXjT1SbkT4zhOJWQiRATn+vXBQ/4q03EeRBLaEWeGZCo0OvTt?= =?us-ascii?Q?6n0rv/LHSuNJ96lizBJPMjY5zpVSPILmRFSkbywaXjxSAYyxhUj7qvjkwRVo?= =?us-ascii?Q?aJfTnKNGlgKgZ0o6KwfqX8CWYteqHNVhVLueVbWmfHBBPtbHa/sG1wG3OCHN?= =?us-ascii?Q?k5bKaHPE8moTSDrxYTrPQiqPHg547dlIz3/oOhlKO5IKgF6eqZZ5UpQ20mEY?= =?us-ascii?Q?GWU9bP+/tf6r1ZCO10HV0fJJZaOmGof/ZxVkCOIncOEgUCAJmLrWVj9vqLYD?= =?us-ascii?Q?grxK9RbHivfhy1FsB1ZMbkRlxPPXvRCntUmHTfUUYYbgQP1wduOEHkFClWQf?= =?us-ascii?Q?4v/h5nocyToXwTqL+3AaiHc9j5J8hQ00kARXTvvssdl4qXuZBluW01K4zsR1?= =?us-ascii?Q?0YugFMpNW9HXfWiFBQahuKVjovjHw8ycL9Nz0ZSYFKPxbFM5LSPPCLZIgPtb?= =?us-ascii?Q?+UYLxTB5BVgSVgsFuGGUUwwsjUu+pgDzNQ0u0vN8tjO1h/EMYPQmzpCR6Dus?= =?us-ascii?Q?bW5sGHseWJO83xKgORaoVeApE8hpB6IOFD6mcNzhNRDlosC+2V5+i4+YByqF?= =?us-ascii?Q?pM5vUhrxBcCxp3Fa0DVZzfR3D5PB7hlC6uRQ4esY4tPvTZFHhZzveGET0N65?= =?us-ascii?Q?qBGMMLY2bgPvfcQt2Os1IQu2AvCYsSK+LwmwFJKMT/+V6/O8ZfXya6e6dXkL?= =?us-ascii?Q?d+ZXexMrwErke+AIqoQTS9gaKQijTzpd50LQwHTpLjJK3MVEv72qrJOqeREI?= =?us-ascii?Q?tUkH3vaWwyHZ+4TMQolHUMklsuwPzDI+v5oyD1eK6xWblm9HqvWrc9xlpZvk?= =?us-ascii?Q?ied1qu3K5YUSM3ChqCbcYLOikFPeY+7wIf6A+U2a/IAxsTUK9lJdZ386zS6I?= =?us-ascii?Q?M8Ttw6F0nouf6ZNd9RwHBJwFOM0QxYqcRZk4Q54nxOhkI2EyvIc0VidiQzhJ?= =?us-ascii?Q?R8pigrvBQmvIOOlskcslMw69WakoOAdcFU+CFHM5tHX3cEPWEAMGq64fW8t0?= =?us-ascii?Q?u9FequQcYxUhJbPuD6KLWqFA/N5v+odSqAB23lDny0ncUehDQ3n7BkxqsSG/?= =?us-ascii?Q?N77o5wsXAckH0eG/LujGRatBUiJPbifr?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(10070799003)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?i6M5yJmzyKhqItA4LfXwc5WOR2IXmEHGc9lKm0EwUzPfmJj+qEzmgYpfrqZY?= =?us-ascii?Q?SLT5ANLwIjZPCMmR7gVZhtNFdzBdkzzcP0zrhbevXYjb0pxe8APli5JiMxjY?= =?us-ascii?Q?hXVxvWz//WME82t3V2Hr2CxwKAZvrw/iIyOJyFPsi1EHyogEGYQEJGFM3qGA?= =?us-ascii?Q?A9W1e87sNZh1pl64JU+UNUh8reL5yGkQfWqm3OjfisP7bFybO1u8Bgd1jwiJ?= =?us-ascii?Q?FHWAiMlY8nE53Je+8TcJjMyCt0lmmc5CN7RlRgizNue/3sf7TsTDVycDV4aP?= =?us-ascii?Q?7SfeHu1mK8WPrYb4LVLdkM2acJB1PymkEHbYx5E6z7mwThagz37xt/nhGFtQ?= =?us-ascii?Q?6xz9ZADpIUmLceP5wo4ehcSDHnNzQrik5KotDm5hVRulpdUx1+qCoTetoPDb?= =?us-ascii?Q?jz5DOKFT74OBFPtjNfpariRP6wgtUkDtyPylC0+37ZSqY1kGL5KUWoE56NMC?= =?us-ascii?Q?PJAnmFI3AxEpyQ2o/D/iJEUtrfJPGXuvjrgMh32sav4YqeJejp2esTD5oKbx?= =?us-ascii?Q?JnL4COFhni51D7K+ZjiOuyPcbmd3lIrrNPJiBprAonGbj6kM+prWnGPDiKl+?= =?us-ascii?Q?SVfjnu1cvkvVlmF/NxOw2e8gOXLocY3qo8oMcgNeHM26p2zI9DLu1UeayPda?= =?us-ascii?Q?NCN+qPC2I9pZljEqnHB4Zrvj4HFh/LPeGlwkWmQbrxq12PlzEDRkxMZaENG2?= =?us-ascii?Q?OystB8NGSA3k3O06PtwPZRcaGzNS97I+3s9lCXOfAbJWwZp/ZOMB9jgu4AUm?= =?us-ascii?Q?RdbBmTS5dgFS3fXkZV6im01z3idXaPXwcUCMUGme26D6ypFO4N+N1254oHkx?= =?us-ascii?Q?lG2GvCoLcSXZAIpX9r7YVHegtwZ4vvA2aZlZjiKHPT3Ukg27dZ9dDCcbLGXd?= =?us-ascii?Q?O36giHlo84d6tHbSUywYxmugD1H3lvms17mSe4ZWaWtLVYdCZgrHPwjCWIsA?= =?us-ascii?Q?Jq1gCdYacmOZRPPgvZcm7eYOUoNFeOJi2HErrEMw8lySK6uf6a7GQ7ftXq+R?= =?us-ascii?Q?3KzMITMPUlW1+joGWiXLgEkmMlFApud0nPQCiuVL1lbprRX0f5RJxHOwL5Dv?= =?us-ascii?Q?kdlNCU/Pr33Lgg23APjHAOzztSpTlBhYmkPkloECkBALIbbbgvc1DpeMHhoq?= =?us-ascii?Q?zIdS0YkgnYJHFuezFDWlq7PdXTohQOPkLGblDuA37/DOICwslNQyYmYB79ut?= =?us-ascii?Q?M0oh+58uIEgGAVxUwUjAWkcV3UoM2D4EFSE/G+a8QTBcQbaJYWbCMeSDyoSR?= =?us-ascii?Q?2+w15Jt1Gqpy4ofxDv/Jq3t2ic+vad/wAAB92wZa3MkBcE0Fdp0Hc+oEoyxs?= =?us-ascii?Q?ei2rySX0RNyxA+uQCTlgqluc2XrWw9nQsjAWTswsC/v+dawQ3Ji2+Ayqkjj1?= =?us-ascii?Q?Ei31AQOuLUd/lRMqIXBERFdS7vaMmMZdK4sFQ3oI62XoROXPrXgvVNdz1gpZ?= =?us-ascii?Q?XRihELHRHeYqvmjqHlZdxK7Ok+1AiHfKo1f83d7uHF+3Kdc6PJyr7LKpWO7Y?= =?us-ascii?Q?KxsgOA5uzjtHnkxeMbsbQNkEZFkNVUTz4OnfV4j86GrfyMjL8QhRTEZkVWXq?= =?us-ascii?Q?VDn9rJJ2UHhTz1mCEuj0zLhYm/19pQgAODhaBK8VPkLDbgwiZ5TFWkSggEwg?= =?us-ascii?Q?v8Q6AiffEa+Jd++JFEeHu0g=3D?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: a49cc4c2-e1d7-43ef-f162-08de12049007 X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB0979.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2025 07:19:53.9875 (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: jS82Yb70vlp2OAaPuAjk8eXJGkJ1PMUSS2QekJHYmO62kBkQMkQe2Dc/a7hukYxFd35RXll0oSMtvTKp+7e0+A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYRP286MB4555 Content-Type: text/plain; charset="utf-8" Add a concrete example showing how to place two memory windows in the same BAR (one for data, one for interrupts) by using 'mwN_offset' and 'mwN_bar'. This is useful when BAR resources are scarce and is aligned with recent endpoint-side inbound mapping support. Note that part of the `ls` delta covers missing doc update for attributes that were introduced in the commit e7cd58d2fdf8 ("PCI: endpoint: pci-epf-vntb: Allow BAR assignment via configfs") Signed-off-by: Koichiro Den --- Documentation/PCI/endpoint/pci-vntb-howto.rst | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Documentation/PCI/endpoint/pci-vntb-howto.rst b/Documentation/= PCI/endpoint/pci-vntb-howto.rst index 70d3bc90893f..142cf9244cc6 100644 --- a/Documentation/PCI/endpoint/pci-vntb-howto.rst +++ b/Documentation/PCI/endpoint/pci-vntb-howto.rst @@ -90,8 +90,10 @@ of the function device and is populated with the followi= ng NTB specific attributes that can be configured by the user:: =20 # ls functions/pci_epf_vntb/func1/pci_epf_vntb.0/ - db_count mw1 mw2 mw3 mw4 num_mws - spad_count + ctrl_bar mw1_bar mw2_offset mw4 spad_count + db_bar mw1_offset mw3 mw4_bar vbus_number + db_count mw2 mw3_bar mw4_offset vntb_pid + mw1 mw2_bar mw3_offset num_mws vntb_vid =20 A sample configuration for NTB function is given below:: =20 @@ -106,6 +108,16 @@ A sample configuration for virtual NTB driver for virt= ual PCI bus:: # echo 0x080A > functions/pci_epf_vntb/func1/pci_epf_vntb.0/vntb_pid # echo 0x10 > functions/pci_epf_vntb/func1/pci_epf_vntb.0/vbus_number =20 +When BAR resources are tight but you still want to enable interrupts (which +require a dedicated MW in addition to the data MW), map both MWs into a +single BAR via 'mwN_offset' and 'mwN_bar' as shown below:: + + # echo 0xF0000 > functions/pci_epf_vntb/func1/pci_epf_vntb.0/mw1 + # echo 0x8000 > functions/pci_epf_vntb/func1/pci_epf_vntb.0/mw2 + # echo 0xF0000 > functions/pci_epf_vntb/func1/pci_epf_vntb.0/mw2_offset + # echo 2 > functions/pci_epf_vntb/func1/pci_epf_vntb.0/mw1_bar + # echo 2 > functions/pci_epf_vntb/func1/pci_epf_vntb.0/mw2_bar + Binding pci-epf-ntb Device to EP Controller -------------------------------------------- =20 --=20 2.48.1