From nobody Fri Oct 3 16:44:18 2025 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2059.outbound.protection.outlook.com [40.107.220.59]) (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 2C6A221C166; Wed, 27 Aug 2025 14:41:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.59 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756305704; cv=fail; b=ZSv8h/xj+CLGnQlYFV5faxq0vQOS/9ChM280hC8yqh8hoe8jDzpzGdVEkECLCxymS4tMkv8q0eKl97tKqNKXlnY4XzEn3ZQVoq+I52UEvsx171j6gPl3M7e1It1cUrAM0+s9oXzgH6ynREij4x3UWIjyPLgiLkp5WOhEk+NIbCo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756305704; c=relaxed/simple; bh=AdKKn2odcy3ApXM3sMkzF+kfk6q+NaN0W4Azrk00X3o=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=bgughcOoQQ+vQ5Bx0qVxAXr1MBaTYdim32sfEeo1VV9TqKcpHYuzvG8plZb2pyO3EzQivySo1SR44O4UsHQX+9PChjQjRaBrlVvdvQUZSZG87UgwQVexfUWxQySVO9FCnjfEVk8WqX/stLaRSPUMVEn6rvXJvmlShKHRWT4xh1U= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=BzoKEIuZ; arc=fail smtp.client-ip=40.107.220.59 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="BzoKEIuZ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IQ4RsqmLdyFlDr/razWRbgkQNwV9CgdY8vNhCaYfOIEpSZpTQ3nbRJ+BWxMGKlD9/ykmq+9fC5qQIZk1bm3pm6np2nbBNi4TkE+YG4A+4Hq/9DznMy/11LeOseRrweDm1MgL+xyO4CL9UO0s2UZbnZajyVc5jl7xJhhdhzse0ACGPnWSihJn7sO/61BtfuYd/3hfhSjNJSD4MKbFqobuG1BAJi8Yxxh6xGiM5NleA2CL2HwpV+3XgYx3xYK/MmRoWN1iPCIqMsruPETFr2wBJRq7JYKdLdwUMTZg55fqQmv89vW6OKnoFAiG3NJ45pvi3z6mn2geXXhHHQ+kefQgvA== 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=NZ0bzHPW8qFefmHpfEKawVmyKeS0zkeBMs5NXNzME+Y=; b=wWaL444AtLA/L5f7y0GSlNRHycjkfBl0VtUnfXy+0N+y8azSjCrKDPzJOLh4bkigXkFTY49L0Tl5jdh31Mqh2U0SScgTzXGEYWHyLKo05J7xQ4Hi3KlJTpFwOoCT8kI4pWmMdYh8KbMnOZV8AVV4rZxvep8XTBS8piUnGwJ9p13oNiMDjz7W2rcZsPWUm9FmpQoSFc6cXdT2xC/YmSHAM/ShjPdVRPEQ1Cs//8yCanLO5GtYVf+O01Pnxri/9oD18FSk5qOot/5/H1vPRmY7g2teHzCUftI1ERZw/1uVijZx7LJBI1L2TL/p78lcgjVSFreZTpmr6JeKm96f1XxuxA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=google.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NZ0bzHPW8qFefmHpfEKawVmyKeS0zkeBMs5NXNzME+Y=; b=BzoKEIuZJkAwdgokdpaOknmf9RBalK9Pj6fwqLa/CV+hqZ6rQSDjrUd1xTOcxZMWb+qTmsKJinNGEGOYacxN0x3GEbU7bd0CqbwcWhJhU5gGejAjG4neoz9QtPofcTkxTm+6sBFfJxlvMBEA2mp3A7VQMMSdmWOVp0nbSkjRABwxonfMWXKPXrLyg6gF6P6nPZgZjaEpq5SrLSOglfZH9KH9gjAtWCJoqzXFg3ZnjGY9Uh3Mmase3X+99uy3oYFOu05DAImojK2Svpkk4xqTwCOI4cNLMZajfVDESi1gsbu/j2ch4amZjFsuZhMvRRZykrg5/N/7BzV2w8zj5Agc5A== Received: from BLAP220CA0004.NAMP220.PROD.OUTLOOK.COM (2603:10b6:208:32c::9) by DS2PR12MB9662.namprd12.prod.outlook.com (2603:10b6:8:27d::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.21; Wed, 27 Aug 2025 14:41:39 +0000 Received: from BN2PEPF000055DE.namprd21.prod.outlook.com (2603:10b6:208:32c:cafe::75) by BLAP220CA0004.outlook.office365.com (2603:10b6:208:32c::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9052.20 via Frontend Transport; Wed, 27 Aug 2025 14:41:38 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by BN2PEPF000055DE.mail.protection.outlook.com (10.167.245.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.0 via Frontend Transport; Wed, 27 Aug 2025 14:41:37 +0000 Received: from rnnvmail204.nvidia.com (10.129.68.6) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Wed, 27 Aug 2025 07:41:00 -0700 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail204.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Wed, 27 Aug 2025 07:41:00 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Wed, 27 Aug 2025 07:40:57 -0700 From: Dragos Tatulea To: , , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman CC: Dragos Tatulea , , , , , Subject: [PATCH net-next v6 1/7] queue_api: add support for fetching per queue DMA dev Date: Wed, 27 Aug 2025 17:39:55 +0300 Message-ID: <20250827144017.1529208-3-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250827144017.1529208-2-dtatulea@nvidia.com> References: <20250827144017.1529208-2-dtatulea@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF000055DE:EE_|DS2PR12MB9662:EE_ X-MS-Office365-Filtering-Correlation-Id: c65c023b-f91c-489d-1dfd-08dde577d45e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|36860700013|82310400026|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?KeXftnqICOh5FzE0KifT6/9QF2UZtP14kzHlw0+v+KoOl5xFmX/5nHEmCEeF?= =?us-ascii?Q?7epwOCwu4FZAGuESG4+jgFPB0g6CiqEh6RYPAgjeUpcsSvXjatRkeqTg6MtT?= =?us-ascii?Q?Q9J5JLCAQk3ArSVm6vYyjB3Rsl/Pky6ggsEeSoMgmrtgNMscdU2NnswTCnky?= =?us-ascii?Q?OQlFD/aiAPd5QBknTHuPkLLZ73bVgPpR5sQUIb4SF2Cx46q2snR1gZP9SpbC?= =?us-ascii?Q?D6OvLzY6KKeQtMBAha1RqOdYJiToJuGUfW0NMXGBpxk9m2a7eu+3jwCwcMcP?= =?us-ascii?Q?Gyo499AagsSEc/6e6ra0O8uivmUvLypZ8qtcPJpqCTy1b429ehHm04jVqTRB?= =?us-ascii?Q?YBOXggcZIOoTLmmCzDLJe49BNTnliWiIkjMj8lfTnMKhrUc+QjEXGZWPntSZ?= =?us-ascii?Q?lwfpy8hP6yn76jE/1Hykag6DE5Ay1ss/+s3YmxhBJPgMpNUkhwtASRBkY166?= =?us-ascii?Q?iA+KAmYfktz015J2Zo/+z+Ofj+OYek0HpDyHEF0+PbCzBlquNYv8FwREin17?= =?us-ascii?Q?SrkJAH/Di9AGHTxEyFkptZXbVYK1bbpeY1wes0mpRb9YzyCCwsnPKHV1bjLl?= =?us-ascii?Q?fngJdeMb+Sq9gXeQc2CiZPIuctFzTv7UNowfdo28kk3t5joLpKxG9JU7EyEQ?= =?us-ascii?Q?RnQVq9cmaDR9FrfS86m5ztgdgU+F47seICLUSbqGf0VkXUTtk+uNgDGVbjGx?= =?us-ascii?Q?D6MdsmldLaxgyEpPQh8JBYTRfnpimy7nawgJ0m/eYlfVg3KtAxbkUQov/cUh?= =?us-ascii?Q?RPR0c6RMohvZ5hHE46zbkYo8DgoA7B//rrXpkxhK8GWJfKq5XmgXdF3D+Pm8?= =?us-ascii?Q?WaYZ+hC7hscf9vTkdDQfI2aOZLpmnPhABCWeSxj+9BYdKEIE5YN7sOL0dWKV?= =?us-ascii?Q?iJfCP2BwJ/scTViGaXSDpiocLn6QX3aI7hdxXc7jYV+56sQd2bnFTEchBDpL?= =?us-ascii?Q?e1V8psEobrV5HzvqTjTj1utbLPYf9ehhP79Jh9JX906X6OYMaPZB4GMkcwiC?= =?us-ascii?Q?LGoBOQWs/K4NZKgqxSiPbU+LUreUt6qr3rhQMFiKu7ssmIEuVYz5FRXHX7LY?= =?us-ascii?Q?XYJl5qcS5lu7lAKCEiFP+OI9yE3MK7+TGv+GRDR08jCZUX2pyB+EL5jgCweS?= =?us-ascii?Q?9n82sK6h8kMn0xFllYSz/8myeEtsvhxBcADv82MwPUskUCDbVxfYyA/MebH2?= =?us-ascii?Q?j+/Y9K+aYvDvNXL6uHnHOPXqyh19UWQoTt0X0DKwOuZzwrGyBIR26hLN0ty/?= =?us-ascii?Q?SE7pbUN6kSm0ezliL7i9cpF1mh5gxIXpwmHNOjqD5jpcm4LC5qg10IalgOpX?= =?us-ascii?Q?fDR8C6WPVDjdRsXdKw1DDStUGaSt0ueTE5XfuXJYZnXxpXQPCBoLDCPD6WJL?= =?us-ascii?Q?ShR91WunqndxgszsVT0jiXeqinewYT0K17XC45sOkBxcaaqrc9PlA7YGq+BT?= =?us-ascii?Q?vfLWzCL8upRPm3blmpBcmDerz2JH0lSyL/Wu1HVbvb31mQdHljCyOGLndlQ0?= =?us-ascii?Q?Xxzp8MVh6sNw4/HcBBC88FgwwR+HFIYAO/jl?= X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(36860700013)(82310400026)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Aug 2025 14:41:37.9788 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c65c023b-f91c-489d-1dfd-08dde577d45e X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF000055DE.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS2PR12MB9662 Content-Type: text/plain; charset="utf-8" For zerocopy (io_uring, devmem), there is an assumption that the parent device can do DMA. However that is not always the case: - Scalable Function netdevs [1] have the DMA device in the grandparent. - For Multi-PF netdevs [2] queues can be associated to different DMA devices. This patch introduces the a queue based interface for allowing drivers to expose a different DMA device for zerocopy. [1] Documentation/networking/device_drivers/ethernet/mellanox/mlx5/switchde= v.rst [2] Documentation/networking/multi-pf-netdev.rst Signed-off-by: Dragos Tatulea Reviewed-by: Pavel Begunkov Reviewed-by: Mina Almasry --- include/net/netdev_queues.h | 7 +++++++ net/core/Makefile | 1 + net/core/netdev_queues.c | 27 +++++++++++++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 net/core/netdev_queues.c diff --git a/include/net/netdev_queues.h b/include/net/netdev_queues.h index 6e835972abd1..b9d02bc65c97 100644 --- a/include/net/netdev_queues.h +++ b/include/net/netdev_queues.h @@ -127,6 +127,9 @@ void netdev_stat_queue_sum(struct net_device *netdev, * @ndo_queue_stop: Stop the RX queue at the specified index. The stopped * queue's memory is written at the specified address. * + * @ndo_queue_get_dma_dev: Get dma device for zero-copy operations to be u= sed + * for this queue. Return NULL on error. + * * Note that @ndo_queue_mem_alloc and @ndo_queue_mem_free may be called wh= ile * the interface is closed. @ndo_queue_start and @ndo_queue_stop will only * be called for an interface which is open. @@ -144,6 +147,8 @@ struct netdev_queue_mgmt_ops { int (*ndo_queue_stop)(struct net_device *dev, void *per_queue_mem, int idx); + struct device * (*ndo_queue_get_dma_dev)(struct net_device *dev, + int idx); }; =20 /** @@ -321,4 +326,6 @@ static inline void netif_subqueue_sent(const struct net= _device *dev, get_desc, start_thrs); \ }) =20 +struct device *netdev_queue_get_dma_dev(struct net_device *dev, int idx); + #endif diff --git a/net/core/Makefile b/net/core/Makefile index b2a76ce33932..9ef2099c5426 100644 --- a/net/core/Makefile +++ b/net/core/Makefile @@ -20,6 +20,7 @@ obj-$(CONFIG_NETDEV_ADDR_LIST_TEST) +=3D dev_addr_lists_t= est.o obj-y +=3D net-sysfs.o obj-y +=3D hotdata.o obj-y +=3D netdev_rx_queue.o +obj-y +=3D netdev_queues.o obj-$(CONFIG_PAGE_POOL) +=3D page_pool.o page_pool_user.o obj-$(CONFIG_PROC_FS) +=3D net-procfs.o obj-$(CONFIG_NET_PKTGEN) +=3D pktgen.o diff --git a/net/core/netdev_queues.c b/net/core/netdev_queues.c new file mode 100644 index 000000000000..251f27a8307f --- /dev/null +++ b/net/core/netdev_queues.c @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +#include + +/** + * netdev_queue_get_dma_dev() - get dma device for zero-copy operations + * @dev: net_device + * @idx: queue index + * + * Get dma device for zero-copy operations to be used for this queue. + * When such device is not available or valid, the function will return NU= LL. + * + * Return: Device or NULL on error + */ +struct device *netdev_queue_get_dma_dev(struct net_device *dev, int idx) +{ + const struct netdev_queue_mgmt_ops *queue_ops =3D dev->queue_mgmt_ops; + struct device *dma_dev; + + if (queue_ops && queue_ops->ndo_queue_get_dma_dev) + dma_dev =3D queue_ops->ndo_queue_get_dma_dev(dev, idx); + else + dma_dev =3D dev->dev.parent; + + return dma_dev && dma_dev->dma_mask ? dma_dev : NULL; +} + --=20 2.50.1 From nobody Fri Oct 3 16:44:18 2025 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2062.outbound.protection.outlook.com [40.107.95.62]) (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 7633B220F3F; Wed, 27 Aug 2025 14:41:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.95.62 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756305708; cv=fail; b=u9OsK3AvvUknlv6CpI8IW0P/Lcl9/LXP4hUiUSqlHiT3Bav1MEzwlEdYp5+l2JQa2+L+s37j8NP5Hb2CuwWdGZHQmLE8ObyGrfN7GPAgP7AB2svYLadF27GJzsLcjeByTg5IWgB383U9YenQU5jv0FFWWmOadrWPKaFC0B89RtA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756305708; c=relaxed/simple; bh=7sE82rgasi2yPuvU1rsdtQH1IQJkeR8OJtIAhzLfMgo=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=OME+5UhdpOjCkJzp1ESl3ntOxrTFf4aLQMtlEFakKOIW/cB8Ke8f6E0LEHLFMMhWK3pUNeFoTL9gAT/zqbtgUnP2kYkD4KFMT2GvVszEalEV6SbKozYWnMzO8X2IgHo7+Jvc+qyx2lVy3g6fx2TjNE5AgZsZ/EYb3/zOXN6wPCg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=Cta4up4q; arc=fail smtp.client-ip=40.107.95.62 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="Cta4up4q" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EWFhYyeOIziVOwNd3TbhnSlGQUswesc3GYTvKBb7m97JSnMLsWYU6HrDRWvc4g9b7wr12uBFJCPjUzRiuFyVdae6zAlUEqaAc1+CPJXsdDYOVN1C5khH+zd3W1xotBUJ6/+KZcyqEvyz45zPNoqpfST3onAL8w36oQiwdoZxn39gxajj0ELYMXVnE5PdTMhxYXDYh+WC5rcA9lDogQAGePEUAOp3JnfuSBifMQIymQSlsihKj0FC5AwB5qPdOofv9XzWZn2fkdiddPN9vL49F4/ROgiX8SOZ75gPOh9EK3M2mc3iSHwQVuwaYMECNLMJnH33djz4aR+s9ObdeMx/Aw== 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=XCXAoHFjFpaYyctbDX9Ip6+s8P/F2xUVdQyD2rhmQ70=; b=X44wNAu5LMoWxwU268vMYwqfN0oLPcs4d/7t6/GW7hdCY8YvbawKJACy+ey4rEqzvm3Ppx8cia0VUoS8zwoBf/nifHDmD0whO1Blz7xEOsAH65XPVmqptXEYYyoNsnFmW0kQbH1tzAAzgFpiCOLmis653RFwx6CKNCUkB2ZskWF2a2UAKgAy739rVfVwchenkZne+SlP970qe5Zlj8TSiAhZf6GKVsxwJaX+H0w4YCTuKcvA6uFPq790wp6FtiiUaqR+xK1XUl07RkzUY3pbpfCf+YG9DDxZ49avllqla5yHLPYKS9APt4MySgcW1farS+Dp5sQhyissjUR1WanfwQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=google.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XCXAoHFjFpaYyctbDX9Ip6+s8P/F2xUVdQyD2rhmQ70=; b=Cta4up4qql3Bc+9TBHxNW8XwmUJ5iFk9lfsaT5kaAburL1xDhpIgzS8sBwGsUfnhhd81VlKcLDoiPi0DDN76HhoQg87JTBgdmoomDZ5XFLmXyr7Hc4nBlC0vZbC0DlEZLi3yvO8vD7adLZy03Wt+dZIKG/fAi2mWPa8UW+QIaxSg3zhoR3AjPi1vrGtm8R2N9bDZTQ/D8kdJzzx6x/Pq/HIahsPf5mgyFoW4f2CrFQIIz/zsji7/WdVniaRhLBaqrHWgiz498ugXIGGgBORqkgJ/TxE/Jx8RiTFnFQ3Ub0uFZMhdSRDgpVbmA24yzcthqRs1A7nddsKCjz70t903/g== Received: from BL1P221CA0006.NAMP221.PROD.OUTLOOK.COM (2603:10b6:208:2c5::22) by CH2PR12MB4088.namprd12.prod.outlook.com (2603:10b6:610:a5::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.21; Wed, 27 Aug 2025 14:41:43 +0000 Received: from BN2PEPF000055E0.namprd21.prod.outlook.com (2603:10b6:208:2c5:cafe::69) by BL1P221CA0006.outlook.office365.com (2603:10b6:208:2c5::22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9073.13 via Frontend Transport; Wed, 27 Aug 2025 14:41:42 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by BN2PEPF000055E0.mail.protection.outlook.com (10.167.245.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.0 via Frontend Transport; Wed, 27 Aug 2025 14:41:42 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Wed, 27 Aug 2025 07:41:04 -0700 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Wed, 27 Aug 2025 07:41:04 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Wed, 27 Aug 2025 07:41:01 -0700 From: Dragos Tatulea To: , , Jens Axboe CC: Dragos Tatulea , , , , , , Subject: [PATCH net-next v6 2/7] io_uring/zcrx: add support for custom DMA devices Date: Wed, 27 Aug 2025 17:39:56 +0300 Message-ID: <20250827144017.1529208-4-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250827144017.1529208-2-dtatulea@nvidia.com> References: <20250827144017.1529208-2-dtatulea@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF000055E0:EE_|CH2PR12MB4088:EE_ X-MS-Office365-Filtering-Correlation-Id: e876d253-d8a5-4117-a638-08dde577d6ca X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|36860700013|376014|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?YUYr23e0681iolBgIreC4mHaCxWeK7rdKvzsBxei0e/DVulaqTJ2ibrgVSK8?= =?us-ascii?Q?vUCwLlsKr4shCLcWMe0UfoZALIbYRbR0tt2Utm0QX1hXpEVoRoFi9Tf9PE2R?= =?us-ascii?Q?zNfPlb5BwzgWhrHJESciIW7nArrGB+ECjVjcnnLaqP0QUWbpYreGgYngrfIB?= =?us-ascii?Q?JaMuQj7yY9HnSBex9Y1Og+AHA2PvPGYvMkLKvscbLKQjzwt7CiHY/hNb0RpI?= =?us-ascii?Q?3NKa6NDFL/8DDFSac+G+pnGPuhfnuHVW/qmOQeCSPAywiiL5JtZ9I7Jx2Hza?= =?us-ascii?Q?3/l0cYCKISQJS65a5grI9zxPWCS8gG/V31owigik8mydWtNFb7fZByCeP3lq?= =?us-ascii?Q?ifKzG+kWwC+wXfmpja1Dd4gMEMKJSYpnqFVetbMKXogYsFfCPKaJhulDlTIO?= =?us-ascii?Q?kO+rN7MW8xxUTTkOxD40VBTn4xiwE5bJ/4Pa8wkP/tF/DEV51AZyu+UT0d34?= =?us-ascii?Q?8m+YO3XV9W8NzzpfIQNEVwfEhMwGva/9/uxIlT/ww2Gca6qN+qc2l8/D+UMs?= =?us-ascii?Q?HZEF2ErBkiMpbMP3vFcimutvhmkxLPhPq88Jy/X2OA6H/aKHUFmmkWKZhI6j?= =?us-ascii?Q?Xiwc4seiaL9hvgTgg6f/EFtzlt73i+vayTLre1xdSh/lUS6GdUKJlw/d2ui3?= =?us-ascii?Q?uIXrCpuwvxjM6aK63d8dG5d/ibz6k26opVITL8vw7SGIKvrT/8oFf94GgnO4?= =?us-ascii?Q?cR325E3D64zDegsQg+hIMqgt5lSbaAenaFyH2nWDW4gyJssNQpvQqxZkn+KO?= =?us-ascii?Q?DBZbRHC5ROKEI8PvNOeyPRyptyBwavm51UM53MZoTSqy7DEW6VejXi2MPzAV?= =?us-ascii?Q?MBeTmixYHAdUHiJcWJJH2OSTbDRPyjM+x6rTkc79BJb75FxMedQVurEdIU11?= =?us-ascii?Q?d+Vebmsf6cv4LZ8HGQyolM7QBwNIC9VDyHOQvMjs1pawvgwQfq3GEcxPgEZC?= =?us-ascii?Q?GIOXgaODK2DzQQDsN4iZa0oKSaEWkqqz2d1oPnbF/KyEejtA+AZ9bOssWdO9?= =?us-ascii?Q?7701dDfiwXMKZj13t/Mq1dYrfiAA930ELicjtDk5N2xBVvL/EtKgWGxGja5C?= =?us-ascii?Q?PJdfRk28YyrOjQ7MG7xx12IdMbzPGBEeoOlPXbAeuSMmNknYdtDF/qU2XLSm?= =?us-ascii?Q?qx/DwKRH9OlWeqB8F1Ym3Mw2hqZFD8QH6ohRUkUysQyo+qzGTbxx57G9Ktf7?= =?us-ascii?Q?ziv1fpO0uyzQ6kHfBfoUn0qzHiRxt//Z2S0yMYtVij+x8Ai64GvlxZSuzL+i?= =?us-ascii?Q?Vi/oKhpP7pkzdl+aiUrSUozklcQbNHlFkFgozHkltZkpvKxUWQNSPKyScJ3x?= =?us-ascii?Q?hjswddoJfw2FWvYSGjh0VSlW2eODQsBN42ehf9jexC4SV1mBa9gVPiVzZqxr?= =?us-ascii?Q?qdDpgT4KvnoRFa8WXhl/4JOLo1LxzqPSAQfLFotjczDkCUBcUIwhFOgr6xmE?= =?us-ascii?Q?WBgNanSHle1DdB6EiUZx4tDNSX+t3Pde5WtrwJvN12i6JpuJ/eHSOPQSmQka?= =?us-ascii?Q?Z8mTpkBIPZ+kswo+FEh/WZcskcoRVZJqeaNY?= X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(36860700013)(376014)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Aug 2025 14:41:42.1802 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e876d253-d8a5-4117-a638-08dde577d6ca X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF000055E0.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4088 Content-Type: text/plain; charset="utf-8" Use the new API for getting a DMA device for a specific netdev queue. This patch will allow io_uring zero-copy rx to work with devices where the DMA device is not stored in the parent device. mlx5 SFs are an example of such a device. Signed-off-by: Dragos Tatulea Reviewed-by: Mina Almasry Reviewed-by: Pavel Begunkov --- io_uring/zcrx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/io_uring/zcrx.c b/io_uring/zcrx.c index e5ff49f3425e..319eddfd30e0 100644 --- a/io_uring/zcrx.c +++ b/io_uring/zcrx.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -599,7 +600,7 @@ int io_register_zcrx_ifq(struct io_ring_ctx *ctx, goto err; } =20 - ifq->dev =3D ifq->netdev->dev.parent; + ifq->dev =3D netdev_queue_get_dma_dev(ifq->netdev, ifq->if_rxq); if (!ifq->dev) { ret =3D -EOPNOTSUPP; goto err; --=20 2.50.1 From nobody Fri Oct 3 16:44:18 2025 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2050.outbound.protection.outlook.com [40.107.223.50]) (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 07A0B21884B; Wed, 27 Aug 2025 14:41:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.50 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756305702; cv=fail; b=qnKHzifA9H4H+eWAPbrCihd5pXd93DXs/DdSPJH1qDXI0mlum/KtGQU34oWUAKD545+rC+7oP4JVQUHsIrqpHYu2eNYlXQUGQbzq4VXuED3ZHoKk7RL2zcGAohk+GwbbC7Yww4qgH2gg5PlausOPQPJcop1UNHZ89tRNxFGGoy0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756305702; c=relaxed/simple; bh=gpVqEzM++iS+MCO7hMUyBrxhvGL8NPDTqRk3GwvPDos=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=tXCzfHsHkyNZIlhymss8i3mkg8K+4JmggGjwBHcbaJr0NPltA3pVIkP421KFfb+ld1KzldBL3/DdHzNoZC70i+P45m2Ol2AWw4zjSTubuRZE5plvnsNIvmpDJa6bd6yV28DhsehsEQocZFiqVXSvZxPWh1bupTRdApTH45w8r58= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=K20mFCT8; arc=fail smtp.client-ip=40.107.223.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="K20mFCT8" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VNUPH0DwXZnI0osQcpZojyfR2Srt7ZLrPn2XsNWmxqYb22l+ry1CYaBvfPeA8h2bDW41nxiGgkZuxF/zGdJXFwRoLQ7ZoLAJ+s+0m6LFgK9vaDKzLH2r4JlIyapH5a/2SuVTiys0IlVWjgpK+KICkNOUu6fwxBH6NuZkZWFQqaoPRFEQ1ZKZcF/3S6pcCyh46A6bXzeTKyo8btXYdktSggr6qM/DBB22c9TA1Ob8VYOPyEI4eBAjWy6P2Y5dXBpm7YWEan4Z6rSq5AL12T/zsbUS8Qie72LYwq5Igi8P15S2cUikBL8LAcyZ1V4QKxaS3W8hgMp7cN0Jr0fLaxlw4w== 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=usXVVuUSvWBL2seaykd7c125tV+xIT4bq0Rjg4o05CU=; b=TYXDX8mfN75hXVYoLzRujp3T5TWMp1KokjRxQ5R2i9d8cLX3SSrTGHlr2LJKA1kwKzo+njM1523Kh6kag+qM1qhG6uPPz8zRO4MTjZHWP3bRHM3o2zGHa3WwxV/BlupV9iQS7HKVA7kLKw+Mpp3bJXQGf9WqcIsr95cW20gKvXfZnQVzbvXTNP7A34owUh/+gphjp+blxcy4+7KPkOpACACUARVnAoFF7m7QvgSkBiWSY9eCk2IvINyifiVjIZqLCG3YIuOhgy0v2HTI920E+dSCpGXI0Sd/QoEmGN6Pg9vC8ZqT52EAg/PELQN53nwKaiYHmtGim+ru2d//mPFNTw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=google.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=usXVVuUSvWBL2seaykd7c125tV+xIT4bq0Rjg4o05CU=; b=K20mFCT8tLhn5kpqJUTEE2fudm2X4grTVVeaIW6mR6piw1tTv+qOaPJ9YdtsIsCQObYHVXIwEQOFW6fhjrCz1baNlavp/MvuZnMl5aP3wSSHDApuOqjEOkT4XlZyQl3nv1yVGuPDbx6jgO1sYABhILzfdsmBwat0UWdH+qLJsSAvZ2q3/JwokFk7eQqp7gw4LMiYqkOrR0ICZFiPxfDpAVA/isoKR9aeACGphbCRI/xYO1Uwgq4z93ZWzkrzpYCCVbYoNMKjUazEoNl+oi6z3NfI1Ibri/tdFqyPkMoJ+IlnM5ClanhWdD3VQgKdMjBDARArojW/efNvq7Iod124KQ== Received: from BN9PR03CA0924.namprd03.prod.outlook.com (2603:10b6:408:107::29) by DM4PR12MB5937.namprd12.prod.outlook.com (2603:10b6:8:68::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9073.13; Wed, 27 Aug 2025 14:41:36 +0000 Received: from BN1PEPF0000468C.namprd05.prod.outlook.com (2603:10b6:408:107:cafe::1) by BN9PR03CA0924.outlook.office365.com (2603:10b6:408:107::29) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9052.21 via Frontend Transport; Wed, 27 Aug 2025 14:41:36 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by BN1PEPF0000468C.mail.protection.outlook.com (10.167.243.137) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9073.11 via Frontend Transport; Wed, 27 Aug 2025 14:41:36 +0000 Received: from rnnvmail204.nvidia.com (10.129.68.6) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Wed, 27 Aug 2025 07:41:09 -0700 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail204.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Wed, 27 Aug 2025 07:41:08 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Wed, 27 Aug 2025 07:41:05 -0700 From: Dragos Tatulea To: , , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman CC: Dragos Tatulea , , , , , Subject: [PATCH net-next v6 3/7] net: devmem: get netdev DMA device via new API Date: Wed, 27 Aug 2025 17:39:57 +0300 Message-ID: <20250827144017.1529208-5-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250827144017.1529208-2-dtatulea@nvidia.com> References: <20250827144017.1529208-2-dtatulea@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN1PEPF0000468C:EE_|DM4PR12MB5937:EE_ X-MS-Office365-Filtering-Correlation-Id: b365fceb-00d8-41e8-f610-08dde577d31e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700013|376014|7416014|1800799024|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?bMHNSAmsyEqf0aNtkp5Gwr7ncrl5qcWdS21nogOXGP2gXwM0x8dgxV7QZEzp?= =?us-ascii?Q?E6Gl5MuJPXikhe7O+Dc8+vt1fOXK64KErmkHdUxrdz0fN7iaN/cDt/A8Md9W?= =?us-ascii?Q?hNwyR5aoiI7qQEExtbe/Y9aDzE7bi3sYSA3FKUxQKvSj0aeJ1d2dFgt/Kypa?= =?us-ascii?Q?B0vLRlJL37mFcqUbExt05FshH8x7gCMYcpxHahxmwj2L2uPVDguAFMR14J1e?= =?us-ascii?Q?G5FahIgSZnXgMtmsK3viKsXRia6fX6ulUuOGfEje4MloRUdnRldi7+2DypiT?= =?us-ascii?Q?5HXW4fa2NrWnc/cuDGFm8D9JLruEoI4JgPIwtVgzOQhUEP16BRLIOfDTTjX2?= =?us-ascii?Q?yFmRll3hinEHna166qZcMfVUJ8sGnLicWzQa6U1NDOWRt3xjoxMRPq+0+KBM?= =?us-ascii?Q?UZCQbvIuO6564/2ZL8hlAj4ZK5eMEeG07g40pTdKpUCUTDh8EpAa0TO1mS23?= =?us-ascii?Q?Omfuo+wFvYMYDOWB/R6u0k2peb/d4Laes4EBOCdT1VQZt41AFhS9VCKIrgMt?= =?us-ascii?Q?wQiZgEngjisoH0pqnoamrAAyRTEbxcqzr9qDoCFN6SXwuxhMUKuVn5FAjo4o?= =?us-ascii?Q?ijM1cat114VA/b7pz0YXWWP5NXdj4K55D2vCG1fYxXnpI7QMVtUtWpC+reeQ?= =?us-ascii?Q?YYT4pnAV25lHDtoNx1ixJCuA/xDFK10Fz836OBHgjGfK1U/tMhjJeaVPisyp?= =?us-ascii?Q?/0wJNsW5sgUa3g5vof5FsCHi6TgHRs9WxQr9X0cUliOLt0A4Ti32zrpowTto?= =?us-ascii?Q?VsFVEs06IQ0L8nSpYLJ5LFcHDvxtx2A+WwGyximvH1vcPfCBfr2PPub1cKNv?= =?us-ascii?Q?6qNpmC9PQjTvNC+4DX3rngaUgnJC+zYgsvdHvay6NZCLg8hvevQwAqvqS08C?= =?us-ascii?Q?gSrrcV2WRoFD9lWqlkuwlG/yg/za9vzF6KueErrQbq4Deso6MGcCy1CjQDpC?= =?us-ascii?Q?FAZ3odxbKDwwExNt7+BVIzDPHU2OzO05c5pSLnvwcVLx5Qm9NnK9KI4NlanI?= =?us-ascii?Q?tzvenlwwrOmezvAZ4aOspniMGfbjf5cQ3jwADhTaLUlZlaTllYqKpceKTbM2?= =?us-ascii?Q?OWTaIi87BhQ5GUchw1qV2n9THSLWCyT3ozYkM8NHHYAp8qrXNTINRh8QBUve?= =?us-ascii?Q?2zKt4zgv5j/lde48X5mT182qYBQcNRdgxIO0KFznpSejyw3ZEkFNN1gBHr75?= =?us-ascii?Q?67q95YHlzIYwnLzsRPzVSZyh5n7RqcydsQD/CCKvrThx+YYYbj5bJxFOGASw?= =?us-ascii?Q?H79Lthe+bKJhwWzi1OAyNYgIUz6xi1YK/5gJE4u1OdrQL4YOi0lgCBLqDFtB?= =?us-ascii?Q?0xqVIiExYAEPnR7Gw9gn0QReVM6GOHmt0e56Hdb4nc9yQ/P1mUpp6fbT4DkN?= =?us-ascii?Q?up7sZM3/05fZgCF48tkqY8aG1QpzOjwb4KUXXDAi/S21DBTyN+0pKo7cAQfk?= =?us-ascii?Q?3VwlUm6C4qys/q3ISbZCyXeQ+2ynIntSmQwhZ8cv2o6M/JgXlY6rWoCT1gD3?= =?us-ascii?Q?xN7pFm5VCSfssLpapFgC87ORGcU61wSSlcOq?= X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(82310400026)(36860700013)(376014)(7416014)(1800799024)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Aug 2025 14:41:36.0049 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b365fceb-00d8-41e8-f610-08dde577d31e X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN1PEPF0000468C.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5937 Content-Type: text/plain; charset="utf-8" Switch to the new API for fetching DMA devices for a netdev. The API is called with queue index 0 for now which is equivalent with the previous behavior. This patch will allow devmem to work with devices where the DMA device is not stored in the parent device. mlx5 SFs are an example of such a device. Multi-PF netdevs are still problematic (as they were before this change). Upcoming patches will address this for the rx binding. Signed-off-by: Dragos Tatulea Reviewed-by: Mina Almasry --- net/core/devmem.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/net/core/devmem.c b/net/core/devmem.c index 24c591ab38ae..c58b24128727 100644 --- a/net/core/devmem.c +++ b/net/core/devmem.c @@ -182,6 +182,7 @@ net_devmem_bind_dmabuf(struct net_device *dev, { struct net_devmem_dmabuf_binding *binding; static u32 id_alloc_next; + struct device *dma_dev; struct scatterlist *sg; struct dma_buf *dmabuf; unsigned int sg_idx, i; @@ -192,6 +193,13 @@ net_devmem_bind_dmabuf(struct net_device *dev, if (IS_ERR(dmabuf)) return ERR_CAST(dmabuf); =20 + dma_dev =3D netdev_queue_get_dma_dev(dev, 0); + if (!dma_dev) { + err =3D -EOPNOTSUPP; + NL_SET_ERR_MSG(extack, "Device doesn't support DMA"); + goto err_put_dmabuf; + } + binding =3D kzalloc_node(sizeof(*binding), GFP_KERNEL, dev_to_node(&dev->dev)); if (!binding) { @@ -209,7 +217,7 @@ net_devmem_bind_dmabuf(struct net_device *dev, binding->dmabuf =3D dmabuf; binding->direction =3D direction; =20 - binding->attachment =3D dma_buf_attach(binding->dmabuf, dev->dev.parent); + binding->attachment =3D dma_buf_attach(binding->dmabuf, dma_dev); if (IS_ERR(binding->attachment)) { err =3D PTR_ERR(binding->attachment); NL_SET_ERR_MSG(extack, "Failed to bind dmabuf to device"); --=20 2.50.1 From nobody Fri Oct 3 16:44:18 2025 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2051.outbound.protection.outlook.com [40.107.220.51]) (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 5D2D02153ED; Wed, 27 Aug 2025 14:41:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.51 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756305713; cv=fail; b=UVi2bfLt3sulEPQx5S1zeKpalYLVczfkofGMxwk6zwQE1vrD1CsA1Ku4aDG+x7uAHQaNazocgIn6VaOszxmgHb3Yolhn+p8UpHPJQpzroSHjuKZdV+WwbD5z2fvjW3pS9XOC90rQSxkmgEi9bUwhhgpNDaDCFBLYbQo9swL3vfU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756305713; c=relaxed/simple; bh=r5/I4lETNhjzGp8Yr+/MrUtoh587lQAqA1xtUoEsDBE=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=kdFUtiBLyNU5gMk9ZO2Uh7pidLLVQX10RSbpvis7DAXVgFG8LIbgWJhyBubbQro6Z1N775u2XP1kD9oGUleuwuaCRyFb5R6P2m6a2m/d9rgVQnTSKpzla1/FTwSitTUgI/XIvHGIUyfaDbWQ7ubgL3iWcLhddYKTe/Vc4HTXMug= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=UrRtvlWj; arc=fail smtp.client-ip=40.107.220.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="UrRtvlWj" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=p6c0Y+zS3mrRhzvuIo+NfpAPE3JH4dmquhMLesMjM+NbYfFzq3emFUENMIYQ4GHqlrDG14VQEi95DLERA7c6B091cW/KAoISFZE4cIRQ1FsRPWPhjJz+/BP91EOA1V2WO3v+AUfYu6P4LydVyDqSjiYkpq5hO0+nvMK1iJvkCvnnJNtNsJIucHfC3gZG1C7oTz1LiRChbVNXmU9uC7lDJMOvDZJPg+aJLQjbet01g2jL8CPXo4iH0Flgeb/u/gdQ8zyMJ2GNbFF26RSJpCtZLgd26XbMxkkmNCpHoGIsRkbxxaKLJmas0/QhCRqg+Mg8gLdzSXcv66lq6U81YzAkiw== 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=MdZmkJJnXBfif8QT5LGiZDWZ4BWIuP0NWV7mCGb3qRI=; b=tBMZjmTvpoeq1xkYZHirbIScMe7a9zmoPKURvd7h2kXnznteyXWArXQ8ISZAz/oDB9iZWaT6e8SqxQZn25RlrSbNxYNLeziPMP+pTIBB6znD3F4C4iw2X5Mq9z7fuBE8+9vdMJUGuyizHBaxtbCnlu7admQbeWX47U33f68SijKnrK4b0UxCfTnsfzAH0ZXgeom2hsmPKFxyYPPYsPQJ7T/AKHxG0BBp//JdVdAOuiDv+WzVhii7s8AZ0ynVPM1+UFWyQFex9BLOEjn4ES6BO8x4A5OVOSn3zRhsdw67N2+vPdTnUuU37N8850NHdgQQra5vuwW5iyoj3pANb3FPeA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=google.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MdZmkJJnXBfif8QT5LGiZDWZ4BWIuP0NWV7mCGb3qRI=; b=UrRtvlWjHllSRoTF5hdZuCtRHPrT/OOOm4dZ0cljWvEUHHNmIZHoBMZgC9tXfKo6r3pnmpsl57LE5gKRjsUH37Au4du6JtpI7G1pORm1fg2Rqz2E2Fjv7AFcA0keySjwVtSHYDBJt1+OBo6gE6l3g935TBWky0Fdpe3N6jav3I2yUKczWYg2Cvx9uXKUVI4N5EM5NDH5YFEnxHrxCF0Tj8CCRaQzXZ44kK0WORsGxo/bz4rGqoz3l9Im2+wKL3+8MFA1909Q2Fmd6jRzuaSHQUkf3YtD89WrQN/I1At6GD2ErGoBK6VzgcaRo3yr3WpmJanHuWu8zBFSHjdlFNyEAA== Received: from BLAP220CA0003.NAMP220.PROD.OUTLOOK.COM (2603:10b6:208:32c::8) by CH3PR12MB9344.namprd12.prod.outlook.com (2603:10b6:610:1c8::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9073.13; Wed, 27 Aug 2025 14:41:50 +0000 Received: from BN2PEPF000055DE.namprd21.prod.outlook.com (2603:10b6:208:32c:cafe::c1) by BLAP220CA0003.outlook.office365.com (2603:10b6:208:32c::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9052.20 via Frontend Transport; Wed, 27 Aug 2025 14:41:50 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by BN2PEPF000055DE.mail.protection.outlook.com (10.167.245.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.0 via Frontend Transport; Wed, 27 Aug 2025 14:41:49 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Wed, 27 Aug 2025 07:41:15 -0700 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Wed, 27 Aug 2025 07:41:13 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Wed, 27 Aug 2025 07:41:09 -0700 From: Dragos Tatulea To: , , Saeed Mahameed , Tariq Toukan , Mark Bloch , Leon Romanovsky , Andrew Lunn , "David S. Miller" , "Eric Dumazet" , Jakub Kicinski , Paolo Abeni CC: Dragos Tatulea , , , , , , Subject: [PATCH net-next v6 4/7] net/mlx5e: add op for getting netdev DMA device Date: Wed, 27 Aug 2025 17:39:58 +0300 Message-ID: <20250827144017.1529208-6-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250827144017.1529208-2-dtatulea@nvidia.com> References: <20250827144017.1529208-2-dtatulea@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF000055DE:EE_|CH3PR12MB9344:EE_ X-MS-Office365-Filtering-Correlation-Id: 98ef9553-000e-4e07-6651-08dde577db61 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700013|376014|7416014|82310400026|921020|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?wtBwFJmk49v+IjRo4Pc9SwFEKRTR1uYk+Xko1CGvekoJ9b9KohjL9Hdj9I95?= =?us-ascii?Q?ZcXEyqHv2urtod0ixwXs+d8L6S+KG8VQ6KBqlc+Srtg/i732G3nSlT9XGDTL?= =?us-ascii?Q?Nwnua5rt1YG9GpxrntMPv9gKWIXx3A/Mf7itiwAx2hFGEM1vYD7/KLwUx2S1?= =?us-ascii?Q?TYrQU0KZe6DBtGaln8CkWN4Gi7Nix/ONeV3x1zFUvZW6EZO5c/GQ61VRKY9v?= =?us-ascii?Q?wj3CqTJt2XpmabKq/oXZjeVwGrN013FF4N5qeT4SwRdrB/2YvPXNifGRwhfT?= =?us-ascii?Q?Uts+GftY7XMdvKSDVjQq1FJ30fdlQQ3oLOtzhL2CVM2tOZzxW4ovPVqF0sKb?= =?us-ascii?Q?JgaasWiz9RNYSFB+MDtH9CPTEVGMLiVE50gc93Lf7zzVYV1yMOzlWWngKW/5?= =?us-ascii?Q?54O+TznOakpMmSx4VF8NOeXT/UemTsFQ5vHOnC4L/xI/HtmnOwO9rJcEQ1w1?= =?us-ascii?Q?oeLlRawWpJn7clorsb71SHHZKFkCPNymlmAdNtYv8OK7LclZTDyNI0/0ShbU?= =?us-ascii?Q?tzSigkXq5p1Nc9ZxkR0T7F0okiOUQXFFxA3AiAD6g8QPD6CcIA/10eNbkpk6?= =?us-ascii?Q?CcVzaQ+CBs4GaXCvdAr5olt0b0z/FFU238gPAARcueRoKVu2Zx7sg0UCc335?= =?us-ascii?Q?8rrK600XTPvOgWh1Kpgdv3Vgkpa0J+qXfK2P2fVfBX2ImtL1hqtj3OSAer4S?= =?us-ascii?Q?k4JLQ+yzz3roLM0ec3Uwcb/AFYhW2nVKOG6jXwmskcgDy6WVoJMgDC6AbPdC?= =?us-ascii?Q?c7qd+xE4azUubRYnF8/1HJQ/w03LzOdGAop4LEqy79YZVqnTqFF5Kg7VQEMp?= =?us-ascii?Q?NJfrPlNMIt8CKvDQzqYsk+R+/BRoPjiaQ2b0FFwtAcIH8u4iGjerQ/Lnof+J?= =?us-ascii?Q?FBY8F01VE7gKBUiQlBLBBDWi8+yQQyh59JOOIKp9THJ/yqgfoK3OmVXoVoCb?= =?us-ascii?Q?j/yX2w5t9sqt3Ddo65OpJ8IwH35XdnnSNDvXyEHr6jSx1WZQJfkCY4kv5gzK?= =?us-ascii?Q?VwjWpx5/j8MWHE+iVxPAFBGNUlu5uLWLwtKkJTYt0Vnj96aE+fVGDVpgHQYH?= =?us-ascii?Q?qyS5uN+++Wq99h/llAA+CbUbd/ooqLkf7RnpJrWJhuuPgG4O/sW6dMnycsSd?= =?us-ascii?Q?QGADsGoZGWxOjlmAHXZGQkH5ewIAUm6JF0TCuSbJgA9cBtHW2k2zBlRicroC?= =?us-ascii?Q?XR1X2pQpyT1oSOBmpzU/1mGdDE+mInEsCtkgjbL7JjvtQg1tUG4k1iovKgeo?= =?us-ascii?Q?WgtELH1EqmDSWxrWwsyxVkhoAqRUHC+2dSPV8BzxJ82Zmv2+Vf+1zjEIUVR8?= =?us-ascii?Q?yDmttYmjEtFrwE4/TPyunqr50OVBY7+EYk77/C7cSeB+SkWiggkIm3vb1DBb?= =?us-ascii?Q?ZM6Ca4pxytQ3ASQZ8clhtQcG4hryB+lLhfqHjMU39tKcG0wnW+DhVZ+K5bGV?= =?us-ascii?Q?gzYtc5TLthdr/fbRGzAmm08UupCrFY+GiXASGEN3AWS3C16YqjUtO43Mt5XZ?= =?us-ascii?Q?GNoXDtFP0lUFjQ7uFi2Gh+vPEgQ6Q4CGPJ4jmN+Ko2MrzqRvan+/IhiAyg?= =?us-ascii?Q?=3D=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230040)(1800799024)(36860700013)(376014)(7416014)(82310400026)(921020)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Aug 2025 14:41:49.9086 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 98ef9553-000e-4e07-6651-08dde577db61 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF000055DE.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9344 Content-Type: text/plain; charset="utf-8" For zero-copy (devmem, io_uring), the netdev DMA device used is the parent device of the net device. However that is not always accurate for mlx5 devices: - SFs: The parent device is an auxdev. - Multi-PF netdevs: The DMA device should be determined by the queue. This change implements the DMA device queue API that returns the DMA device appropriately for all cases. Signed-off-by: Dragos Tatulea Reviewed-by: Mina Almasry --- .../net/ethernet/mellanox/mlx5/core/en_main.c | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/ne= t/ethernet/mellanox/mlx5/core/en_main.c index 21bb88c5d3dc..0e48065a46eb 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -5625,12 +5625,36 @@ static int mlx5e_queue_start(struct net_device *dev= , void *newq, return 0; } =20 +static struct device *mlx5e_queue_get_dma_dev(struct net_device *dev, + int queue_index) +{ + struct mlx5e_priv *priv =3D netdev_priv(dev); + struct mlx5e_channels *channels; + struct device *pdev =3D NULL; + struct mlx5e_channel *ch; + + channels =3D &priv->channels; + + mutex_lock(&priv->state_lock); + + if (queue_index >=3D channels->num) + goto out; + + ch =3D channels->c[queue_index]; + pdev =3D ch->pdev; +out: + mutex_unlock(&priv->state_lock); + + return pdev; +} + static const struct netdev_queue_mgmt_ops mlx5e_queue_mgmt_ops =3D { .ndo_queue_mem_size =3D sizeof(struct mlx5_qmgmt_data), .ndo_queue_mem_alloc =3D mlx5e_queue_mem_alloc, .ndo_queue_mem_free =3D mlx5e_queue_mem_free, .ndo_queue_start =3D mlx5e_queue_start, .ndo_queue_stop =3D mlx5e_queue_stop, + .ndo_queue_get_dma_dev =3D mlx5e_queue_get_dma_dev, }; =20 static void mlx5e_build_nic_netdev(struct net_device *netdev) --=20 2.50.1 From nobody Fri Oct 3 16:44:18 2025 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2071.outbound.protection.outlook.com [40.107.93.71]) (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 717EA201033; Wed, 27 Aug 2025 14:41:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.71 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756305715; cv=fail; b=LgxVG+M2aULVyso+qdsI53uK1WhF/pGfHDo5RSwNE84FVF/MCt3wMA+0t42Bb41P/rfiHGzZdh/auidUP9k90lA+45uJzlDb8sa4TNmuyXJH+85Q05G7dpeBrU/UVxq3vPnZD98e5KhlxHx5MniOdMiov6KIPjlLMK4dTPdBskQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756305715; c=relaxed/simple; bh=h13I/zFV/ot2FGZMKCV7eg5GPg2gVbqcZYpUkmWWKf0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=rRFDzkU6MA39hk27/CCtaSvHF8h+dGvFXzoy6wWRl09ARisEl2DuXSXLW2MMP4P48JRlANT3+alSoS6sphIYdZvwTKQruYa9lVRLt1ZuHo0O9+YLl2UpsA1aR+FrrlyImJy1RbvZ7b4Jr4tJLxTUXqx0HZ54waaXxtpSaNTYc+I= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=k1J0sxl6; arc=fail smtp.client-ip=40.107.93.71 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="k1J0sxl6" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fyljpf7x+S1FC+rZVINuOL/tMlZDrLEY6YJTh/XRxG46HFYa0kw1q5aFkcyw2yI3T/T3okiRIiK4GguhoQ6pjrzRWRYgu2iuNGPCcTO6mGi1m1wsxE+pGoPXVtfY9UJTHSR9MFOetBSflJv1Wc0Zb4TrTjT14ppryqIYfRhMvIyuBvvFbJV8zFmRYK8nPeSU1lFuC6XlT+eHI4tc/XMMD+BD3Y5efb9esONSOtXxpB9K8dvR/+hJXzDXqQZSbPpKiLfyvBH26jxG6ixjuxtLoxYk+RlEQALOe6oraZHclBATz5Q22RRHL1h/yEGk5P7M4FhKpLW1qTehjCFPQfhKZA== 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=XI37HeyH5tw7Kd5GqTzN98po6dxBPCNeIBtxtLYfvGk=; b=j5INHr/jNHH3gExAb/B0pfg9ReSeIL7/g5YBcauYvkAF3hIvdIMlSElHQH5fuAq1JrpixBHnx/oeuiOBtAYBFqqmZoVq3ZPTHSmHAEyMNNgnkT6c7yo5kTYwDGwdaRQyzziti/S81YVdvOlIAlW/705ptGm7reD6csUt5cGpSLILjM4KGouZWQ0Q+tN+imIE/zP1UuE5CHLYisAp9H1Xe7sfQuGaSJpbyLFdyp1e6z6C83y5gj9HgZP+O3RITGGWMqhYmMOnt9ntPvzfl1xDpYeO7jUsvhnxHkTu2tjIrwEkj9xoPsayBtyce/AAaulN3Cg7s7cSe0H0cGk20jlyuA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=google.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XI37HeyH5tw7Kd5GqTzN98po6dxBPCNeIBtxtLYfvGk=; b=k1J0sxl6vhRhb7H1mB0ccyt3KIH6uGnpqWr2yRsTrhyayxJ3WmtiTBDhe+vlvdNIRCPumk+hJRwHdigInD24aFmJGnv1DXeVK7vp+cer9+zMwvS263qohQT8xgRJ7aAgJeSbb0Uih4x/B+jmM+bjdxyYqtszaFCo+jO31q+eR6TO1SFed0CgfeMF60KHIyKqWOYDIPM6JBMzNIs0MFPO2SXHTefoZO7Bw/lH/Kw2S1MVk53rTu/mos2UKAI3RSGtu8aqi5rtMOSlmq6axiFKORxyvXXtoujxwU19wzWqw/F7KjDK717tnETkcEAUnvbne2iDdUaHRwSh1TqqXlM/0Q== Received: from DS7PR05CA0029.namprd05.prod.outlook.com (2603:10b6:5:3b9::34) by SA1PR12MB8859.namprd12.prod.outlook.com (2603:10b6:806:37c::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.20; Wed, 27 Aug 2025 14:41:50 +0000 Received: from CY4PEPF0000FCC5.namprd03.prod.outlook.com (2603:10b6:5:3b9:cafe::7a) by DS7PR05CA0029.outlook.office365.com (2603:10b6:5:3b9::34) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9073.13 via Frontend Transport; Wed, 27 Aug 2025 14:41:50 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by CY4PEPF0000FCC5.mail.protection.outlook.com (10.167.242.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9073.11 via Frontend Transport; Wed, 27 Aug 2025 14:41:50 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Wed, 27 Aug 2025 07:41:19 -0700 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Wed, 27 Aug 2025 07:41:18 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Wed, 27 Aug 2025 07:41:15 -0700 From: Dragos Tatulea To: , , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman CC: Dragos Tatulea , , , , , Subject: [PATCH net-next v6 5/7] net: devmem: pull out dma_dev out of net_devmem_bind_dmabuf Date: Wed, 27 Aug 2025 17:39:59 +0300 Message-ID: <20250827144017.1529208-7-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250827144017.1529208-2-dtatulea@nvidia.com> References: <20250827144017.1529208-2-dtatulea@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000FCC5:EE_|SA1PR12MB8859:EE_ X-MS-Office365-Filtering-Correlation-Id: b6cc0b9e-0d6b-4af6-e983-08dde577dba4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|82310400026|1800799024|36860700013|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?QRocqnCw/oViUeLvSBnpAc0FLxlAv+sgQrzPYft8HBqXXFxz0eZxlaXFgvdq?= =?us-ascii?Q?ZxqT/0Od8fJ9K8iNlqRaTrkRGBS1LMQ2PnZASu1E3RH4s2bAdkycDk1RRQY+?= =?us-ascii?Q?7KhF028Ebej1Tv+Lh/VWCA7hJPDjoylhq1b546xrGUzFggQffDH/0sKKwBZj?= =?us-ascii?Q?AZoIKt0mBnjIMr1zwNLrBiJLroSbiCKYddzgEfNm8j7rKzfWV3/Gw4mgppmV?= =?us-ascii?Q?0AMv32678tV/SaQN8iwY0txa6v3xNGdStOTrvDdvx/uJtrWqzQ8Aiq/f9e9U?= =?us-ascii?Q?+XrMN/Ne2E+z3vkDEE7UdvkoPF+E4E2MfHnihlnFbmW2Kkk9IM5PsdXsZg/b?= =?us-ascii?Q?DpabdGAx8KTI/zRVv5pIiioGrvpGXb5jn0P69el88dPxtDf4/A5bF8UAtbQt?= =?us-ascii?Q?QQQDAr94n62gjpPIbfZ4+sXpmGcFFBF5YZ7h5K2SQQcM4QOjVH1V2geuNffu?= =?us-ascii?Q?GXrahnSs2mIvhQiWOQSFlvbiUD51j4UOocdg8zGKez8WgXTe1WhTPCulm+JN?= =?us-ascii?Q?JqMN1rvI9cdUR5UwtXNnJ0R3xrJlErAdhpWRWav5yLd9JFbM6HfyebhEOMPE?= =?us-ascii?Q?FqmD6g3vW3wH88fmHTIAWlrJjq4uhR2HvqKtQMOeOQMPGwEkg+/88QwhFjKj?= =?us-ascii?Q?LgKYHs1EgwvwYJpitfTx2NT+zX3j/dSbDrbUUjj++unMuwyyF0bJP/TelQvO?= =?us-ascii?Q?8/82at6DoCIT+TZ4HMUWQ2lnsQuXWX2toksOlIJr8R1ztN2UjDDmdJKjve2W?= =?us-ascii?Q?zvINhny/Ka3WnKUVsglxS/OE9raL4wZpPYr+f0NY5xm2W88nFV3+zwIfHQ3v?= =?us-ascii?Q?KyAWRTDF8AKPYcCtQVvPIothffqFoJJJqArhJhwzsM4dUCxq+2Yk6WF50SJG?= =?us-ascii?Q?4H9IbkhChikYMlxkTmQreULfcCVNewkutpu02VVcfQRnJfjnpDUMK4GqGcfh?= =?us-ascii?Q?NyHYlJbKWIHwf+vHugdWvCf77PWuLZACms+DY87Gx/5G/vNU5wGUmHWtfJy+?= =?us-ascii?Q?WPTEEEE7LbF56quCIsyTBHwSsbY3FF4XQyQ0QAJHPbmEV6vDCXZ55Lrb0aEn?= =?us-ascii?Q?UM65iDK4y36FbLxMqHUpbvlaCAUJ9+if2dIyUXGx/Cf1CzmXq0gtNKJ+HxDb?= =?us-ascii?Q?FQNUlOZ8VCzwFDf/afkVOSI9gQt8PeK9zE8miWkAeZqqVOwgwQMkiKf9Yumi?= =?us-ascii?Q?6ZUR/W8xe4W+UlkAgHrX5RLJ4sUdSiBrkTNqWYgB9PiSI96MFkm21leo20no?= =?us-ascii?Q?aVVVVinIO3ghZ8F7D6kyTvZVMKzj43jzhljB1eCR5foZss57kH7aynnDIv8W?= =?us-ascii?Q?K8BwZ5kUmGewMvEzUXfZYWaTO/uW5H1DVPjwTncUmDPLHb4kWeklIsHaQgVk?= =?us-ascii?Q?2G36UtZQGlja3tGuzsQcmv1f4mSCHsEPcRO2K44TqYHUaX5+Tg1sClhfeBc4?= =?us-ascii?Q?onx7oY49cIYLnPOav+4Naw03Ktp+6XW0rEnUSc02r+kNP+EC3/dyQ4YZ+zvN?= =?us-ascii?Q?ZREzNPZSh75qu8WlAxSMtqX8oOdAN7uGhsGk?= X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(376014)(7416014)(82310400026)(1800799024)(36860700013)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Aug 2025 14:41:50.4316 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b6cc0b9e-0d6b-4af6-e983-08dde577dba4 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000FCC5.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB8859 Content-Type: text/plain; charset="utf-8" Fetch the DMA device before calling net_devmem_bind_dmabuf() and pass it on as a parameter. This is needed for an upcoming change which will read the DMA device per queue. This patch has no functional changes. Signed-off-by: Dragos Tatulea Reviewed-by: Mina Almasry --- net/core/devmem.c | 14 ++++++-------- net/core/devmem.h | 2 ++ net/core/netdev-genl.c | 12 ++++++++---- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/net/core/devmem.c b/net/core/devmem.c index c58b24128727..d9de31a6cc7f 100644 --- a/net/core/devmem.c +++ b/net/core/devmem.c @@ -176,30 +176,28 @@ int net_devmem_bind_dmabuf_to_queue(struct net_device= *dev, u32 rxq_idx, =20 struct net_devmem_dmabuf_binding * net_devmem_bind_dmabuf(struct net_device *dev, + struct device *dma_dev, enum dma_data_direction direction, unsigned int dmabuf_fd, struct netdev_nl_sock *priv, struct netlink_ext_ack *extack) { struct net_devmem_dmabuf_binding *binding; static u32 id_alloc_next; - struct device *dma_dev; struct scatterlist *sg; struct dma_buf *dmabuf; unsigned int sg_idx, i; unsigned long virtual; int err; =20 - dmabuf =3D dma_buf_get(dmabuf_fd); - if (IS_ERR(dmabuf)) - return ERR_CAST(dmabuf); - - dma_dev =3D netdev_queue_get_dma_dev(dev, 0); if (!dma_dev) { - err =3D -EOPNOTSUPP; NL_SET_ERR_MSG(extack, "Device doesn't support DMA"); - goto err_put_dmabuf; + return ERR_PTR(-EOPNOTSUPP); } =20 + dmabuf =3D dma_buf_get(dmabuf_fd); + if (IS_ERR(dmabuf)) + return ERR_CAST(dmabuf); + binding =3D kzalloc_node(sizeof(*binding), GFP_KERNEL, dev_to_node(&dev->dev)); if (!binding) { diff --git a/net/core/devmem.h b/net/core/devmem.h index 41cd6e1c9141..101150d761af 100644 --- a/net/core/devmem.h +++ b/net/core/devmem.h @@ -85,6 +85,7 @@ struct dmabuf_genpool_chunk_owner { void __net_devmem_dmabuf_binding_free(struct work_struct *wq); struct net_devmem_dmabuf_binding * net_devmem_bind_dmabuf(struct net_device *dev, + struct device *dma_dev, enum dma_data_direction direction, unsigned int dmabuf_fd, struct netdev_nl_sock *priv, struct netlink_ext_ack *extack); @@ -170,6 +171,7 @@ static inline void net_devmem_put_net_iov(struct net_io= v *niov) =20 static inline struct net_devmem_dmabuf_binding * net_devmem_bind_dmabuf(struct net_device *dev, + struct device *dma_dev, enum dma_data_direction direction, unsigned int dmabuf_fd, struct netdev_nl_sock *priv, diff --git a/net/core/netdev-genl.c b/net/core/netdev-genl.c index 6314eb7bdf69..3e2d6aa6e060 100644 --- a/net/core/netdev-genl.c +++ b/net/core/netdev-genl.c @@ -876,6 +876,7 @@ int netdev_nl_bind_rx_doit(struct sk_buff *skb, struct = genl_info *info) u32 ifindex, dmabuf_fd, rxq_idx; struct netdev_nl_sock *priv; struct net_device *netdev; + struct device *dma_dev; struct sk_buff *rsp; struct nlattr *attr; int rem, err =3D 0; @@ -921,8 +922,9 @@ int netdev_nl_bind_rx_doit(struct sk_buff *skb, struct = genl_info *info) goto err_unlock; } =20 - binding =3D net_devmem_bind_dmabuf(netdev, DMA_FROM_DEVICE, dmabuf_fd, - priv, info->extack); + dma_dev =3D netdev_queue_get_dma_dev(netdev, 0); + binding =3D net_devmem_bind_dmabuf(netdev, dma_dev, DMA_FROM_DEVICE, + dmabuf_fd, priv, info->extack); if (IS_ERR(binding)) { err =3D PTR_ERR(binding); goto err_unlock; @@ -986,6 +988,7 @@ int netdev_nl_bind_tx_doit(struct sk_buff *skb, struct = genl_info *info) struct net_devmem_dmabuf_binding *binding; struct netdev_nl_sock *priv; struct net_device *netdev; + struct device *dma_dev; u32 ifindex, dmabuf_fd; struct sk_buff *rsp; int err =3D 0; @@ -1032,8 +1035,9 @@ int netdev_nl_bind_tx_doit(struct sk_buff *skb, struc= t genl_info *info) goto err_unlock_netdev; } =20 - binding =3D net_devmem_bind_dmabuf(netdev, DMA_TO_DEVICE, dmabuf_fd, priv, - info->extack); + dma_dev =3D netdev_queue_get_dma_dev(netdev, 0); + binding =3D net_devmem_bind_dmabuf(netdev, dma_dev, DMA_TO_DEVICE, + dmabuf_fd, priv, info->extack); if (IS_ERR(binding)) { err =3D PTR_ERR(binding); goto err_unlock_netdev; --=20 2.50.1 From nobody Fri Oct 3 16:44:18 2025 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2051.outbound.protection.outlook.com [40.107.236.51]) (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 8254819922D; Wed, 27 Aug 2025 14:42:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.236.51 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756305724; cv=fail; b=AnfxE/VIP0fhjkmf6aaolAw+Yyj1TVLnXrEpUnHwivKZtFTxGKlxdw+5964tv77I/Sa6zXyUpUVe/pTh3sE3tIDYNIgPnHRzrdnp716W7vGo6jNuxWEFw8gVBhfdE7hiWaZlZZ3a4x0AWhAEqbCieYS6sz3UIctG/Q62T1nvo3g= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756305724; c=relaxed/simple; bh=DWufN2C0mdlk8uGcdsfTDK0CbHwX3h2PAkN6FW8QgCY=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ogoMXafOSGHBaogwSssuHFK1xvDrsiNDCYi0hvPylhn2VBNckU5EiigSDlYzrvzpv6F21Ha4lZoC0g1kH1vDvJb9ABmskYX0TsA6RyKmOTgI4v5jvvC0sZhJg1xnFrA+CqOYUBj5aB/HnaI3MCxusZ5CbW/C1n0heDEgi4mqHVk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=oKz7EXmj; arc=fail smtp.client-ip=40.107.236.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="oKz7EXmj" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=J1xFoNWG3vxzB5b+neZtZOCuVXWzXJL0Td4iaaECN26GLlSe6hYUJp+QFLgMtISo1q6EY+mPRNZQr3E8HWfnKBIfsFwLEVUFBh4m8xKSnyljgOHgN4WKn4l6Nd2XoJnLtHXGn82gVthu0AiZ6mxBBFfy5PRMMxY0vbXbbVtmCefU2C5she+WEC0NwgIZKQnEiQN/5UNLekEf089TKDzhzf2+vZ3GfBFbltswkpB1AaSBNvX5FcHoBKIcdqscJARXEiV4CKfU/YH27xS8EWl1RhUVnXM+eZCVDkk7u0UAaY9bCru2ii+rfQHsq3inukZuOAHiDnWZVYwfKkYxUa7JMg== 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=UqCZEAreC9yAhvpT1ggdisLkrzLHuy+dpRPhV04p8C0=; b=l/fedNzsk4W6PTxQwrBbCffPAk+MwELdYxku4S8dsitbmq4cwS5XLf3ynEbw17aCjZXT5z5vrjnxT2nT/6tBZpSNGXNE33CT8HIlrSQ6iwOs/xIRMs67urA7665oIwMkmpzo6NMazBn6h1+HPMYAJ0zMrCfrHk0L6lRyW3PW2hcDG0RJEsk6Np+brUXBfwjyq3EkkCg4d4I4DwhJgfb8QO5C+weG4Hn3esYRQZJuX5X6UsJCAmNfrsSsq3atJ23Viaa18pBWjc1Egg6Dju5WnN9KJpkX992IVm5ip+V6dpWmiPc1umaitaO3tY2Ifk77Fw2PIhxa7OyQjjzZ4AzhIQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=google.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UqCZEAreC9yAhvpT1ggdisLkrzLHuy+dpRPhV04p8C0=; b=oKz7EXmjhpBJv7o/R4RqBvyFG9OeMEHiPCaDNYv2vSW5sjM1VvDE0yTInork2XOsAFRp1a1O7XzVHoiqyPV/TqZHIBSG3nQE1gJ+ZDtuagxhtpr7a+9p+qTsrZPCdHHT7oIoJUacaXHF1IiQa9EQo0aixwlFctJTgT3Dr34GEcG3KBtydRfrgTs3bDbb74iKLnLeKI/LeIRvkdh3Cesllt62g257JXCf6fvNc1KX5jsi7q5Oj1ZBPwfSc3UoObXo4tVM0Gh4uz/iWxrf/m4edRAUYYULq6VBbC6hmEffcwP0PXT+hrSnPxQUh9Xggn1msEMRamrQjgECgTVwPg2rVw== Received: from BYAPR21CA0021.namprd21.prod.outlook.com (2603:10b6:a03:114::31) by CH1PPFC908D89D1.namprd12.prod.outlook.com (2603:10b6:61f:fc00::623) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.20; Wed, 27 Aug 2025 14:41:59 +0000 Received: from CY4PEPF0000FCBF.namprd03.prod.outlook.com (2603:10b6:a03:114:cafe::2b) by BYAPR21CA0021.outlook.office365.com (2603:10b6:a03:114::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9094.4 via Frontend Transport; Wed, 27 Aug 2025 14:41:58 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by CY4PEPF0000FCBF.mail.protection.outlook.com (10.167.242.101) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9073.11 via Frontend Transport; Wed, 27 Aug 2025 14:41:57 +0000 Received: from rnnvmail202.nvidia.com (10.129.68.7) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Wed, 27 Aug 2025 07:41:23 -0700 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail202.nvidia.com (10.129.68.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Wed, 27 Aug 2025 07:41:23 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Wed, 27 Aug 2025 07:41:20 -0700 From: Dragos Tatulea To: , , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman CC: Dragos Tatulea , , , , , Subject: [PATCH net-next v6 6/7] net: devmem: pre-read requested rx queues during bind Date: Wed, 27 Aug 2025 17:40:00 +0300 Message-ID: <20250827144017.1529208-8-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250827144017.1529208-2-dtatulea@nvidia.com> References: <20250827144017.1529208-2-dtatulea@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000FCBF:EE_|CH1PPFC908D89D1:EE_ X-MS-Office365-Filtering-Correlation-Id: db97e483-09b0-4d84-8b98-08dde577e076 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|82310400026|7416014|36860700013|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?/qoPzLqcjeD+4W0uYwG46P/l9MeU/o1RtwchNCIA4ce5Lsf5s/QjlDvshgHq?= =?us-ascii?Q?vHgmgkOg1TT5L7yt4rw7xLBSavX85Y83RQ+TmSH7AbNJUi9RkjEDSD7gIy9C?= =?us-ascii?Q?UZTkWwIpIu8W4uOJyZFzoMgkXXESJYQNpjlTKHRKb5kqVrCUpfPlX1IQOORD?= =?us-ascii?Q?ikSqMEgQAkNklfbBfe1ene3vXEUu9JH9YMQra+ycNU0GMNdZYSlMVSpuwh/I?= =?us-ascii?Q?sVbJh79CfEUjGAmuIdVJZ7uECqFDjmwYS9aaGyJDDqFpqvM8aYUxAps62ZTz?= =?us-ascii?Q?4a3zGAD/aBnPCOk2eEU+KrmFsAmjS60+z71Zrk90PvVgoD8JIXMGQZsxYCIC?= =?us-ascii?Q?UYOBfCHj54lAFSXx49ivcwIygvngPOSAGFvc3LyYytE8TddyNh0Djvl6jpz3?= =?us-ascii?Q?1ozTsYGmETaWRymgkmBFNrP6mzOBuWpT4+AinZTjbkpcvedDU+Sr2dXLC+9Q?= =?us-ascii?Q?w609X8Qzw5j+DUxz8IZj4uugwimsWQSpTGd3cb/9QRKTnA/Ip7Wi0t9h8vHJ?= =?us-ascii?Q?V++eozz+NTNjItEH7csC9yIr9OVQ9FJGDenrnCsh3oQtHIw6RLuw1PrDykSW?= =?us-ascii?Q?AzXKhb0AETzCJRxRdtTFprNB95IJ2ImlrlzdZnlnUfujg2cH3vv73+mCTwRF?= =?us-ascii?Q?qzMfDBLgoM75paqJv9W9atIaRCbVSg6SCubgmrqJNWqqXOap0PXWRIX9a0+g?= =?us-ascii?Q?1RKb6cBu8ScaYQkrZv3WwJfM7o8yu8j80LI8hsMgimjtWuyFTW9oHOAlCpxs?= =?us-ascii?Q?Zj1sIgqh7ELoQJo8utyXHp/9pV3ssTcChvXznOZTJ1S9Bszj95uR6LJSQ2YB?= =?us-ascii?Q?nWhIKvJlhBNtmVj5ZwTQIU4AexlBJZfvd0A9hur26nbxpS5xw7YUZKoVpgIm?= =?us-ascii?Q?cPGZttzeaeHhNSOz9UEUrrNenUL34iwVJC3G6Wzvz204xh2wAyJY07/kDcJR?= =?us-ascii?Q?PdEPGHdhI3SvThfaTYUyrbHjysXSPL5YoslF6f3HU7psRgoVVk5TPOhmde2O?= =?us-ascii?Q?KVMIqPU9JV4Tp8Ofva+iLXYehH6AvKG5045vbyemxZyE1MSfxsZ9J+msOXWj?= =?us-ascii?Q?mFZBiVXkY90jrA6xubopmBuWmO/kPAcepsPr/UYPtvnBbti3RAEvCgFljNTZ?= =?us-ascii?Q?c4ZTvJXLiRgJeIVXcNfp4G9lHeoHhqbkY7H+TxfhrQKhMEMhWDB5bgDDgZUZ?= =?us-ascii?Q?uGLUrIy+HyAXM0+Ri72vVptQ3wOTJskw2uFgGbmQXQbM3Pu4BmVxuY9uRvq2?= =?us-ascii?Q?j3JDPzwZI2hheZdGnD34jDzMjUHe+a42GHUFEvD/0PhOk8wEkFsZgPMyxTT6?= =?us-ascii?Q?HfUGOAhoJVofVMgJHBc7gcgPc9j7LGbPuyZWMxAgGeO8IaoLuidGi6j/PmG0?= =?us-ascii?Q?YUp3rcQ+NrWcgD1OD9EGRoToHzo2Nypay3OEhLb29NqjIv1fIw+R+4rkAfnh?= =?us-ascii?Q?M4ArW+sgTJcdD9UQsVnjLNcpKruljeUeXw0/UTOxEEsk7WhpojLf+Iwh4QNI?= =?us-ascii?Q?tF1MpZEzG4AW4DBb3qZuwb5/V12FGTdJvQUU?= X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(1800799024)(376014)(82310400026)(7416014)(36860700013)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Aug 2025 14:41:57.3392 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: db97e483-09b0-4d84-8b98-08dde577e076 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000FCBF.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH1PPFC908D89D1 Content-Type: text/plain; charset="utf-8" Instead of reading the requested rx queues after binding the buffer, read the rx queues in advance in a bitmap and iterate over them when needed. This is a preparation for fetching the DMA device for each queue. This patch has no functional changes besides adding an extra rq index bounds check. Signed-off-by: Dragos Tatulea Reviewed-by: Mina Almasry --- net/core/netdev-genl.c | 85 ++++++++++++++++++++++++++++-------------- 1 file changed, 58 insertions(+), 27 deletions(-) diff --git a/net/core/netdev-genl.c b/net/core/netdev-genl.c index 3e2d6aa6e060..739598d34657 100644 --- a/net/core/netdev-genl.c +++ b/net/core/netdev-genl.c @@ -869,17 +869,55 @@ int netdev_nl_qstats_get_dumpit(struct sk_buff *skb, return err; } =20 -int netdev_nl_bind_rx_doit(struct sk_buff *skb, struct genl_info *info) +static int netdev_nl_read_rxq_bitmap(struct genl_info *info, + u32 rxq_bitmap_len, + unsigned long *rxq_bitmap) { + const int maxtype =3D ARRAY_SIZE(netdev_queue_id_nl_policy) - 1; struct nlattr *tb[ARRAY_SIZE(netdev_queue_id_nl_policy)]; + struct nlattr *attr; + int rem, err =3D 0; + u32 rxq_idx; + + nla_for_each_attr_type(attr, NETDEV_A_DMABUF_QUEUES, + genlmsg_data(info->genlhdr), + genlmsg_len(info->genlhdr), rem) { + err =3D nla_parse_nested(tb, maxtype, attr, + netdev_queue_id_nl_policy, info->extack); + if (err < 0) + return err; + + if (NL_REQ_ATTR_CHECK(info->extack, attr, tb, NETDEV_A_QUEUE_ID) || + NL_REQ_ATTR_CHECK(info->extack, attr, tb, NETDEV_A_QUEUE_TYPE)) + return -EINVAL; + + if (nla_get_u32(tb[NETDEV_A_QUEUE_TYPE]) !=3D NETDEV_QUEUE_TYPE_RX) { + NL_SET_BAD_ATTR(info->extack, tb[NETDEV_A_QUEUE_TYPE]); + return -EINVAL; + } + + rxq_idx =3D nla_get_u32(tb[NETDEV_A_QUEUE_ID]); + if (rxq_idx >=3D rxq_bitmap_len) { + NL_SET_BAD_ATTR(info->extack, tb[NETDEV_A_QUEUE_ID]); + return -EINVAL; + } + + bitmap_set(rxq_bitmap, rxq_idx, 1); + } + + return 0; +} + +int netdev_nl_bind_rx_doit(struct sk_buff *skb, struct genl_info *info) +{ struct net_devmem_dmabuf_binding *binding; u32 ifindex, dmabuf_fd, rxq_idx; struct netdev_nl_sock *priv; struct net_device *netdev; + unsigned long *rxq_bitmap; struct device *dma_dev; struct sk_buff *rsp; - struct nlattr *attr; - int rem, err =3D 0; + int err =3D 0; void *hdr; =20 if (GENL_REQ_ATTR_CHECK(info, NETDEV_A_DEV_IFINDEX) || @@ -922,37 +960,26 @@ int netdev_nl_bind_rx_doit(struct sk_buff *skb, struc= t genl_info *info) goto err_unlock; } =20 + rxq_bitmap =3D bitmap_zalloc(netdev->real_num_rx_queues, GFP_KERNEL); + if (!rxq_bitmap) { + err =3D -ENOMEM; + goto err_unlock; + } + + err =3D netdev_nl_read_rxq_bitmap(info, netdev->real_num_rx_queues, + rxq_bitmap); + if (err) + goto err_rxq_bitmap; + dma_dev =3D netdev_queue_get_dma_dev(netdev, 0); binding =3D net_devmem_bind_dmabuf(netdev, dma_dev, DMA_FROM_DEVICE, dmabuf_fd, priv, info->extack); if (IS_ERR(binding)) { err =3D PTR_ERR(binding); - goto err_unlock; + goto err_rxq_bitmap; } =20 - nla_for_each_attr_type(attr, NETDEV_A_DMABUF_QUEUES, - genlmsg_data(info->genlhdr), - genlmsg_len(info->genlhdr), rem) { - err =3D nla_parse_nested( - tb, ARRAY_SIZE(netdev_queue_id_nl_policy) - 1, attr, - netdev_queue_id_nl_policy, info->extack); - if (err < 0) - goto err_unbind; - - if (NL_REQ_ATTR_CHECK(info->extack, attr, tb, NETDEV_A_QUEUE_ID) || - NL_REQ_ATTR_CHECK(info->extack, attr, tb, NETDEV_A_QUEUE_TYPE)) { - err =3D -EINVAL; - goto err_unbind; - } - - if (nla_get_u32(tb[NETDEV_A_QUEUE_TYPE]) !=3D NETDEV_QUEUE_TYPE_RX) { - NL_SET_BAD_ATTR(info->extack, tb[NETDEV_A_QUEUE_TYPE]); - err =3D -EINVAL; - goto err_unbind; - } - - rxq_idx =3D nla_get_u32(tb[NETDEV_A_QUEUE_ID]); - + for_each_set_bit(rxq_idx, rxq_bitmap, netdev->real_num_rx_queues) { err =3D net_devmem_bind_dmabuf_to_queue(netdev, rxq_idx, binding, info->extack); if (err) @@ -966,6 +993,8 @@ int netdev_nl_bind_rx_doit(struct sk_buff *skb, struct = genl_info *info) if (err) goto err_unbind; =20 + bitmap_free(rxq_bitmap); + netdev_unlock(netdev); =20 mutex_unlock(&priv->lock); @@ -974,6 +1003,8 @@ int netdev_nl_bind_rx_doit(struct sk_buff *skb, struct= genl_info *info) =20 err_unbind: net_devmem_unbind_dmabuf(binding); +err_rxq_bitmap: + bitmap_free(rxq_bitmap); err_unlock: netdev_unlock(netdev); err_unlock_sock: --=20 2.50.1 From nobody Fri Oct 3 16:44:18 2025 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2072.outbound.protection.outlook.com [40.107.223.72]) (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 E1F4D202F87; Wed, 27 Aug 2025 14:42:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.72 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756305738; cv=fail; b=GYM3d6RepgYLYdfQ2805eLr+l2TffGeqKPpRVTaO4kh2jCMUoWgsSTb7upVHnZr6G0NI3dgSSKcr0WQH6F/Df8RCVtW5/dAOIkNY4EfvwstFJaDoFS9WtE04XV8aUAyUExQsbBzKMDVe/5uHUOJ3NJO89xY0sxs6LvWWAZGpS3E= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756305738; c=relaxed/simple; bh=uBw/auJD5NL/IIpZqRsAk5nqzgSC5O/nSHuSa8l4pgo=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=IZFwI8Gm0Gqj2UTP6s5j2vwr3cLNfi85s2RNzVlZGWNCkomtxrM9GPCi6leIUh73I21QmlXmEGy02T7oad4EBLhsgEfIVlXN/wMA5zMVitjJ8v3Dm/m5bWA6rwUVA0BZhdMLhB42US/qgxlD4ThuRX3Lpj9JckXGi2GSqUQsjcE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=XGZTBUKF; arc=fail smtp.client-ip=40.107.223.72 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="XGZTBUKF" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kYiJ2hhOJAmorbCorjXgCXTtLOOTwCsioJB+OpMZXh/6vGybkWkanLdIDtO2lmj6s0qqy8c43GiRTPp/6yK50lhcK4sc9C1C+4ML0EFQ95xf1JCgA1Pgq9lEISXwCY80u9tt284B2xwjdScLYoIjBqbaEUPAaVLnkin0TT8aNvt07wsOJDwhAjOdwvEidc/uaLaiyznAApoj3E90gykmVRamNRi+iq9r7y4PyxKUw57uqslXKfjdtCSJROVTDT5yxqeQtBNkeMYkkatE73mB2+ZhOZe6M+IReZH6HUjTmg4CUIUTpOgYk8pX/RluHucdsbXf76vTQsP8DlGlPAjqgg== 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=9/z2uBrBNlzBOlGLrQWrxU7z9Bz4yPnsKgaDEgpHPZE=; b=oB5tIkkcE6kKd2gNtQyR0K/9V0im5vUaOfMvmZ1eDMlJ4RloxfzO69TvYbu7/Jt+5kJAe7X7ShUgyisxU4NRrXMdnFbRJZoejg7+OqZQX/neTRu6ayte+MAeHggiHVX6yKr0SLZMdHJyBiqKHS0gEmVcEjveeKPOpyfIl6GocsvxJmMC/UlL/+SBIJU8mqi8LxeHbyC3fRjg7zs8nS5BEOnYxPfeZRmrvJyqO39Gh5ELo7zv3oY5tlVaJLfHpmTMIoDN1JCe80zS5dUgMxw4BfWOgIaBpPhTkVvbzIs8gBzYhvAFhyh4zbUHzVdSb93g/q5yikRO1hRU+KdRKcb3gA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=google.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9/z2uBrBNlzBOlGLrQWrxU7z9Bz4yPnsKgaDEgpHPZE=; b=XGZTBUKF8Q+TAzoCNA7+NvdpSZY1+BQ7VGGxjBL1RX9b4s2DKeA5NT9yf5B1VjGdyiiQ2lRiae41zWkkl/CoY5NXW4B9h0KaGeJErwH8lUThTWPMSWd+nQilUYjRc0+Op9nSYTRW/hSE6tcQD2JvlAqtSgEz0pykg6KU3wEmW+z96Xq628HFnUlT8GeskW5moLtmERw10Rn7ZhVBSKda0Kq3jDqUb2l9PGIBndW1SWKSXEKdT400JJrM/Bk7nNWIxlBX7lj60fRxd87aw60XecbuHdoXTZgCxVHD11CEfziz5i0bpYBXs93u/BkAx/Q6iACh42mUOcyNHa7T/c73xA== Received: from BLAP220CA0006.NAMP220.PROD.OUTLOOK.COM (2603:10b6:208:32c::11) by IA1PR12MB7710.namprd12.prod.outlook.com (2603:10b6:208:422::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8989.16; Wed, 27 Aug 2025 14:42:11 +0000 Received: from BN2PEPF000055DF.namprd21.prod.outlook.com (2603:10b6:208:32c:cafe::aa) by BLAP220CA0006.outlook.office365.com (2603:10b6:208:32c::11) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9052.20 via Frontend Transport; Wed, 27 Aug 2025 14:42:11 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by BN2PEPF000055DF.mail.protection.outlook.com (10.167.245.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.0 via Frontend Transport; Wed, 27 Aug 2025 14:42:11 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Wed, 27 Aug 2025 07:41:28 -0700 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Wed, 27 Aug 2025 07:41:27 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Wed, 27 Aug 2025 07:41:24 -0700 From: Dragos Tatulea To: , , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman CC: Dragos Tatulea , , , , , Subject: [PATCH net-next v6 7/7] net: devmem: allow binding on rx queues with same DMA devices Date: Wed, 27 Aug 2025 17:40:01 +0300 Message-ID: <20250827144017.1529208-9-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250827144017.1529208-2-dtatulea@nvidia.com> References: <20250827144017.1529208-2-dtatulea@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF000055DF:EE_|IA1PR12MB7710:EE_ X-MS-Office365-Filtering-Correlation-Id: 766b5178-d2dd-4345-bdf7-08dde577e836 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|36860700013|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?rNy6LAzCk6K8LbdnNU+Dta/et4Up2PZJQh6jlWfDBx43mbOBQ6RfI+vwTw4y?= =?us-ascii?Q?iXXZCeRR8bFA5Wa6Ax/OvaSZ2FhSG3WXL3Nrvjy2+iZ/w4+BgbZ3k1aCO6Ob?= =?us-ascii?Q?106Gi7KJ+OvZ85gTGa7mH12ItK86ZLk5DngphcVpAYZv416Nlr9xxL4mPg1g?= =?us-ascii?Q?Q4boK80PKe/QDyfwFlZEBYDqt05L3+IesZz9nJCHcSh1m6S75YU15h3NG4ui?= =?us-ascii?Q?69iguEVNy4o+aO9CSoGOiY6QS03M961iwcAUx4P5NAs6RWsG0V7a9R2hB2xI?= =?us-ascii?Q?dYfxWY+8Ce02puYPp2oSUUgUugY4c4t6luYpqUHc3+5+BWqr/fCsDOqUOMmz?= =?us-ascii?Q?DxKWfuakFHnSrGu2dGpIwylqtg8zKtcSju5sbcRtb//fPyjr5I3yACuuGI1x?= =?us-ascii?Q?6EDtplSBMJLLJl3MQ/c6OuuIULdf4p+ZdCzxpXZ9AMuauGNe3rnfzOJaL6j5?= =?us-ascii?Q?CdU1m24jpGAp8jsB0lNrskWU5Ec9PlguuHSIu/4EH28SIia1BWHs5fXarRn1?= =?us-ascii?Q?2Ex+ktyTXCuBDlKzQbi2O9gn1UqXrtGXBLH9zTGqPPCSQ+JlhUbBUnsNDMKe?= =?us-ascii?Q?vChQ34K60sf2/BkxskREQzcNNdgxvZ3MCdjk9kG+BWiN9WC1TOroFqjMdXEX?= =?us-ascii?Q?IJGKuIDQlYdVPlje5oS8L+vjq9Su6wODFzUOyLbSbxgDmFjSUY7RL3eYWzuI?= =?us-ascii?Q?+FoIp8cQ+9oDCQEmx/lh7HGNWugdfEKM7pMLA07NVemCWCpkWyrSkyptmCWN?= =?us-ascii?Q?tMvR+0M8yhN+/xQfmxytKhuBl8XsO/qiWmqLPNOSN62wBsYMRWc5SNjy4frg?= =?us-ascii?Q?oxS1HdLtijL1bIUFJCa+e+ChE6TZbDvrXtPMv+Hvuu0cM765yjGYjvaYTnq1?= =?us-ascii?Q?sZ7yQjT33ui5mKLUrCLBaVEwg1i086oIPgan1ij2hJ8Td/7OXITWBR+y3Zrc?= =?us-ascii?Q?UeSIrENCO1vTCiLASKtbFMkM3FCBhBxzE5L/8jGSfjL+N96PpDNw7mVuP4S2?= =?us-ascii?Q?kExZtskfFK5wh1TM3lvizlwaQIeNo11cCPWyIv6mup5Dl/djEaD2EyuDmjxU?= =?us-ascii?Q?uQQEzinWbN5vrJgKD1v36MYORZdencXDf9gOHKhBphFQEiQXmGVzrrjEnTZk?= =?us-ascii?Q?TkNzvyrFjI3yUyhZBUfGOfVm1MgrqZWnKhut/DPOs6b4gXi88kINSUXFbfAH?= =?us-ascii?Q?HYipNl/2Zv1vwTDtE6SL9eDE0V9EiJAZ+yGj72Z7QbHxRZGPwudfrN//xl/x?= =?us-ascii?Q?8N3oJi5epDgCF9JfIs15WMyavmTAJ+CUZzEZB1FLEiNWaHzD7Im8837EMU6l?= =?us-ascii?Q?bSgLPhKeellaCDVKetWaVnCu3hPb9AxtS/Fmsh6/aLgMgdnoTt9skaAsN1gS?= =?us-ascii?Q?9/jmORvrANCPpvhJ/BPwg2P+BBJwdLnja7U+spmffw/Iv8bfTOYzFAQC1/Lc?= =?us-ascii?Q?Xu4vefhdZG5dPTIW1H3HSXrBBfamxCLFy0midSWvrRrzf2tAzGbVMg3CMkRB?= =?us-ascii?Q?KsHL/ObOdsvk42Do8fniM9bR+OqPVgr9qZ/c?= X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230040)(376014)(7416014)(36860700013)(1800799024)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Aug 2025 14:42:11.0812 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 766b5178-d2dd-4345-bdf7-08dde577e836 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF000055DF.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB7710 Content-Type: text/plain; charset="utf-8" Multi-PF netdevs have queues belonging to different PFs which also means different DMA devices. This means that the binding on the DMA buffer can be done to the incorrect device. This change allows devmem binding to multiple queues only when the queues have the same DMA device. Otherwise an error is returned. Signed-off-by: Dragos Tatulea --- net/core/netdev-genl.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/net/core/netdev-genl.c b/net/core/netdev-genl.c index 739598d34657..470fabbeacd9 100644 --- a/net/core/netdev-genl.c +++ b/net/core/netdev-genl.c @@ -908,6 +908,30 @@ static int netdev_nl_read_rxq_bitmap(struct genl_info = *info, return 0; } =20 +static struct device * +netdev_nl_get_dma_dev(struct net_device *netdev, unsigned long *rxq_bitmap, + struct netlink_ext_ack *extack) +{ + struct device *dma_dev =3D NULL; + u32 rxq_idx, prev_rxq_idx; + + for_each_set_bit(rxq_idx, rxq_bitmap, netdev->real_num_rx_queues) { + struct device *rxq_dma_dev; + + rxq_dma_dev =3D netdev_queue_get_dma_dev(netdev, rxq_idx); + if (dma_dev && rxq_dma_dev !=3D dma_dev) { + NL_SET_ERR_MSG_FMT(extack, "DMA device mismatch between queue %u and %u= (multi-PF device?)", + rxq_idx, prev_rxq_idx); + return ERR_PTR(-EOPNOTSUPP); + } + + dma_dev =3D rxq_dma_dev; + prev_rxq_idx =3D rxq_idx; + } + + return dma_dev; +} + int netdev_nl_bind_rx_doit(struct sk_buff *skb, struct genl_info *info) { struct net_devmem_dmabuf_binding *binding; @@ -971,7 +995,12 @@ int netdev_nl_bind_rx_doit(struct sk_buff *skb, struct= genl_info *info) if (err) goto err_rxq_bitmap; =20 - dma_dev =3D netdev_queue_get_dma_dev(netdev, 0); + dma_dev =3D netdev_nl_get_dma_dev(netdev, rxq_bitmap, info->extack); + if (IS_ERR(dma_dev)) { + err =3D PTR_ERR(dma_dev); + goto err_rxq_bitmap; + } + binding =3D net_devmem_bind_dmabuf(netdev, dma_dev, DMA_FROM_DEVICE, dmabuf_fd, priv, info->extack); if (IS_ERR(binding)) { --=20 2.50.1