From nobody Fri Oct 3 21:02:24 2025 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2071.outbound.protection.outlook.com [40.107.244.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 4C1B527FD46; Mon, 25 Aug 2025 06:37:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.244.71 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756103866; cv=fail; b=FYzYHfD6mJFWMVjmswhvAqBDdtaXbo/6zmJ/wIyIfXCxkut1rUV5L2SeOQaxh0Motvcq2XvnpW1yrtqbzBrBrxuF0TZGNcyHYN9OIQ7tQk08u3lNM7eVVLHZoRWNC8EOPZPPtlq8SWKPRiV1y7pwnuh/t/lDF6Ye4vmuqCgUrdw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756103866; c=relaxed/simple; bh=AdKKn2odcy3ApXM3sMkzF+kfk6q+NaN0W4Azrk00X3o=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=r6ZGqj9gM3Kp7UldfmEhQSmRHUUk0VlVOT4QC35+dapAcpXRiRsu4XZreWPbkZ4JTAwvbWjC4E9gkZ3zGwPZaJgyGZCIiwzYvglgkTtbb/z/+a7/BMv3p2HHzS13uWUATGIzNgypqJ7OmQCrvmUesAPequ2CuApQYCwCA6ELCqY= 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=Xpg8D3YD; arc=fail smtp.client-ip=40.107.244.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="Xpg8D3YD" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QlMgHkUhHHNckJKGN47D6MGU+svNJpFMSBfr2/wHBjdAegeJh/dy4e7ytLubm4oE+mFLVOeHrhzwRPNyvqpxkGWSbF7lHheFks3zEQ/az68x4RD5VniT3Zhx6lU2+VLcq2D8O6lA2gR7S1E/4iBwcSvtdPF6qVYqcAN3h1tAXGGJbE9GBNcLaKuVbD98IK+8yxnDU3uf83UpFfXVPfAOC+9jMrbYqB+7UAfZNnsxja/xO20qYMy1QXVeslHIKj/oA+RS01CQrQOuMUnPBPxC+FlQoTvOXeB+TdlkFPDwEVPtHc//ZhkA7eNhMVwXSMThZgJtBB7IoY4UbHkrmUcE2w== 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=lTfF1HkA5gdcTBB1LtVUH0QTz7882L/KYAN/uthlEdavqoTTC2d/6AxSzpYR+I+5ce5MWB5cLVGvJC25Y8tvya1LjuUkwTyIxDi6Y9hCLpwIn72PbC6eCwtln9L7o2FaDYVibwo4J0JgYHhDFFnlA4+5aKOkGvZlhNGoJuTgfr3EQ+zUlnlDSATQaJMIsQkPCACFBTbVsYB/sKwF22AaxgdV0I0QJpviuTlFOFb1Q++YGgmUI4eLGHzLK2xlvDBCargKqVyU3yX2yRiXWz/aYt4bP1yBygKthdy2g+0pyC4GBFfd+Sin2u+sLz4cIYXw66GhNkslDEG5SAFjAzsvTA== 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=NZ0bzHPW8qFefmHpfEKawVmyKeS0zkeBMs5NXNzME+Y=; b=Xpg8D3YD5tdWOMsb/Nq5abBq1KO/OMuI9seHgdf0hSwy1q4OGY4pwrBXfiouapCQVyFHGGONshPxoK6CF5JxiHziwSpopur0+IoS8pRFAM/oN64Zn4aFp5cZLTrt4Knn+ZnqLN/KtdOx1nirj2KiW5FMvvAw2EQqw+EyO29cKmFKaFAJnsi1pQCe38adBg8r+IEK11JqSk1CDVcRFNhcLbm+DZK6pqYlqlvmYkrMKQ7l/4C2DcYRPQQ7hFirM68QanFZkNvxYJ6LJ+Pu1XrWyuIreA1QYp5r6A93LDwyOhSHivHPpgwfgtry3ZFfUAA+WXaUYckxJL9lbjaWv6c7+A== Received: from BY3PR05CA0059.namprd05.prod.outlook.com (2603:10b6:a03:39b::34) by DS0PR12MB6389.namprd12.prod.outlook.com (2603:10b6:8:cf::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.21; Mon, 25 Aug 2025 06:37:41 +0000 Received: from SJ5PEPF00000206.namprd05.prod.outlook.com (2603:10b6:a03:39b:cafe::df) by BY3PR05CA0059.outlook.office365.com (2603:10b6:a03:39b::34) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9073.13 via Frontend Transport; Mon, 25 Aug 2025 06:37:40 +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 SJ5PEPF00000206.mail.protection.outlook.com (10.167.244.39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9073.11 via Frontend Transport; Mon, 25 Aug 2025 06:37:40 +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; Sun, 24 Aug 2025 23:37:22 -0700 Received: from rnnvmail205.nvidia.com (10.129.68.10) 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; Sun, 24 Aug 2025 23:37:22 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.10) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Sun, 24 Aug 2025 23:37:18 -0700 From: Dragos Tatulea To: , , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman CC: Dragos Tatulea , , , , , Subject: [PATCH net-next v5 1/7] queue_api: add support for fetching per queue DMA dev Date: Mon, 25 Aug 2025 09:36:33 +0300 Message-ID: <20250825063655.583454-2-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250825063655.583454-1-dtatulea@nvidia.com> References: <20250825063655.583454-1-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: SJ5PEPF00000206:EE_|DS0PR12MB6389:EE_ X-MS-Office365-Filtering-Correlation-Id: d6b34f3a-cb0b-46a5-5130-08dde3a1e3bd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|36860700013|82310400026|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?qScKwfF/QPsBkUNkhc48qR6cjAV4pF0nCLSAqfoUu9bq2FphR5q8OkmbtyX9?= =?us-ascii?Q?0m5vJB60jsWtFGISoykT54Wh+wAQhHKq8CwMMfrQaVXQbWs70AJqUbxvPIZ2?= =?us-ascii?Q?Tru20kk1xCtQUkkcYbaMvk25maOjL+/h4jJbK+2ji1WHLoIXQlrreXHvNyyK?= =?us-ascii?Q?y630wD+AuwDqUokyIINcA4wAoUPbE8AJ/lsNoaVe0KUj7qHfKViQTtgukmHD?= =?us-ascii?Q?cIG4a2GKC54i8Dlq9dBv1PyaKlnsYtwzHX9m1S0PMBfFMYJEFmIMkJbRCTQS?= =?us-ascii?Q?kAUKPzmNAtrUKkfg5tXBIzCG7t0XjLWleojAt+J9YeMaLg2ZHVr0c7Xk/ceW?= =?us-ascii?Q?DL7EVI+P7z03+wSX76zOKJGDqfL+cC5QTzyi2qcU3yvPVP2Nam/aObF1oEAT?= =?us-ascii?Q?jo3RKQuAh0P/bm2KcpBkrCaPulZSkPiBfv9I2hKJUBSZUGe9nhcxHcRUZT6a?= =?us-ascii?Q?a0Cl1UtinlHfddPLnJns0Av4aMcmQOhrwvr/bWssa3JYey+7W8h4DqbPtCpW?= =?us-ascii?Q?hZ1bV6GB6Zeu1ZK44qoIQv6kOu7RvdOLiaZhqwuaDQmJK8vXxIg8BSYZ0mwG?= =?us-ascii?Q?JYohNt2Cfn655HEdDs2ZRoT2oOSIzKBUWhcSdtFO/WLksOrFiAXavIjfc0gQ?= =?us-ascii?Q?DQl88j+ZsryppAhZHq8RwwpNenMWXs7IQIlxA2AMzTRM2gR/aiErA6jRpYk9?= =?us-ascii?Q?zTnNJdXaxUZbugyyj86IlhADQefdOra5nAWTMzFlYo3lTg9iAr0wmjkuwcZO?= =?us-ascii?Q?SqDdyuaT5Oe93f1gQkZI41cpytKIIgjv/8zMAjPdXkEKgD8Xa553p+7ctQLd?= =?us-ascii?Q?+RChS+qNYBueWQZFgSnw3rLUUPLAi74BzejqCdprWW5OPoyDGg+LeRBwuiq3?= =?us-ascii?Q?aGk/rU55W258jJ3cDiIqcWiz1Gy7zohrkEXADyCsTZaQKZSdMDu+I6mlRhQn?= =?us-ascii?Q?KufUmLT9vraNz93zgJ5uvLeoL3eK7vlqmaj2oxu3dCpfxpqfpSL4QV/7iQXs?= =?us-ascii?Q?5e3oGfSuzdJYWn8nN0xd2776IhhfCWoIuDkNpIy2exoLg1csUpaFW0kDRnuP?= =?us-ascii?Q?jGwtWeJ8mzTLQGYpnh1K81OY5/p4ISdF0vm0/3MoJNC1S406jSQIbtWJX1DX?= =?us-ascii?Q?9JwjxLxfuKRT/lequmtf5DXORS6MCFOmVBV5+VkzpQ27QiN01lrAX7rIzY+P?= =?us-ascii?Q?e/L+LYrNjhjH3bav6DZqTC4vcwy7V0AK7wToq6pH1FnaYKJx8txfZW9i9NOt?= =?us-ascii?Q?qPy0lzQedZreBZERvGsgBpAU8VtpD4D/0jRFpMUtsApc/ax40pLsPkNjwH7w?= =?us-ascii?Q?QYI1WPWimBYE2bWWkZaNSqlpetk2h7GNJP/PMDCmA1VyvGqSlY1ICIU+xHLc?= =?us-ascii?Q?ghA1RS9erq279Sulxmr9k2kdeDnbar62QHUSsE7h00lxNXUv0W7CIahM4KM8?= =?us-ascii?Q?m9K2Nxe6q/CgLXiXHRiHxvETZC/5k2I5EHk3pE6DiqGRp3x41IE/SsLrTUr9?= =?us-ascii?Q?4ROcCB8X0pTpEY+vspveyVCVjMIMN4NatJY/?= 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)(1800799024)(36860700013)(82310400026)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Aug 2025 06:37:40.5712 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d6b34f3a-cb0b-46a5-5130-08dde3a1e3bd 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: SJ5PEPF00000206.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB6389 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 21:02:24 2025 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2063.outbound.protection.outlook.com [40.107.94.63]) (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 28209283FFA; Mon, 25 Aug 2025 06:37:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.94.63 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756103870; cv=fail; b=lMMJgfRZTNjGIIJ/oL1mumPeCpk7F9io8QOzcM0IlB0e4F3t5Ljmha6vdV87dSb5wLTyV9CF6OOBj+Gjrc9MPQyyoZ7WoErZv9cBRPAxLkN8mxnm31RARWpkpuZNiJAq9xel8Sgn5bkpp8u3lEA4EQRVG0cyOPyvEO3FmUxqqOo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756103870; c=relaxed/simple; bh=7sE82rgasi2yPuvU1rsdtQH1IQJkeR8OJtIAhzLfMgo=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=cSQzZHCw4ayzZSJQzfokDIfYsm5R+pGuWVR2Rte/VBiokZl/CONWulOLFJaIKBh+WeVwSJLe0qXBhpZQvmginCichU22piaEQSTDzyZgqiwxh+8PlmnWm9ZFHxqlJS5dzn2m9Yaduj6irlg9Aqf35E+7SsqCd8lTyjfk2NKCH6o= 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=I4LnNiLr; arc=fail smtp.client-ip=40.107.94.63 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="I4LnNiLr" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wKvoUU1instsH6Pl9c91pi6dRZrQPUlbbL6gLJ0LRXWv8pLuDGguzBtVDEmM/wpOPsYG0IMIV3nTjbcbYqQh7PuWnhwiNjQE9r2ThBglHyMbOJofoo/t+W8Xq/FcRH+5uoG+koLVxAi//kHC79UFpL4J4gx7tCwDmbUqGxXoiE0fx6bSH/wJTdLj8s/EPCuHd840VxLwR6cNO349UbCychrsoECX6gAqpBL6yqKk9KiaKOwrIdGvT8QLzE6/dKeXbwp6rMsfLcIZzy3qsa6hgSl/mNOtxRpe2XHgWPiSryzdpFK8UmT88e/8JK1dYTRKQjwcCh+WZJe2k5ulMvGuEQ== 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=VSG1p1IkUVt6J73OKu9HZfksYXoMEQE5z6kZXSFMK5btb3c9C5LqrBnZ5n++g1/7d3Be6Ax0Vj55PD3uq3Yq1bin/afKUcekY8stCmiV57zVpdwqttpaeMH6yD53/chfgVqqVx55XA3MMOLxcmSuQ84KuTGpxtVG4ptfpB9A7D+VWkX5U/dDfTy24F13EL73Xxb+NBULdOkyb2ypHHnLtnthm6+4RvlZ1DuVAQoZbNPlh1nOJeDmfo9slixqEnR4gUjCnlmoZc/ZibQGpgS+VSSzpqlZ7Y4D3ZCN1ajeCi+56a1aG75Rx5vmCQvrvMTXnp8GE2FWsW6COt1IemQgLw== 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=I4LnNiLrdf3MjHQlLHEfqOP3e/TBjNNzctdcRzvfVFtJc2CMm6NJwlgROKYN7TYbMp39q4NxbtLaAUkFjDVRlT9hm3MVYJehf6QHeSxX/K6JQ9vPJVMQN5SCHavdoofH657e+y3o758jNSQ71L+DezAEo0TjlDo77GKcSThV6tRI44gFUWarm2pvQEDBpAUvKf83nRct/zLiE4NFNRXUwOvfUN+8XpPaiEgp8MVBnmjyppSSa8xmoXG/LH1WaswxcGSKZvefm1/SD6PRfPL4+sYHX/S+MWS1wRY0B4Z2q1Ed0ZDD55f3rWM4zbU8wn0j4dpbDYcfJqUrdvRdbv6SDw== Received: from BY5PR16CA0023.namprd16.prod.outlook.com (2603:10b6:a03:1a0::36) by DS0PR12MB7946.namprd12.prod.outlook.com (2603:10b6:8:151::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.20; Mon, 25 Aug 2025 06:37:46 +0000 Received: from SJ5PEPF000001CA.namprd05.prod.outlook.com (2603:10b6:a03:1a0:cafe::ca) by BY5PR16CA0023.outlook.office365.com (2603:10b6:a03:1a0::36) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9052.21 via Frontend Transport; Mon, 25 Aug 2025 06:37:46 +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 SJ5PEPF000001CA.mail.protection.outlook.com (10.167.242.39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9073.11 via Frontend Transport; Mon, 25 Aug 2025 06:37:46 +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; Sun, 24 Aug 2025 23:37:28 -0700 Received: from rnnvmail205.nvidia.com (10.129.68.10) 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; Sun, 24 Aug 2025 23:37:28 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.10) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Sun, 24 Aug 2025 23:37:25 -0700 From: Dragos Tatulea To: , , Jens Axboe CC: Dragos Tatulea , , , , , , Subject: [PATCH net-next v5 2/7] io_uring/zcrx: add support for custom DMA devices Date: Mon, 25 Aug 2025 09:36:34 +0300 Message-ID: <20250825063655.583454-3-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250825063655.583454-1-dtatulea@nvidia.com> References: <20250825063655.583454-1-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: SJ5PEPF000001CA:EE_|DS0PR12MB7946:EE_ X-MS-Office365-Filtering-Correlation-Id: dc13217c-4794-4cbc-4791-08dde3a1e731 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|36860700013|82310400026|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?S/ZnrN7SnfBXkgQZ2JB6qlBk4Iu7iJgZlsV+iLTPhE+7ja09jj+bYjs97Ga/?= =?us-ascii?Q?j7bN+bf4qBQai8MYTILRH3EjftuTcLLDntda1f2o9MSIYfDRkLiZ/toFf7fq?= =?us-ascii?Q?9VlxjSWWD857ynO7YyFnN2QH6LDC4we18d1sWRK5Y9j+af3T40h/2dklACw4?= =?us-ascii?Q?LDu/6Pj31UWdNtBnPWFO5fTg3Sq7hNnrLHPJApmRIVpiOqEc1XKWiJmFhyBJ?= =?us-ascii?Q?XaSa+yR1pVzga3LdOCi0Jw9seLwlzQ341C9vBPxF1yciWi58g89kfdpnpryy?= =?us-ascii?Q?Hc76t6ATzMASKElIbif5WKJuUFSokCPc19AIe9cyVi47g9PkDnbxf0DNsDBo?= =?us-ascii?Q?mssNkXkrnmU0J8NrSJHIJuBONAqKSl3wQ7a1qnZj/XAWXsX59xMgPIczuWsf?= =?us-ascii?Q?wySD15Bn46faX0bchlHxs9hkcQYpauwgWarSVL1gH9zjsklCQwUuaKTLS9sd?= =?us-ascii?Q?wj6y2aUfe/7fVZkN1eApGzAeiuxR+VQ+OVjkl9kLkik8HqZPHUh5W3EUU5Vx?= =?us-ascii?Q?zMfDwQU1rLetNHKBEW9gKfF8Z3ePE5hu8V3VCHTTPtS0ZuQEUXC9HLunANW5?= =?us-ascii?Q?pgviE47nsNcBe+VBwEk58QnJAx5cj2qx5L+WC3+WGOSjTssAB+xgypVdxb2V?= =?us-ascii?Q?LDYwpLNAu+UzKSvTV3rYSgvgNCkMCrJ0hF9w8xjcDJh0Ni+oeDsiH2sTz+NP?= =?us-ascii?Q?Axk0Wjq3nG/bJHs/y+QCXs0P9I2nmJcKAlATdWm4G8A8Fu2ueUp6du8/NOCS?= =?us-ascii?Q?X1+LPK4wBUfGfVvTMrZGjFiCt5mLNmDOVvi2uHMIRGGIsvhs90KvK4vntHIh?= =?us-ascii?Q?O6MnOvNgiqo/RbMP+cQpbISln9jv0cys3z+5DKjuE0Dn+cQ0IpLjub4lVnpe?= =?us-ascii?Q?pFjdrsUkcgj1h0Y/6K4QWeXbjpW37YI2HsImRjUh4QgizvvkjbvZiAQVGrzs?= =?us-ascii?Q?NCUp+eFPKgViROGKWqvY50OSyuqIt4rMGptpbwwXC3kIqibINg6CJ8DGBgUE?= =?us-ascii?Q?1+i5CEnCLxZJ9tqnhfF5UH5YTxVdOswBsRfc2ofjfHKlijkcx05CeL4wZj6B?= =?us-ascii?Q?od9QfBvMXeLi+DFaifqNaXIfEf6ekGgRnJ43o0uNlsojXuQMq5xyCNxFSvbW?= =?us-ascii?Q?b8zYqVlKFOYnbV8pBA7RM5Mx8qQ9V0kERmpMkd0p7eMZanqPsACt9E+UzM2c?= =?us-ascii?Q?RBRWCyacZj0d5a6QWy+eY2pAfuxD9GyS84rAYGALZ9TkMrcwil0Pr7R3623X?= =?us-ascii?Q?dfXkZB3BMT2fmGPS1nyHHsTPXQR+i6FnmRxh9Omr3N4Lvm+6zXBPbtwrrjhu?= =?us-ascii?Q?82ttQ2biTmAjIFcyo5GmLbcWM2sjARY0ROxcjxUZ1PEWtnJYbaNji8KYL1cD?= =?us-ascii?Q?134FPrs7xgWsnGJpXh/WYWU5Gj8QKjI/hsgZOcsrw0+WAREb/oYiifx3JSA4?= =?us-ascii?Q?qMN2VAlFqTLWtis32t4d4X0ORqRrfBnuirdczuZ/HqgIw6LAYugVUmMnNK5q?= =?us-ascii?Q?SPSwGYU3/v0iU/fVo0/KwltubPGGlBQFzq5D?= 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)(1800799024)(36860700013)(82310400026)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Aug 2025 06:37:46.3028 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dc13217c-4794-4cbc-4791-08dde3a1e731 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: SJ5PEPF000001CA.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7946 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 21:02:24 2025 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2080.outbound.protection.outlook.com [40.107.220.80]) (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 8DCE928507F; Mon, 25 Aug 2025 06:37:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.80 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756103875; cv=fail; b=arx/nsGdAI/myoXT2cZUPybQuAp5+W9J9pujUlV7uWWlhGqi/mTDUOMOC+p8ySTu7Wsu2NIq1wCaVJ5MwwpoECao1xOvGU7DknoQl6in8nt8NIR5DQj4t5pe8Bb2t4zlsayCUswJ891lV+vXKJZOimTlLo4gZvjeEOR3twumVH4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756103875; c=relaxed/simple; bh=gpVqEzM++iS+MCO7hMUyBrxhvGL8NPDTqRk3GwvPDos=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=K7UgCNw2mZIHd8akD1O5lEzVOZS+drQS3JXDhjXltHbtjZlmd0G/oDPfE04o+evZrieC4TGsasV+CaHi8WPY7DeuEXj2dvPDMbC8C36lunTg0ruh5jW5DCavZfn1H0DDJSKNe8ycS2M7mM5CYeQU2EFNKVCps/k3DNVQTT9H6O4= 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=qhCiLHY/; arc=fail smtp.client-ip=40.107.220.80 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="qhCiLHY/" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mNBwEcu6ixllZN9U6zJZfkst+zY7EbhZ/iB3SoYGam9sbgJGYU6S00yDNk04pOdjeIK9FtfDsTspzfuWyt2kjgeER4f59pl/hxcA+ArgFBQ1LNrXw2lwb73a10StEVQ8mC+BM8BPOpdRmGnMcs67QruniSWOHGjjj7LaqjrFU3yBHUF7ETBjLg7TZ+mO0p3FeBOMo5j2yT8SCI9x9jVELkYL8SdevO7xcUKrvymUNdnT6gEXlMFJrQUoBzhBcLuncM7/eESttSnzR+h9q/ZftWktY1UN/wqrAFKXfU5A3i/XZo/R2uhCGHqoLRNyljq3aqy60XuZW3c4FL2245JWRw== 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=Iymkk5ynuO6z1ggWEmN5qTq5HJpkidY1YAQ1vulq9X4Oex0ivWU3C3XCsm3O3JHOwlBlIo/SPX9OCfGZpJAAZ78if1BcEcYWQhCR9fuuA7AiPG2x1WmsGGZW4SOYY9kUQoTKyArCWQqZ0SCPbaHNJBZsEZJfBOeueJNQnO9dqVQX8WuPLiUWRF29OOR7psjBb1b8afdnApszoSnrdMUXz/J4c/YEJs2tl9EoQfZ1lQqy4JYmqaRJ/1n365JVB8gTNvdPiS4+J+vuK2u64ja0e0U9TTrLeCA4a9HjiP4hgOyeG/jM8mnq6aIpqo5MGZ49szeOf0VhEeW11HdBq79fSQ== 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=usXVVuUSvWBL2seaykd7c125tV+xIT4bq0Rjg4o05CU=; b=qhCiLHY/ZmTpdM4knJqpnVY2qb4miJCUgD5iIBKTY4mPVL4vy15ngFpQhzW5cqA5EzwTnL6LLymxczR+8vrER1vfMYuQ8kBOZ71TOIw4/PBq0bhFPHBCNknuzLx06uFPaWY38F+L4CMGHUJWpAPP4mmzMMmzHRBrwxYUyJTmZ9YW1HfAlUbqvnAa7zqCr0KmQ6TU53rDgtPS6pPtTULJFJjSzCOPHupl9xYIUkXQqch5xCeUBzM3AcWnGZWW8eWFrzzitdEiT7foWD03EnKL7SFkaPG3dohJJSSkIplh5hQatvdRS3XqZs3fQp2QI20qXzUqZhufHLjmYZcm/lyBbg== Received: from BYAPR11CA0054.namprd11.prod.outlook.com (2603:10b6:a03:80::31) by LV8PR12MB9136.namprd12.prod.outlook.com (2603:10b6:408:18e::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.21; Mon, 25 Aug 2025 06:37:49 +0000 Received: from SJ5PEPF000001CF.namprd05.prod.outlook.com (2603:10b6:a03:80:cafe::d3) by BYAPR11CA0054.outlook.office365.com (2603:10b6:a03:80::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9052.20 via Frontend Transport; Mon, 25 Aug 2025 06:37:49 +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 SJ5PEPF000001CF.mail.protection.outlook.com (10.167.242.43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9073.11 via Frontend Transport; Mon, 25 Aug 2025 06:37: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; Sun, 24 Aug 2025 23:37:33 -0700 Received: from rnnvmail205.nvidia.com (10.129.68.10) 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; Sun, 24 Aug 2025 23:37:32 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.10) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Sun, 24 Aug 2025 23:37:29 -0700 From: Dragos Tatulea To: , , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman CC: Dragos Tatulea , , , , , Subject: [PATCH net-next v5 3/7] net: devmem: get netdev DMA device via new API Date: Mon, 25 Aug 2025 09:36:35 +0300 Message-ID: <20250825063655.583454-4-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250825063655.583454-1-dtatulea@nvidia.com> References: <20250825063655.583454-1-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: SJ5PEPF000001CF:EE_|LV8PR12MB9136:EE_ X-MS-Office365-Filtering-Correlation-Id: 39c92e17-3f99-43de-2413-08dde3a1e92e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|82310400026|376014|7416014|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?M8haI0B+0KlpQwLdh4rUf792hREQEUwn9SUej77/eAmy69g+vaT+hh29JX2C?= =?us-ascii?Q?2YDBkHcjAIqb8eLTPUzy0GViWVW9+fSDBfiED6NfFlOQXQAOlP9UcwolQQDp?= =?us-ascii?Q?AJdR08OKsdoHNbb1izhQR+Pdy6ztHWeNkqYJLAMnbMDFKR8VfZKCDC5nLf+7?= =?us-ascii?Q?CM2JqLAQ1eQMglDWUM9jwNtsRQXpJotyAGa1GLm+lcZ/W4YsX2FIf5BQZtDh?= =?us-ascii?Q?LXrFhOcImp/gO1XCMee4k7UXx/qntLP/y9qR3oSokAKMHzQxzjDLzDJtFW9e?= =?us-ascii?Q?vn23qLStQtHl6PkeoG7phFyuSthz8noH9raHLlLickWB3PqFPC9nVGyvNRWS?= =?us-ascii?Q?DL6DKeW0HIa1NQCu61FjVOlXvXoUYvaDn6xuXYGrT7xt9ILSEUh93FspEsLX?= =?us-ascii?Q?+H1lQF1W8yoOldQrvgf293AFRcaAgf6OfPsv3F1UrCvtvjZfq+/AsTlZeSjH?= =?us-ascii?Q?2ffhzdQ+EO2Tz+jthvbQvYn70Z/Nc1wGH7It0OulQ7ZaPYqxK24MTzors3PR?= =?us-ascii?Q?hOs5DDUDdVP39t7/hk77Xie++qQf7I4+2VZkx1w2k5RwcCRNy3M2sfzs2oaJ?= =?us-ascii?Q?buyx8E8iwrasLRf1oL/hguvz4I48qlWXOQ1aIbbWpxebKVtve1QbDBc9SRDv?= =?us-ascii?Q?pbvhlGvc+Ai1hhq+jWHs1XvCvKUm/udTU2AbLe7lFnWVooErVvgB36YkYo3Q?= =?us-ascii?Q?jV+X9vg2o9XRZ+r+1yLz/aMRdzqyC55Pv0NGQX7mD6u9vSN8EwEMsWWaBymZ?= =?us-ascii?Q?//nzQPfvPJWYRmyxL7cRHrQTULsrKW9OTH/T6526Syc5fho+2PyD9EogC8pH?= =?us-ascii?Q?EA9hrUXGku7hHXsCDRaGidbC09CbiYuO0h65HNpPcN47ijvMYC5pTyM+f61l?= =?us-ascii?Q?HRgv2odxUKYyL4SoJuk+jTpiuGMQ3WwjBuYxZNUU9E7ZVyBXFWhM48FT/EYM?= =?us-ascii?Q?kogvSp8EOqrtT9kUqinjYIN1RM63FbCtctCMgEZ15P30HdqSBoMe5SWVLjQt?= =?us-ascii?Q?sPek1QhDRghirw/GFA22qj6Y64gQJGAkPNtWUJcFDx9SfetVFnxxG0Ss256w?= =?us-ascii?Q?ZJkyp9hftGszGYjJzm6fa8AFVQz463rUjqqGsAr7Bst0+bOG3wn2hF30hBYS?= =?us-ascii?Q?g1RtVLqI7095BYECKDDQ7nT0e3vTQSnt33abbvjM9MRQKpIK0Rv1XP2hb7XY?= =?us-ascii?Q?sOzHApXlxVtRR96npgzlQwiiSwsclkFV4vCSzWFiqM9utP/hnFbAQ1Or3VbO?= =?us-ascii?Q?iuqacbjQSfk169ofiAd3x2/qdxiYIF8USpenDyo4aESxuRbnuWkJrZCmUfez?= =?us-ascii?Q?mgCrjrODl7pDApULYGCh60Y3dnhoTulePb+DJxz6g/WT6nuN7mCgA5wcEQYb?= =?us-ascii?Q?M0UaaBesvKL4AlPoqKHv9MuVxYnnLPSE/+yJCirA94JM7pwH7SYlnFuwPUtj?= =?us-ascii?Q?Xx1uWkiM4WR1uhNoHX8Zg7k+ycpDwS7DeKnC/c9wXcslYct3qPryXcJYoaz4?= =?us-ascii?Q?P+L1U4yljW2wAayOqxCiPPuY1fj/WdZd36ED?= 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)(36860700013)(1800799024)(82310400026)(376014)(7416014)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Aug 2025 06:37:49.6588 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 39c92e17-3f99-43de-2413-08dde3a1e92e 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: SJ5PEPF000001CF.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9136 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 21:02:24 2025 Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam04on2057.outbound.protection.outlook.com [40.107.100.57]) (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 6020A283FE4; Mon, 25 Aug 2025 06:38:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.100.57 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756103886; cv=fail; b=tvjBTdk+mevg1V0xlw77Geev2noVuOV83aUzYFx8woI5iA7KZcbwC1Er/JeJZYyqTGGhSNnK0cdLf4n2iCsDSYzB2Vh75GzLU4GVrm+U5mG/QMK3gZoHrxLdEB66wVwUugRSwl3GBXeegBhZGaOoZ5eUw592AF+Uvkd9ycnPnws= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756103886; c=relaxed/simple; bh=r5/I4lETNhjzGp8Yr+/MrUtoh587lQAqA1xtUoEsDBE=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=lrvJgqxNRbAuVI/6bcZhuHV2mDagLiAiwC60LeN2JcNWNviwWdIWxN4ycwo+ziLJUOIjutFy3sKL+IyyX/s40/QAVLr28QpAC+DBX9KPK/Lesq0l1xWeOk9uiKWK9BolCvKg7QAXyB6/b2WRnwGbFcBUbNgW0461eiYoOSWshoY= 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=S7uyw8tA; arc=fail smtp.client-ip=40.107.100.57 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="S7uyw8tA" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GF1h64FrAbNXa1MZxKkjabTov3Ae9WZcF7QjlIEm03u5rX7/ynUZ5vWaOdqOGPmvN1aIhCqhW9mhchDIROYnvl57L6N50F+gy9ucPkEBrYzkPo6juOyYd2tvitKPerq1561Z3BlVlOw3or6WFKVHdfbQmBukjwhu6v4Fj9R/yswt5JWLJffTMTtG1cXS3ccAMh6l2bzPTHFNPn8vlDeA3mFJvBRghOGVJsLDEA3ttwf39Dhh5XOMAa51EmyiNR5NZmuXpSNWAOpLqmlt2Uvi0m8pY/bIUhFpIto/MYa7IHf4TgrHV6JivT9CSDPX1wXxlvSt7FlqBR04niAsyK1yvQ== 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=rV+uSl4LUvpXjZ+/qakh//MVsCI+WQf8STKJU9r01QdoUqgycAXGUm5QXHqvTuvuvEwu6PhQ8JBOWNk/pv1vq3v2l9Xbq8BRfcDknlR8MgLMJ1BPMU7E/GkN1ZHgiB7fJDZH/+dDlCb58SqXxHzC54hxLbYjBgP0YspKdqj+gSKgyAW129Wc55CkP60M7KIfhysLc1aZiFkFRA8kSv7+z9jF8UWwzpXynsQk172FlAZfzCZxlZc7LM2EWCfLjza0yjjtV1AHmgNui98LLVnKl3n2vNlw6Ch5ghTXTFwgom6k/EyiXf+2hL9JIkVSaKtDMsrIcxUA15KvwamjIbAq/A== 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=MdZmkJJnXBfif8QT5LGiZDWZ4BWIuP0NWV7mCGb3qRI=; b=S7uyw8tALA31zyX6sbnLRfRzd3gesUQg4RDVAhIJ6JK6win91jRWd4aGmEDMKx738/N5ZLYf2JUIoHNl9yOesO7yEIcPMS5yLY2XwxJgwzIpgyRAa9z8Sgf7hoZgJgLU+xPuq4Wp2cz/G1VVdfSa2Ij5MI6C8pcfxb6M5yVgAUUpEBmhkg0xKMnUIDSaf6LDvh+hMSMzVPUUaixFY1UsiFwFg3UbSg/ka5wKERYwt0Xg7jRMZPyD3ZOCkOb+OifMt9ZzT6OQC3UwgQ2A6+BUNiXEmXszF9TIpFasKL8nuuPtViQ6D7KlIF6RHkLcLzkJjj7+8ldrOss/ykZcboPRyQ== Received: from MW4PR04CA0119.namprd04.prod.outlook.com (2603:10b6:303:83::34) by MN0PR12MB6269.namprd12.prod.outlook.com (2603:10b6:208:3c3::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.20; Mon, 25 Aug 2025 06:37:59 +0000 Received: from SJ5PEPF00000203.namprd05.prod.outlook.com (2603:10b6:303:83:cafe::84) by MW4PR04CA0119.outlook.office365.com (2603:10b6:303:83::34) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9052.21 via Frontend Transport; Mon, 25 Aug 2025 06:37: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 SJ5PEPF00000203.mail.protection.outlook.com (10.167.244.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9073.11 via Frontend Transport; Mon, 25 Aug 2025 06:37:58 +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; Sun, 24 Aug 2025 23:37:39 -0700 Received: from rnnvmail205.nvidia.com (10.129.68.10) 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; Sun, 24 Aug 2025 23:37:38 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.10) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Sun, 24 Aug 2025 23:37:34 -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 v5 4/7] net/mlx5e: add op for getting netdev DMA device Date: Mon, 25 Aug 2025 09:36:36 +0300 Message-ID: <20250825063655.583454-5-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250825063655.583454-1-dtatulea@nvidia.com> References: <20250825063655.583454-1-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: SJ5PEPF00000203:EE_|MN0PR12MB6269:EE_ X-MS-Office365-Filtering-Correlation-Id: cc873a94-ceb6-4f4c-7668-08dde3a1ee83 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|36860700013|7416014|376014|921020|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?IGSd1ePoLujLS8NyeNEA9e783rUJvSpithA5kwKeLyNR0AqX9+up8vZ65luF?= =?us-ascii?Q?XjTDofa0y7r+G1SSDBRWkwEdVy4DjUQaiUkHRzkDeKgbGPxPX4Z3grnts/Hl?= =?us-ascii?Q?AHvXi2+lXiAhh3vKZ7niGh9FUwScKpQTZ+hQHuT6JNWftaCGwqbKm0cS+JMb?= =?us-ascii?Q?sa08Rdy3n4wOZwugnQf8ssRUzyxmmmXqFyJEDq/bOfTgxGSiKm2HnhRQZ42T?= =?us-ascii?Q?/SAQXoAQNx9MYDBGOiYdyX3RFiAs+bddbb44BgyzlX1IvHwgjUA7FXeyDxdd?= =?us-ascii?Q?mdlwzRsldxL0wpwWaNPX6Y8ODyiU+IJLaouKuioYFrjttFbQ7JGJN4cRb8yx?= =?us-ascii?Q?yu3JdnNojgct6x+zTrLtJKiHs9DgiQhJZpr6H7z15F2UjcQBVlQgaWq8Thlx?= =?us-ascii?Q?fL+/A6eDOy4K7BdUVMxf8Hy+06XkKQKTDCaUSkaucm5G4Vy2NLfcRr+AJOGw?= =?us-ascii?Q?rjkQHLnQpNltw6XITQpg2v39gEEl3FEv8vE9OVK5ldSJZuUHM366J4nHYFTL?= =?us-ascii?Q?M7cK81M6m9SHs/y0zSfFPkTpdC+FPxibXNZ/U7KtaLj1aTYZuVG0wwE8+yEP?= =?us-ascii?Q?pR0ROmGSsBYlW4uD3w90wivpKy6Iy17xlzZMf5++SxbiQRtLJ/jQWr7twJCU?= =?us-ascii?Q?Z1g7PaqDGl7kQzI1vOcqPzeOmK7/DloZ/6s44M7V6C92JBBoJHcLbteMHltD?= =?us-ascii?Q?U0ydHE5i/7IoceN8SS65IjClh6aNNPGybNz1n0LWQxlLh1AxkDqSJeKjGhVG?= =?us-ascii?Q?NJrKxo4y3gie+owIZ8JsMurX1l9SQ9m1IO0zQ9YvSgrl6dgBHO5Q/XiDp6sl?= =?us-ascii?Q?KG2DLg9Rqqn7NI6CSOxEx/P3UfNMxuIoJI0ydV6vWR7g+lvwjPMm1lAEejaL?= =?us-ascii?Q?cowxlnTrv2L/GzS+nxLC9K4oneFflT/UL8IifiteqHydlU8jckAt+n0i58PU?= =?us-ascii?Q?qkiUwVacEUPVtbHV7Bpklj/rzPVvtEjouBtymN7hVycuRNkDeL1fbR2DZhar?= =?us-ascii?Q?tfti/yTj4MVKb5tKyiip+WSGzfG14JTQxG1ujQ3Bu4Wuncdaa3eU5Ph+lQew?= =?us-ascii?Q?I2ltFf0aj6n1ooEQWOssGoQqXK0EXpbiJnUkpLXt9VP+WkarT14ocbGgMVDA?= =?us-ascii?Q?irjDDiF/DTPvdSstYr/3QJ0B31G9dqXS/w31FGYfBJQjdd5JlsGbqpElIazl?= =?us-ascii?Q?R4yzf2litHWCzD2m0vPF1uiBM/rKg4oMUVbE7lLZg+9QaiVmvUBrqTOdqv0O?= =?us-ascii?Q?5pdsdFbvzP+VhPgsVhcboG9hDykZC5sEuuB9G0ChWKn6re4FcUtvt1Lo+7bA?= =?us-ascii?Q?9jTb6/G5+cTshXEdshXrq+RNFJ8qYQq7mq6sY/nSxJgYYKoWCrAVVagpWIj5?= =?us-ascii?Q?+MZ09G6fApv4glW3OOJdX+JHt3aXwvNF+YokXQqifhdOd+q8i9lMkv58QRF1?= =?us-ascii?Q?PB2xALyo0AHN5mRd+8E6ZV85a8zF9X1KwCvoPMVYPB4cpnkTQV9Puc2W+a91?= =?us-ascii?Q?NwkG2b3fgt+5NLO7g0l7TLqkNoWRMGlz9B5BNsWrgfmM38WTL/ROOtKh5A?= =?us-ascii?Q?=3D=3D?= 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)(1800799024)(36860700013)(7416014)(376014)(921020)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Aug 2025 06:37:58.6014 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cc873a94-ceb6-4f4c-7668-08dde3a1ee83 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: SJ5PEPF00000203.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6269 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 21:02:24 2025 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2042.outbound.protection.outlook.com [40.107.237.42]) (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 CD011283FEE; Mon, 25 Aug 2025 06:38:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.237.42 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756103884; cv=fail; b=AFKA+kn6YmCBZiMNV06CzNB9QhpHIs+Nn8BG0KV9O5UKNhdqDVZPNWxRj0e5J1MHvXoV+/KntNRgv83N3RK65lNLOUS6qaeiHNHfJb46GzmchiAItKWIl4UUTI9+R6uDIYv2zKz8vjpQ2q6yExb19AyDBjm9Zloz63oHPEfYFf0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756103884; c=relaxed/simple; bh=h13I/zFV/ot2FGZMKCV7eg5GPg2gVbqcZYpUkmWWKf0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=IMD5lraabSW7PdiNmczfbPKIufgx4vlHTMPY+azFSzRoiyV7g+WPRgvTzZBqOHKYqA30hOQci83oCpHKT57S8d6U08eojLrvp0CDw6VBLCx6+i8NLelG9/UvVetorq5WOq996imwNeg4khCaIC3id4UjPY9pFstKHdMBW1/gqzw= 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=nc19T6xx; arc=fail smtp.client-ip=40.107.237.42 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="nc19T6xx" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=G1gA+UpHNhRdjzgxd5kR3Jp7C33KfZ0n7h+cGpY0SeMK4LacuDMs4hi/SM37nSMeunjRyi9BC3r4gYTzbgCDFy3phbkN5VaLoYjfxW7BBQHJ4oh5mwU1S//k46Eu7tcgN5kYKJiDr7nh9xI77yZq0aG4q7zpCUWEyOYM2u5SZdzZLoarWdl716NrcqtSGe2PTUIp/v057Jt1KIEwsZn06Nkt/O0Qz6RcLk/jVLjNOboY0O0YWf8DB71vD60BY2x3DNWmkVsaFxC7vpJDGn8Ud2IUoSLsou8vUTPcOdZ7cd9h8tpMW7XnfjfR63+uU/CgbOAKNjOEY7TEGDDi2sFPlg== 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=B1s8VCZodYH9its4L8uLMW6wIQtOaPayeDefm35nUfJazqlwzWUjpF3tNQRlSDrk9ZYTU90dX1pgq53PJ8eAbumEF1EGP6ggc7d2pC/0KHflCiAdfMI92omFoWrJjoar660NhxELvdPgxp1euEi231hftn7IL5vGaMpMV79NGYp7qgPApEp7mnR6HuN4cPac62X0Sw95V7NpTsF2mriWfugA9e9hZ1eDwMND9GbhJIUC64aNyguIFP2kbFqDV2cJ188ceKvzQqcANP7aeTr8tkWFKj4pASgnwm5HrDic8/+Q7m0WX4v1jUiz+pzSqknUpWxZIVjMtcUV9VjgdKrvbQ== 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=XI37HeyH5tw7Kd5GqTzN98po6dxBPCNeIBtxtLYfvGk=; b=nc19T6xx2vlkJkCMECQy15hwu6mCYo/ye1y8Rz9b6XtYOoMWQVUn6N9fpAdA1X5Y15h8pFRM1Dz4W3HU8hTGIgledqeqloMBtcSb1kqMkXg5ca+kn2EDBeD2YZ4tdWHlkoCEIR2gZNUswLykz82Zufv2ydmzvEPnKb+NThB26jW30m03/LbXvehHliorpTjRm6rkpyEt9c/bs/utHkj9KbbFZjWS0uZhzoYJXuQuc82lbN3fGcnrOHbh7lqRc218LzqKzoV3f3Fz5Q/niY/lgFqCIgDgs33tuBk4DllxYJ+4tJ17rviW4JlXR4kw1iZTD+ZWeJbqmqm532lDOm++dg== Received: from MW4PR03CA0257.namprd03.prod.outlook.com (2603:10b6:303:b4::22) by LV8PR12MB9408.namprd12.prod.outlook.com (2603:10b6:408:208::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.20; Mon, 25 Aug 2025 06:37:59 +0000 Received: from SJ5PEPF000001CC.namprd05.prod.outlook.com (2603:10b6:303:b4:cafe::af) by MW4PR03CA0257.outlook.office365.com (2603:10b6:303:b4::22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9052.20 via Frontend Transport; Mon, 25 Aug 2025 06:37:58 +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 SJ5PEPF000001CC.mail.protection.outlook.com (10.167.242.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9073.11 via Frontend Transport; Mon, 25 Aug 2025 06:37:58 +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; Sun, 24 Aug 2025 23:37:44 -0700 Received: from rnnvmail205.nvidia.com (10.129.68.10) 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; Sun, 24 Aug 2025 23:37:43 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.10) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Sun, 24 Aug 2025 23:37:40 -0700 From: Dragos Tatulea To: , , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman CC: Dragos Tatulea , , , , , Subject: [PATCH net-next v5 5/7] net: devmem: pull out dma_dev out of net_devmem_bind_dmabuf Date: Mon, 25 Aug 2025 09:36:37 +0300 Message-ID: <20250825063655.583454-6-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250825063655.583454-1-dtatulea@nvidia.com> References: <20250825063655.583454-1-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: SJ5PEPF000001CC:EE_|LV8PR12MB9408:EE_ X-MS-Office365-Filtering-Correlation-Id: 81580f43-3f27-4da9-bfa1-08dde3a1ee4d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|36860700013|7416014|376014|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?rfy2NgIFUyHoTIRfSUTQbq0E1twQE5maMLc16A3N56smY13knT6bNTnv0IP7?= =?us-ascii?Q?YAWD7ypgI0pUvZm9HzJhd7/psL/e0aopIykYxyrNmb00bDqtEh8K6MjUg5qg?= =?us-ascii?Q?bOcCcNPFbgflTM9pjuZi+y1X61NOS0mHDtyHNWLW1vF6xh8CtEj+TYufP/OH?= =?us-ascii?Q?V5Ja8mrrahujZi9JWHqJKQjtp+dTxahq+OQHf3e8hX75tZ4gzqIOdwfajs3W?= =?us-ascii?Q?0OTKun/9W/K0VR2HPD/Uo529LH+j9r7pMEL3EJzLetVD8q6t+3TNQSGJN42u?= =?us-ascii?Q?A3H6Q6T9LoBAxCTnwEhg01qjvXzrYT7Jx2HkIQBusuck+5YmUetV51559SMA?= =?us-ascii?Q?IBSbvrFgFqdyENhIfX/pWdJiKL44UOd6ByuqfW7xX+qljCPS7fPTW+FEhdzs?= =?us-ascii?Q?Q7SQaAPwUnMGtGiQRpT16LDXdBbDVvvSGIHRLnJS42f9thY3ZdU5987+wPEm?= =?us-ascii?Q?7YZTMCFSDk72gepk1YaQGU6tV63XGj9AWmmZ2Ud+ixPEXbfGO8oHMHyz+0Oh?= =?us-ascii?Q?KA4rSpkBYGMDYMs70eGOrh4hcUVY2i8hMnBGqlI1P/DdIuIFKYtIMl0BO+qF?= =?us-ascii?Q?iltD6Al9WR8ZttUn4dqApFev+m23XKKHmMXgWSxZuCPOAHDTUUd1zftCBYD3?= =?us-ascii?Q?5W9OFYr2wpXwqXyoyMXOJTh9b5OHmaPgVeK+veRNa0QLfFuenmZ6xteG9gtq?= =?us-ascii?Q?GQC7v8xkvMf6c7dep0FTDBBUZLE3Qsu7Rr/uqI5QUrNULgg92rJNWKFNrUJD?= =?us-ascii?Q?x3Scih7zj8SQA82U40Fzx2Usery+ca2XwoDL/qKK964eQbbBCmnBHVRelFPy?= =?us-ascii?Q?4K33zXKkX077J7OsVrfTd479qAeWDnWOb+ZSKlMQ8PjijHQNSOtckCPrycRD?= =?us-ascii?Q?nBPNlEDWv4oqfOSMtFnglW4pcToTgYdBgfCCJ1GWLrBSowj1YqVzbsmeWvCU?= =?us-ascii?Q?4P55+JisxK3El8coD9hjt/1DLcGGmCJKz/mIeL/bLbkSnqtjbM78XOwndwlV?= =?us-ascii?Q?0zKe+UdsBNuQOVyEDXxHe2d0Rn0CGWbPT++ntFw6+QLhEUZ9xRdsW4Sap1zl?= =?us-ascii?Q?ziUuA1kfCRydRgGRPOt4bS8STHY3rDGc1Y5GIDo5DPZjwYe42q2g0o4Oa5Mn?= =?us-ascii?Q?wlXmppT9YupxdBNg71jdwPp70e4B+04R1ykskLMQSB29Xtro1yvVrnOai+e2?= =?us-ascii?Q?3HPte2FWj0eTFmD8YgEmQ12VXegfHQmltdpa3jx7S1fBt0ZWNMe144TQma5V?= =?us-ascii?Q?m9HE1fobcWPdH4jYcOyuhhSVyQQyeqG6+xt4rZAVYgdipMcKugVzrIF3RIDa?= =?us-ascii?Q?BNk+N9SXoE9OdwGg5udV24I37huY4yq9H7JrfHAvWZmZj6iFGVnZErTwf+Sd?= =?us-ascii?Q?I3LJKyihDSYTZQnP4MT7FfEFvsSQpzlLdtIBoVo7kCLbRz8pBR52BnXn27WU?= =?us-ascii?Q?xFFRXKk0o7tiBdAIqLe7ubzANrk1Z+fv75YF+OXwvDWRTXRwOsiKc4geqCg2?= =?us-ascii?Q?pazG+276hCWZhvG7K9uGwDMEH0+jwMF+eiYv?= 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)(82310400026)(1800799024)(36860700013)(7416014)(376014)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Aug 2025 06:37:58.2413 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 81580f43-3f27-4da9-bfa1-08dde3a1ee4d 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: SJ5PEPF000001CC.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9408 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 21:02:24 2025 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2081.outbound.protection.outlook.com [40.107.243.81]) (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 9D3DD257836; Mon, 25 Aug 2025 06:38:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.81 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756103894; cv=fail; b=FFQGHo87tyqRW0z0Pllcg8AfjTBHeNzRM7JDo8dIr0W5eEvno72rYy4N/5N6KyuBVlBWMtek4bsI3VqIxQZhIYi1kyE1xEAq6fBgQBP+HgFU2ZjFlXy6oJXIXVaXkULpA6bMbpy2e1fvusSzG4DyoL/DVQWpyK8sAvAQvDCffag= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756103894; c=relaxed/simple; bh=hmjKZbfSY2uxMHwicacr80rm6FvWiBouLKo5IAocaHc=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=cEk3KoHBPXCN/w7xXAAhHOFWR0j243TKruYUODsEL5Q8WRtb9k2kRSVptXMEVRKzdubi+iy8SOdEU+d/4WWjUSGIlrlKQcktmjxrjLVex9uo534dqvjzViIBroZ0vvolKNH2XD5Wuf1QF66ZYTxWCyDw7F+oip9z8r5ufXVlsK4= 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=lK7RMLzR; arc=fail smtp.client-ip=40.107.243.81 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="lK7RMLzR" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TVPHGu967k5rygA27zw9hn3jlPicNIRczr7AZXlGzXAX7AS5NwqHYoCxqJLRD0u7D0BI71zMLtf/igDW29eQUuyx2Ml6CQ1jpcgVY55uMSnTxDR1NN/KGKv5cmaw9QPrkUHEo0dA0yVKqA5yLpG0eok72nC5Ke4jFWYWh9Y464rIhuODJPnNLDNdTAdC0viDtQV2cPMNOyUozcI+GlhXC/gZkl74ghgMW5BXAw9SuBJwJR2m2eQeX2UlzViKMojgIdWX2B7vq9Qb8Kwf/jSBUvGSujS7kt5EEFR4QyspxfcXftG/2EN5qRzPdaWe35cwcC8wWP9+jqAHr7I0uK+7xw== 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=t9iM86A+KYrzcbcFISg3CgTp+dkVb08kCgbSsIzxxK8=; b=Cwb0p25wGieqKyosZXe06iKuhbkdtUs9Ch+mxHWPkSxz4KfUsdFZLppFdjm5iHYagSe0AGGeLK/jkyopwpIA27NxpC0tJfrr2rRNndpbW8DY2FgmumZcIOOAIUDX4diyoCUzl3s29y4fDSeyzbDKqVM6dtk7Ad+Agi0V8Y9IJHqs4GJfcy/fzOuTLGWjw60SyN40bz5Ls/2B2+vNI0TDhxCB/GzqZzi95wFVyTnzRHf+MmXTuBvRLbnFxHikqitqD80qou4DFLWpVhRm9AUHn3SckvnaH+UfE+eyZ+v64Ry1fTF4IWj2eu9vtWO1RHO9rW0TP33Fl7uWCPJehEG4Vw== 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=t9iM86A+KYrzcbcFISg3CgTp+dkVb08kCgbSsIzxxK8=; b=lK7RMLzR1nfLred7H7AzX1KcFxLjVaz8Y1p5IzQuKRxYFpkIL9o50sd8ZbphcAUM58Bh4Ome99CrSCSqwFBlpBL81WRuB/6tIAj8Z3YFEZ//U8yC1Shos1B6yg7b7NG6WRI9M1SOXn+euc3qSr9SChNqGYMmYswURNf23DNWJwBN4S/UmwJuG5CE6DeTrrt9ci9w/w1v+HEU6uYslVkkvD1hwOwWeC0f8YX32EXMlJAtUanmgvUALPd4NXkrRCKWR684uC6WH0N3YEp+BT+Q3ohWcRIAaYoI83KyabC9p18csPbgMUkKX1eyNdDlrS26SJRcIIYQSHWQamwtc2QOOA== Received: from MW4PR04CA0176.namprd04.prod.outlook.com (2603:10b6:303:85::31) by LV3PR12MB9440.namprd12.prod.outlook.com (2603:10b6:408:215::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.20; Mon, 25 Aug 2025 06:38:07 +0000 Received: from SJ5PEPF000001CD.namprd05.prod.outlook.com (2603:10b6:303:85:cafe::66) by MW4PR04CA0176.outlook.office365.com (2603:10b6:303:85::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9052.21 via Frontend Transport; Mon, 25 Aug 2025 06:38:05 +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 SJ5PEPF000001CD.mail.protection.outlook.com (10.167.242.42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9073.11 via Frontend Transport; Mon, 25 Aug 2025 06:38:05 +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; Sun, 24 Aug 2025 23:37:48 -0700 Received: from rnnvmail205.nvidia.com (10.129.68.10) 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; Sun, 24 Aug 2025 23:37:48 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.10) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Sun, 24 Aug 2025 23:37:44 -0700 From: Dragos Tatulea To: , , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman CC: Dragos Tatulea , , , , , Subject: [PATCH net-next v5 6/7] net: devmem: pre-read requested rx queues during bind Date: Mon, 25 Aug 2025 09:36:38 +0300 Message-ID: <20250825063655.583454-7-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250825063655.583454-1-dtatulea@nvidia.com> References: <20250825063655.583454-1-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: SJ5PEPF000001CD:EE_|LV3PR12MB9440:EE_ X-MS-Office365-Filtering-Correlation-Id: 7f052ad3-24a4-41fe-d3bb-08dde3a1f2a3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|36860700013|82310400026|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?tZsszutqnfEmfV5w+7BOOkkkpEBqLHAjwH+kYmoMdxwl8/ljGo9E9rCY9SYz?= =?us-ascii?Q?Lq6oDn35QcyPU8NEVJpScdx4X0+1fTOiUoTYrrGl9PoSoGS1w7kydOZ3QLaU?= =?us-ascii?Q?HQIDrQskdPmUTZuFZytQv0B+ZybzRvVj0EETYG0bsslyigcxl3ABu+z3bB/g?= =?us-ascii?Q?DES7yUnzV5kF/4c0pmzxX9Yhz3UQPmELBh74EJpTtW2xZfYLrVG4QEEu2QRc?= =?us-ascii?Q?gEtYsDAQiom/OMKa+ZxJlOZM9BgmWkU0aBYEUXIHwDkuZK/pnejeL4FXvseg?= =?us-ascii?Q?SINE0wYohfSAgxysj+VMCOFtWUYGzdGqs4Fr9iqiBMITmUj2b10Voqepn+cc?= =?us-ascii?Q?7SLm745RhwzAy9GQnnlXWQfFZSvv3za/NvbsqKVZI6cg8FHV5Kx2v3D5SaiT?= =?us-ascii?Q?OBH78oxMBJAUa43rS2VtiacHfbtlRhevz/GNHR3n9E4esG0FJ0uBxShvjDah?= =?us-ascii?Q?xbY+ahdYuQVU9/t/e3Js9yOVc8H+OFKpGSZ6B5ogPVs9h4thBptVry2beK2Y?= =?us-ascii?Q?iJqfdRzUXJyWUS2CPtnaw+RepcE5UEU9sGyc4uHUw2SmbEvVFtkmAFw2ReC3?= =?us-ascii?Q?FKmZVUU0Y5DrhWqNflza2kPYtCs+DLG1gVDLL8y/4l8FrZ/6ZQFTx8E8RzN3?= =?us-ascii?Q?wEcCKJXFhCm6VN0UnlSMC+tCR750KNNN/EaILnlLxETMEsM/SgyUP+i2B3GU?= =?us-ascii?Q?0nfa3L1TB23+IuDiaBsTgZ2OJisheVRkT4HpaO2lqy6mQ1zQZ96z60QBvuEx?= =?us-ascii?Q?qVdsI2M/SzxrNzZcauKPCWB6ymaEMONEfsEPIdM670NeVtDfKmeVooReB849?= =?us-ascii?Q?d1LPWRxOwEKo8pbWbXnZJ7DVLPFblxxg/U5HqgKUMGNdaIiPF+g6NPur02BI?= =?us-ascii?Q?BHwQZ12TCa1o0M9KXAQFMtHfPdI/7zHco5QyXpVUzxBr4pY7oa9xl90h3Olx?= =?us-ascii?Q?6Qm8cjdVb96OF2ZnI82b5+OYomjRj7GX1SJiCe+N3o9OsryV6BYhdzr+xZx/?= =?us-ascii?Q?v9bkyE9dswqJAmqo7LsvmjXzSUDNNsfu5MfwdT4mwAgIOau1k3XauiYlXokH?= =?us-ascii?Q?gdAoEhYvAwhNwGt+Y7uSRzbLur5uEKlAPdLIm+aLWOYFFTigy3ssugydTzCB?= =?us-ascii?Q?sA2y1CDCP6gd62J0sENtto9CgWvtS9fCxmRV+16KP3plXAuKGbkLyiZdVoE1?= =?us-ascii?Q?xfKGiiw7xm7ujXJnyikvaFrZV8VBnnGfZA3mWdPfXYnrHoX/TTYwZm/iKeGX?= =?us-ascii?Q?c0GyGFKPcywTl2aQNH1YoGnFkpdY5nAMS11b2Pr/YZqCuRIn/2f9O2fWAPqt?= =?us-ascii?Q?+BGWnC/uYdYJK2BJYO39tBJyeevWeUEN3/0dsd0oJt0bQmZN8wv5atXCnKZi?= =?us-ascii?Q?BDmuj65d4Wx5nvjGpcu8nbSongBsTGTPpL9AXbeIKt7Fj/T+11l/nPCJJUWf?= =?us-ascii?Q?M3zYEoD60QEz7SJ7kSP+Z14rKn4PXkkLgoziRXYvgCNn79H5n4G6qTrreSUY?= =?us-ascii?Q?+GvseMZEosDM912/Z35Dgir+dpI9UaTjWLVq?= 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)(1800799024)(36860700013)(82310400026)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Aug 2025 06:38:05.5162 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7f052ad3-24a4-41fe-d3bb-08dde3a1f2a3 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: SJ5PEPF000001CD.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR12MB9440 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 | 83 ++++++++++++++++++++++++++++-------------- 1 file changed, 56 insertions(+), 27 deletions(-) diff --git a/net/core/netdev-genl.c b/net/core/netdev-genl.c index 3e2d6aa6e060..75d600c24caf 100644 --- a/net/core/netdev-genl.c +++ b/net/core/netdev-genl.c @@ -869,17 +869,53 @@ 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) + 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 +958,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 +991,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 +1001,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 21:02:24 2025 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2078.outbound.protection.outlook.com [40.107.236.78]) (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 2B085284B37; Mon, 25 Aug 2025 06:38:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.236.78 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756103895; cv=fail; b=pEy6MvSHu7v+iMRSzsqjqFb91hTl6wtslH7nslk0C57M8ptpYC1E1AI8+FBKIQQdCzEgJc/LNH6gS5PeTpjjH2VxDgg8mMrvts+3g+H3Prc7772BRDkhRtlT+bMomoRd6HSQkWDbA6ujzSqtzwIpwGag1Q6Psg5wa4eBbUBcmQE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756103895; c=relaxed/simple; bh=A4UzD/YYNDdfai4B+6c4VVam5boPDwNwB1DHS1Nbdqs=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=g/SpruHvAeYBclijG4hx8YlIvwUX7uBsTYhu2H1Iju4QdM6MllSYGPsl1z8PswpP23aNLlsbAvVUPswCEyk2nhDH3FwW2ftwIcJcMSnfnpuFVftbzGa2uXiPhw6c8bqVENKnVxknRiw75bEGDckV3GhqAX1CPKA/TG+kaRS7RnE= 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=YlV5n752; arc=fail smtp.client-ip=40.107.236.78 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="YlV5n752" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JqtUaFboVl68Pigh7bHDYb3QDzOmiUsACUGCRHdgdlCxwFeXN5mprY5LNDTYAmVtLr1nbf5rlza71Hg+1EgNIeBiTqs0OIZto2csintwZ2TJjKlF6OB7/6LYV+LyFxUq8djQAYQr1m82VDiXESiyXccEUfAqU9xcGHUS5rtIgXUYbQxJHc9WTGP2RlJS2SZJ2urj0ysqKjFHgim+pOZH2PnCvN+MQUnHASqIEW2jwB/qExozAB9Z0Ze1XcD/dRGcMym1h34SN7iWdXC2ibFAVf89t0wFlhVB4fmzgMJAi9fGGWIdDW3rPlXz1D55JVMH70NBz8NW2wBD4HajHlDTkQ== 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=MUHXYvB2c6IQJcH4KAXG2p/nR2hXSvliigSz42y6AfU=; b=p0UoNZzAc1leDwLc5k3JwHA74t0xwi9uWKZ5Y7gtGv8DX1pGVpPP7DiklqfVf9glTGXlhKFH9ymOnahWUoXpGCqsgTQtjNnd6E191szi8HXtJS8BYUsJAwVM6/X18ITYMqcIKd22hRQfxKTB4kqGKh2kQ2ezLqzq9VV7pUmkz6YrjhMw+qf2fu01CQ9AgkZdzE37grQpkTGLjOa3/mAlvofd1VCqP0pS8ZtXY2Tk62gNNe/qaF3j7IJ/xXh4yvgBt6N8O7OgRhm4+uSGAFZbkmu4nFUQ20SjzzgihBODnNkFYGEA1sWFTiNcpQMjiTTy89NG/Uzlb/SLKkxYWG6u2A== 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=MUHXYvB2c6IQJcH4KAXG2p/nR2hXSvliigSz42y6AfU=; b=YlV5n7522tMFhvrcVes7+E2wc/QWTgRQCXYEfDGaQGdkv2ubODIhcHaaW5DtFqWMybj/I2itol/w4UKglqo5c5p0ta+w/Dz1pOtBIDn+KZVhyxtbIh2OKR/fwZp/02TAz+LtwI8CtB28+c3n2Zvu7KWf1FdqR2H8QEtzKm2RwqEPfc6inCnEnUI/yLXr4oCgEAqldp2lLh8Pvzp7LZkYsplujJquuBEX0/EQ9b9dT8LnM8X+TFQ95MFfo/mPQeus5cmOxzkqxXFtSdlhPv2YcD+uM3bWzDgT58tblfgl/fkSYhQTohV2u6jfIIEf4A+dT0mRNoUaE9VnBt2Rt3p/+g== Received: from SJ0PR03CA0281.namprd03.prod.outlook.com (2603:10b6:a03:39e::16) by IA0PR12MB9010.namprd12.prod.outlook.com (2603:10b6:208:48e::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.20; Mon, 25 Aug 2025 06:38:10 +0000 Received: from SJ5PEPF00000207.namprd05.prod.outlook.com (2603:10b6:a03:39e:cafe::77) by SJ0PR03CA0281.outlook.office365.com (2603:10b6:a03:39e::16) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9052.21 via Frontend Transport; Mon, 25 Aug 2025 06:38:10 +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 SJ5PEPF00000207.mail.protection.outlook.com (10.167.244.40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9073.11 via Frontend Transport; Mon, 25 Aug 2025 06:38:09 +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; Sun, 24 Aug 2025 23:37:53 -0700 Received: from rnnvmail205.nvidia.com (10.129.68.10) 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; Sun, 24 Aug 2025 23:37:52 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.10) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Sun, 24 Aug 2025 23:37:49 -0700 From: Dragos Tatulea To: , , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman CC: Dragos Tatulea , , , , , Subject: [PATCH net-next v5 7/7] net: devmem: allow binding on rx queues with same DMA devices Date: Mon, 25 Aug 2025 09:36:39 +0300 Message-ID: <20250825063655.583454-8-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250825063655.583454-1-dtatulea@nvidia.com> References: <20250825063655.583454-1-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: SJ5PEPF00000207:EE_|IA0PR12MB9010:EE_ X-MS-Office365-Filtering-Correlation-Id: 3484c45e-fb47-43aa-18f9-08dde3a1f53d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?V3tjvKCZWhsa2ZuTuoEcxcgh3hMZUWJfdT42rKMtyAkhoX/3khn9nCHT9tEp?= =?us-ascii?Q?zni9wP4CzYYRjoAfZXWTVdxhCskzanMdgrCqZPKSQGvwtwt99YfWAxxMYPjW?= =?us-ascii?Q?YNvUEmG5EKDWqRX2bS9qL7plhr2eqm4YT4xWIHRuziShpW8IVQmhikCRcp53?= =?us-ascii?Q?nig/nYgnP5Csa4zftDeDGAUVXogUzqm1n9sZlTTlrki31fbCSxcej5P9tg9W?= =?us-ascii?Q?kwRuVDWu6i7JVaDmy70AsiqoZ2Qv0cA/asevzn5EIiVMyx5UgOAaBv8/HXus?= =?us-ascii?Q?660jjw4eLP96Dg4M/r+mYHcKnVmyqb9qeqiHkrY9fY8Cect+ff+m4MMZBCh+?= =?us-ascii?Q?r7tLzNM43chkgP5EveNICUffCNASXMnfVVPIOhE/sZGwj8DWX1bv/hgryyjK?= =?us-ascii?Q?1p6HQ5EeVLNtd06O+9504jHFQlI/TT69J7iVHCfXj62ibi1hvTdjwpNH60o3?= =?us-ascii?Q?tl1eAx6J4+4G1olR332uO9IFmTmRWegJVpFPznM/VwhogX5c5P3yfJfGzkXB?= =?us-ascii?Q?PLXNRkP8qwANt+0hKLO0BJ5ER97UODdlnwwk43F7/Wf2mulFwxkinPiuGiQA?= =?us-ascii?Q?bkAkGMJfJoRBnfQTINen8ppw+2q/yIJK3oBwBtrrZ/KjfUsQPOjqUL8JWf8V?= =?us-ascii?Q?plKuQUE27Lhbd9JoFtzrgzw2yaayDXSi6sAQIxVHLpNsgGtnLxWI8cHFa2oM?= =?us-ascii?Q?Fjj8ftbF69MADwNsVPjY3rmhmrghCYDmIy/FCaFB3jHOeevQR3jwqWq0k7Hz?= =?us-ascii?Q?VQepkl9yxkcaEVXWRV6CboP/jbMXOqkkSPijoGrNXBDpyiY+t4nD/i99nGAy?= =?us-ascii?Q?RJrS64HDfrJFsKrpMmOnI+7w014SU0eau4NWP6IZxUZxZIjEDKkwi7XR/kyf?= =?us-ascii?Q?HWvYHWHcx9mOTypl5BGIez6LmA3dZKQYA9RloxaMLJ7K6afyX73iaNwXdb0u?= =?us-ascii?Q?MvHv41TG00oVImHmJxz7P8w/7ne9Kv3abeJLFCjEcJeVTYNJfPK9Ob3P1Ezl?= =?us-ascii?Q?UYG17X7/zpsnPdaVT5PJtCanVcMc7mOPmrTyExn1R4QJSe/JQvXu3shkRSIt?= =?us-ascii?Q?Ifj8tTdTMtdNQ1nW1IeepqGx5RG+oNDJEzerOE/vQhmi0e++4sNEot6ibYM0?= =?us-ascii?Q?2zIQaHjSQGtZpQQxyNLtG1Kklv+qNnGBJrUCaQ5GLeG25YlaTpWndWsJmj9+?= =?us-ascii?Q?tlO7ASprBOA2+7OV862CNDcSQqfU0TykRAssqfP+lMVszkXGZZ0FbHwrxFLf?= =?us-ascii?Q?2dpvqVAhkDtrJXjjKbrEQ/my777tKamr8Sf9a1rPjtAr3gozvhH9Jb2nQtcc?= =?us-ascii?Q?PkuVhemQgIl1J69fY9VeNKo6PnTSikF4iG5PEtEyqvx2hD0PPmx0HDmwpRFU?= =?us-ascii?Q?mn0N6fVM8FbnZrnw/dAX/HWU0VMiIjAq0uw6aC+T3luAoc9SFiTtYXOYeQqW?= =?us-ascii?Q?taCCXrWwvJ1Pz2XAM1OIWJHD1+mBQ/yQwxyTZlc4qnPk26tmYkQ9uPWYveB2?= =?us-ascii?Q?WyPLtyfRL2hTESOkPzWLCnPmHh0fnLPpjmdN?= 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)(1800799024)(36860700013)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Aug 2025 06:38:09.8885 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3484c45e-fb47-43aa-18f9-08dde3a1f53d 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: SJ5PEPF00000207.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB9010 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 75d600c24caf..81e55adf0ecb 100644 --- a/net/core/netdev-genl.c +++ b/net/core/netdev-genl.c @@ -906,6 +906,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; @@ -969,7 +993,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