From nobody Sat Oct 4 14:13:10 2025 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2051.outbound.protection.outlook.com [40.107.93.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 1D14B2FF651; Fri, 15 Aug 2025 11:07:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.51 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755256027; cv=fail; b=FZa3zi6+BtkZxd2A2Vsg57vAfkuyTRqlaEravGnAfK2Pddmb7mBxWEqKM79SWi23JHhO+sXT23PKH1cYniiC6bEbjkCtA4+qhW68YFP1Om0/RXGEkbNyjOdPRdptsQpgPS3+upS6w02jLSfZjGn0eGqm2NlsJiTQZAXNG4TeUUU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755256027; c=relaxed/simple; bh=MmZESp/RcUBEK3u4ChY5kF3/JbGzmabvaCzeL4YDrGY=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=uv55fKrJZgs8tRyiJrk+N6tJdy/dxuM0AOE9SikAZtWCCVtMOi++4aTE3LltZppgowQmzJLUxknGQC/PxXXBz5hHj+wEkOBb034PxpFoi31n1uZFm35ly0kIsZDPB+HMhETs3hVMZ5xcY4dNjmzGbFC/sbr869c18e5x8+lKDCE= 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=U/jHzxpG; arc=fail smtp.client-ip=40.107.93.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="U/jHzxpG" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mIRWC/sO4HnSxXM0IOBYSKLSY3J1+VRlpJXDW7YBs5vmbFmhloTQ8WSEsgxzKeuIHp9oTT7OZ4M8WytRcR9AUyuIqP4jnA7zwUVYWoZ9HREApM9SECicQ1K0D1YVJE0b/RVQN/gT4CFWr6yEWIeogPggvIfaRGkdn2c+KNK4fhkSwnZWp7LE025/PT+OCC6rjzVUr2fwEESBgKGpWmg9bwgbuRdIMMbXOMj7etBN5XZ3dNxrVwHMog+Xjjg21YyB4RK9Eq8CPPhbHoX46YaFmXS+igQCr3M+58w/cm+tIx+L6FrlHKpTe3zFYMlGgW7uux1dEpinB89ISLB82CqdNA== 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=h7gsU9cgiDLHrCIXbM+/1MmtirK45v+1+Y/LmunbBLk=; b=iBwIaTURJY0xgf6yGx49EZEWXHCEOe+lHRYGb5XeTLO5tItRKVMV6WB7Iw0NErdYAnJysnFMGdcaQv+zRWiDg1faAAG4MzE7EEIFCGeuJIWkyMXl809RDrdpj6UV3UzmMCavWEdN9wks7WePzySzM5Csz8kBTxZRwfX2XgJtwQyemAvWUHrXxAG2d70xtERFrz+Nvvbpm5jBB88qr59GqPBxWfukc7nsmj3iRkXgnbfDubvVndzwrw5w3YKyK9GzPWa0cCwxDUKS+fccdFIQBy35tFHFJ7L10LmQ88/bj9uupmv9w0gvlEsB8RXn6aRdgqqjns2+MrmWcy62k4t6hA== 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=h7gsU9cgiDLHrCIXbM+/1MmtirK45v+1+Y/LmunbBLk=; b=U/jHzxpGejDTjY4L5txABhAXy/YRSvbXUn0h/M8iraw0NudDgOS9d+/yJifqNX6/Q/ppcy75GSSJ98ovE61fxx7PYAtQCWJVl+CozmQS+ke9eBAavB7NVFEjQsHDWaQctIhcYq6e49Tf8BLiUXYSF6Eo+0KpY8HLQZjT54OFHyNmBw2kc9f4keCeey23MUdPZUrYxcXMWTRPfJJ3cWwuGwrq82BekCHpi1hEn6iX0DUFi8mX5Mq4FdCD+R1M441s5Lk3P4pGynRGCPm6w1OqSDQ/Xmc7yB7W0Mltb/zRDBAzmosKmDlyCK1Jhb5YiV0ou6wZT2BrPYT2bH8vhEVJkg== Received: from MN2PR02CA0018.namprd02.prod.outlook.com (2603:10b6:208:fc::31) by DM6PR12MB4283.namprd12.prod.outlook.com (2603:10b6:5:211::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.17; Fri, 15 Aug 2025 11:07:01 +0000 Received: from BN3PEPF0000B06F.namprd21.prod.outlook.com (2603:10b6:208:fc:cafe::ec) by MN2PR02CA0018.outlook.office365.com (2603:10b6:208:fc::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9031.19 via Frontend Transport; Fri, 15 Aug 2025 11:07:01 +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 BN3PEPF0000B06F.mail.protection.outlook.com (10.167.243.74) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.0 via Frontend Transport; Fri, 15 Aug 2025 11:07:00 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) 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; Fri, 15 Aug 2025 04:06:47 -0700 Received: from rnnvmail201.nvidia.com (10.129.68.8) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Fri, 15 Aug 2025 04:06:47 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Fri, 15 Aug 2025 04:06:44 -0700 From: Dragos Tatulea To: , , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman CC: Dragos Tatulea , , , , Christoph Hellwig , , Subject: [RFC net-next v3 1/7] queue_api: add support for fetching per queue DMA dev Date: Fri, 15 Aug 2025 14:03:42 +0300 Message-ID: <20250815110401.2254214-3-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250815110401.2254214-2-dtatulea@nvidia.com> References: <20250815110401.2254214-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: BN3PEPF0000B06F:EE_|DM6PR12MB4283:EE_ X-MS-Office365-Filtering-Correlation-Id: 526f68f2-114c-4a1f-d41c-08dddbebdc04 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|36860700013|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?iC1fuNCAaAXrwOAP/jm3MTaD58MgL+sNZsrjV1fC8zZXqMMCCopSKm9YLheu?= =?us-ascii?Q?7y9q1lEY4kkftsixAsbWTMvepZ/WIWm7WF0oIt2IHc3NLJZPvdpGd7rovyjo?= =?us-ascii?Q?JTKeofUvIJvGRw8+4YdYzAsW7CMw4I4dTw/B5V0ILLgzyvYtI91q+vU91p2X?= =?us-ascii?Q?Ll+Y7k6/wHihitH2dq6tmf/ppFol3h/f7zBTTKbml+baGfoCDyYZ1oTkoz3O?= =?us-ascii?Q?aOlo+D9NhzrrSvM5e38+GyOB8llbmGERp2iUVwFSMLdi9VNlBJqxtYu12SYG?= =?us-ascii?Q?kUCfmZ7Sn7OTtUMyGnwICrynOLGfmqXvvxgry12CuEBUIlqH15+OeSNK4Gte?= =?us-ascii?Q?0GgiHMtxUgaGRmZNMDBiVq9Uwgy3mZOrisgOua4mc9zcK8vTyTYKgmrg87LY?= =?us-ascii?Q?vlraeXZwEMqsUmI9mUnQ4HbqkhlOOcyD7scHMT/Y3GHx7yDYoEPiY/47NDJV?= =?us-ascii?Q?66I+jNp1rtmnuRNR9lfze84h2Zt4pulRcqWwC6bR2RvH79z5TcYPqtWlwO8c?= =?us-ascii?Q?meYLeG0OrEB4yT/k+uAFv+c8/cTs1ptpPghfDzAFz6KdqvDAoda7LoSFMVwG?= =?us-ascii?Q?SrWgCXxoMJtsBGDWFvMjScl8gOzpRFyZFRqlsSIshshphBrENnRkuPBn6gKD?= =?us-ascii?Q?gDwj1ykZFGGMAeU/Ct/PLMspb8D5Du/RQWzE3qsqLhaFMtFZ0wqunn/aWFOC?= =?us-ascii?Q?FkaCMXOeXiL5pHHNOJViSrVavf0ScYmYY3LS5eXFSKSiPdQ05wKj/bR2tamn?= =?us-ascii?Q?pRpBpFoCfc/EcOTro6x1M+iYG5cyDWSGVZqeCgeiXoEfjW/rMiTAb0Eo2c8W?= =?us-ascii?Q?0Fel4oiIwrZ8+B/CiDQNpRVYpvQ6lX0yNzsCxZeRZANZZ2N8ZgCumYhcj/4M?= =?us-ascii?Q?EUjxdEyTHlDaCGb9tCRgFHJ4HjE/2KpnFPsa61TgmhSWsQ+BvIiuijfCaI2L?= =?us-ascii?Q?e4jn6CvhV9DK6CASyDgPixCsHfNQQeopeO/px5sq/5rWsah2feYtfR7Q7VNT?= =?us-ascii?Q?J0QDqX/L2PmR2LyogCslMI3nMULYSavEdvYpDjEAVi+r9dILOZpOAcz1PG/F?= =?us-ascii?Q?iqM1G/lFVjCCXxSlKE+2Brbff7GrWJwA1UpTBHKN/qikVBlX5BMw0+LLKUvh?= =?us-ascii?Q?UeQ+eakP62h3pOrl6xxq0dVk7ldgAodHGkqrRE+1WbCC57AaMHJukrnTPBuv?= =?us-ascii?Q?x8JOMeEmmzjoMSR1O2PgirALj1pDW9Xe3qD7uDrouxv6ubVJzENMh5u5XbU5?= =?us-ascii?Q?SpKM7QV9sEQAv2nXpR7O8og8FRM1wZxOpp73nRkjV9jDWgxG3X/tdNxt+Tqb?= =?us-ascii?Q?whLdixiNV8AvKmbKXqOikMjuUNG2EQxYKqbgMYnNZIfllAVlMjj4MJfm+qB2?= =?us-ascii?Q?Zc4/TKXxG7SpCPac81YCMFe14qxsebu+Q8nWGyZe+UBwy4uRgXaOURQwWZ/p?= =?us-ascii?Q?xh+kSE/ZfBoyZW2bLIdz0HFvuEO1PTGR5edjXvzFpP13oz8L3sED++Vk6THa?= =?us-ascii?Q?EDstYFOSXH+3cKml3QT20HcLxop40eQrlmtJ?= 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)(82310400026)(36860700013)(7416014)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Aug 2025 11:07:00.9806 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 526f68f2-114c-4a1f-d41c-08dddbebdc04 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: BN3PEPF0000B06F.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4283 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 --- include/net/netdev_queues.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/include/net/netdev_queues.h b/include/net/netdev_queues.h index 6e835972abd1..d4d8c42b809f 100644 --- a/include/net/netdev_queues.h +++ b/include/net/netdev_queues.h @@ -127,6 +127,10 @@ 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. When such device is not available, + * the function will return NULL. + * * 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 +148,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 +327,18 @@ static inline void netif_subqueue_sent(const struct ne= t_device *dev, get_desc, start_thrs); \ }) =20 +static inline 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; +} + #endif --=20 2.50.1 From nobody Sat Oct 4 14:13:10 2025 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2052.outbound.protection.outlook.com [40.107.95.52]) (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 C77A53009FC; Fri, 15 Aug 2025 11:07:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.95.52 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755256033; cv=fail; b=upnsFITm8ZMpXRUNv4areJnjV9jHk7lOMFpcYWLVWov3u80af3MBZxaLfKyx0TaRmY65gFm/M/ivL4eZxPfCB6zVZSueaiVE/hTxQZ8XQs4aGEtUC4R6lkBSy4mhEnYuAcNiDA5n+GnaNS4/q2rGK+t+NQuzVYKQMKhRDYqVBew= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755256033; c=relaxed/simple; bh=Ea2weUBvSqtHmZdSxN7CYxAQ6tjVWDJt6cwFCUSZRTM=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ki+Sm+5vjtelASDyUfd6vMAAuAvw0mREFIRD5SGRc3dGahc4Knfj4ObUxZNYyyVqNudjchRh1AZxyw7O/1SyDyiZL4eP2Ti2dMkVEPEHGPQ3/nsad8uVaAPQ3879Eb3+839b+gnq1UGNZKsvvhH47HL9XnCzl28RKMwoYaDv0YA= 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=VFi1poyQ; arc=fail smtp.client-ip=40.107.95.52 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="VFi1poyQ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iDxGbZZ/AXWFmoR3QbMrkE+3wqQTfZIbIL+2+5dBNhqSazKNZ9I5Bap8k+/LX6XhoKVlBZ0F0Mzb7RbZ1esA/zaBgQ4kK6E8pMKgGLLBPdd6IYX1lE0pRsqPR95bk+fbFO0FEEGIF7ExSezLncSoxAAiMWfEWDWv/YDb+u6ojV4Du6P7zPY25wTjGH+UER1SHthJjgSXrknpY5rE+nAMvSzEDQx5E9APbuIobE5Krv0bT5pliZbr9ui4elPb7Va1NrjpVV6kXHHVVIfGaRrCTrVJVTy9NAGib/BrFEvvuz0TiEk+F6QTR9fEC9x5RtVzBbsIz7IYAEGobpgJzqAPxw== 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=RpfieKjo6B7PUBVdG6CI7iAQwkTSmihTvDGHw5kdMys=; b=a6XcqrDa7texCY9huEnHTpgloeU70f9pgRBI/pLEZ7mjn5ynmAB9tiJWMEfNqhqNt4l8srYBkDcTKitgu7gW62Ux+CKuPFZ83u548oLCLXxAkkzgCcv5nUUxQIG4FxR0Us8efLRcR/o3OpfNjgG9PK//QyZsE3LRmzqOmwoCnQ3Kdk8q1QysnQIYNMI7S2HFaO24vpTc2UXJnQPLBZgzlfxs3KZBqE/MYsRJT6LDaDE/gDdWqAX+Sf06Uh82IF1x0V4aXeZhU6v9d513C70m7w03ri0/Zgmr4an6RXPye7H3gxGepVWdXOTvEUwD/qd3ChnxggW7NZOnNIWbu5gTRg== 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=RpfieKjo6B7PUBVdG6CI7iAQwkTSmihTvDGHw5kdMys=; b=VFi1poyQif4HzBvrnxUgGIMyToxeoPGImiRR/XidCNWnUwZnGd2Cct/ubU1YfIRTBdwljEFyPGeUC4wehCia/oiPGNSwGRFjXQPwQIKJNeVQVDr1zs3bGiZOFsKLhmaDHAxV7erUCV/ngBAbM+rDqIBdVSgwvaL9kWteXIkYPQXKQjKp/qfiq7Pyogxic8GARqr/wd7roDKeeRJW14Rvypyowo7XCh174uP6vAx7WWCBWpdlXAhmYhyE3e70Xh7WVzuxxj/koORo0P2HZoM4bI0Q/OVDHVtLajWtThU2tY8rUdcQFuXGVdpwSURzGbvAv/vGcF3Uktkuai31t5tKkw== Received: from MN2PR02CA0002.namprd02.prod.outlook.com (2603:10b6:208:fc::15) by IA0PPF002462CFE.namprd12.prod.outlook.com (2603:10b6:20f:fc04::bc4) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8943.35; Fri, 15 Aug 2025 11:07:03 +0000 Received: from BN3PEPF0000B06F.namprd21.prod.outlook.com (2603:10b6:208:fc:cafe::d2) by MN2PR02CA0002.outlook.office365.com (2603:10b6:208:fc::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9031.19 via Frontend Transport; Fri, 15 Aug 2025 11:07:03 +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 BN3PEPF0000B06F.mail.protection.outlook.com (10.167.243.74) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.0 via Frontend Transport; Fri, 15 Aug 2025 11:07:03 +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; Fri, 15 Aug 2025 04:06:51 -0700 Received: from rnnvmail201.nvidia.com (10.129.68.8) 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; Fri, 15 Aug 2025 04:06:51 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Fri, 15 Aug 2025 04:06:48 -0700 From: Dragos Tatulea To: , , Jens Axboe CC: Dragos Tatulea , , , , Christoph Hellwig , , Subject: [RFC net-next v3 2/7] io_uring/zcrx: add support for custom DMA devices Date: Fri, 15 Aug 2025 14:03:43 +0300 Message-ID: <20250815110401.2254214-4-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250815110401.2254214-2-dtatulea@nvidia.com> References: <20250815110401.2254214-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: BN3PEPF0000B06F:EE_|IA0PPF002462CFE:EE_ X-MS-Office365-Filtering-Correlation-Id: 8f336f0d-d929-47a1-4823-08dddbebdd7e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|82310400026|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?4Lhc3BCT6sqGlfBSKGWkEzK0Wy4giIWH6aJBpeBpffB9iQnHzIimzZCFkWCq?= =?us-ascii?Q?GrC1Xvlp5WAHxQvb8Mwi1AcbF02gwqDWov+23oeDFpn4DHrUZZOCyZJLr1Q8?= =?us-ascii?Q?XQzg4P5/GdRgR+bVKH6crngFt8TMd8fvn7y88oVppVi6qi0PlnGk/TAXiQpC?= =?us-ascii?Q?BP47GL6XXfBmidU9xS5R0ij/eO7Mfe3ttdO/wOnzLiMQcJp1Hnq6Fhftrxvs?= =?us-ascii?Q?k8LlXBPxtkz/0DS2VAFf+fhxkTGGW8JdYXHPdMQNCtsY9CpPAZl4ujmq9vZ1?= =?us-ascii?Q?jgt2pHoOWZb+dFk9TGB191A9fMaiH4M+VNp+Jc1qPwWTdx6Nj7eb4wKasoij?= =?us-ascii?Q?qWOGp2h35kzpxU6uNCO9EGrLzygfUR635FZfnrJaviUODBF123q5eTKpUwPf?= =?us-ascii?Q?Uv26/Zf/BrA+wenM0eaUg8vx0+TuiCaDgIYC7g0DsXKN7lJhv/AvOV0McGUh?= =?us-ascii?Q?k0C+9umGqcj7XGB63UeyCDFW/pJlIU2xGsVirdd/ps59EPNdZRPn3rhIzG7c?= =?us-ascii?Q?FO5U3n4rvvbi9guEGrUAhfrioltg4sxeD/dRGHLEbQoylpK9cR5KCV29VyOU?= =?us-ascii?Q?gamW3eNujJ0aReI8uImcrT8o4urrBw1sR0ECvM8NsWX8V0p5sSrsWi5lVKil?= =?us-ascii?Q?AJM8/NJUTVCKkkrXuBakjeok7ZgtuTM3LU5w495nEga15j1+L4DoAV+htBpy?= =?us-ascii?Q?zxQujyhi3BwT9Stzqk2BRioIJdiJFilc8tCDERP/9EtiB47KuRyADofHFtp5?= =?us-ascii?Q?auda0US4wOcIqM2qbIMjj6dchtQuGfnHRE29x2Jpx8agYwmCSjnousvcOdr2?= =?us-ascii?Q?eYDWA5+3sPKj/+9zWYplWj/hNrfih71hniQ7HZK+yCdzuMTm/y0GwJmGYfHS?= =?us-ascii?Q?01Bj8qiAF4b4nFnXVsv8QTCJLg/061G4GlYpEX1RmTAOretg/Of3UnbD3WiD?= =?us-ascii?Q?nJ+x4XQLwBJKh+YsSotSVDNdw2MY98Tt0Ufw6wyvnzw9qYRUwXll5pqNqATe?= =?us-ascii?Q?R8sMhE1j6wm9TFmePFgmStSO9QWXwNCo+mvAt9p6mxxqGPXX/KquLyuMVKdI?= =?us-ascii?Q?6jjvv+whhedRJoOYu9thJNiu8O8BZ9YXSZE3ixTArg2u1AMD0GMabu5PCF3W?= =?us-ascii?Q?h827JtdH0KTWf6g1VBfUwHOHX5beY/qmX9Di3sW+cA36Rn9Y8xFfcJhJSVzf?= =?us-ascii?Q?52fd2WXLvJZT2vfRbpyZ+QTFRqFLPMaFBsz7h2XNMEAYk/KjnsNWs14okLIa?= =?us-ascii?Q?PczH5bi38BTZ63bBKuHiT0qqAltilT3x2lfxd6vMJivjaenr2vmUK426Kk2S?= =?us-ascii?Q?/yPLq81YICKnncdZXCwFNwEXtGJ37upbg0CH1AwiB6HtcMM7b62UO3FqCpxA?= =?us-ascii?Q?j04sRCV/9pBbQhEu+W3Gbs73Hyc2?= 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)(1800799024)(82310400026)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Aug 2025 11:07:03.4573 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8f336f0d-d929-47a1-4823-08dddbebdd7e 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: BN3PEPF0000B06F.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PPF002462CFE 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 Sat Oct 4 14:13:10 2025 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2078.outbound.protection.outlook.com [40.107.102.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 1ADBE3019AE; Fri, 15 Aug 2025 11:07:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.102.78 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755256040; cv=fail; b=pKqKrJZH0i/tw5KLvi0NQ771fa2cakWsZrq+69dVa7pUX28nrsZGsIGbjV01Gw0XaEPDQ341798S2866dTkduLCnNiHa34f5aQCpA+FTHQrJuxWoDVE7QcFRAKrCWtUt0uPn73iCrWLvO+1i3MQ3JAWfrGV0+vesQVNp7hHGvHE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755256040; c=relaxed/simple; bh=00rV111LSEVx2Mf/oK0iKMOcOfQGNETUopTmcoC+FsU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=dKGOFkS4XVuhprz/tJYYPZHhkPzGOYm1aQUgRmSog4vndco20MxOSkDMlhReI3OrKKHZY+TAU5rO3yhaEC6kvQwRkCzEWm5W9TeRy9BPGq3bwoW9hToM3pm2XsCyGjckbe2Zx1yTTQjNMIz+LvbKFeA+yZeKWTYDNMDEOfCk36o= 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=gqUK3fsB; arc=fail smtp.client-ip=40.107.102.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="gqUK3fsB" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=G4bRwF1EK9HULM+TbED41Mdxp7Rq6L4L6dDMsYObAQTgrLM6wW2x3MtzsrzLmHZ99E7pRuvJS2mvGfrTOX6qVpajcxAKSad7kkyLeJAn6DihJ5mwVYxaiho/5kCl9v26/gXKs0uNnpPsafdvAXN+P6ivOk/8Y2lI0qHiQ89oTLC/6qV5y5QqLKBRe/9PCHhRVf5lHsPPUc0ETEOCICwPnaClW8nM74wT9ZBAiimBHyOyRwLONoFBBEgezo9pfOqotxhcUKiiZf+ufm3j8AYsR3t9TEfa/8w2o/Za+zrUzHijtO0qhuxewfFc+8Jpey/SV4qgPV2mUhFhQUL3M3WEJg== 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=UiDFTzSGyUxM2Iu8qO49DbJHBzDrrYTmRYKBQsjvT18=; b=pKwKnRl+sVjVd7sEF3CCwCsN73MVksk7fLyLfc4ansN9fEUzMpQz/3efY42DT/AGhc1lySxeGa2T3LvSOWeXBsu5PjW+zcB08LjXwzbi9hdARtmkrN8HfxVbjo/Ys6dPGRalLx7VJn34qDvkmRS7PU6zEYUTNLUCj2ZTktfql7Am2E36TIwcgcqWmvUTTNACL2w+35aBgjvBHmfVDRBkiNVRgLEDXvIEMyOJsgUg3YJ/DFtjd2I6SJKBNd8gIEBXBYJsxO6LKTIgHKWJnn02Z9G1D3zU4gMV+bJMujSXCE17u/tQSi1mDz20FSrxpWh3y8DMk59DB9bwTbNU+eMvcg== 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=UiDFTzSGyUxM2Iu8qO49DbJHBzDrrYTmRYKBQsjvT18=; b=gqUK3fsBkZ5cKsIrQr3jmva4p1P50CFt6hA/+zGDYkGphjahn2j1Th51eZQurKGNH0RfQT3EYzd1NLycdLlhV3npX4iqle4tH+HNJ0jfThF867xYi87DOi470Vi5t45FbE7zzriG3NGi+lzVOtxkuhbC/YlcpiAilfB+K1q5lwdtHRnzJeAMx1Kh7iT6s53c1ZYP9V50PTkN6PxIrNm0uxRSFjlwQQX6iAdMwCKGlqGwVs0xrQAIndLRmUX1QpYopFaxj3MugrY+WY2nuJ0E6QhZ7VfqwOtWx6fKA30HpTaSsdytBKQXfqF/EaeFez6qnchLWtF8dh8emrK1e05/uQ== Received: from BYAPR08CA0007.namprd08.prod.outlook.com (2603:10b6:a03:100::20) by LV8PR12MB9716.namprd12.prod.outlook.com (2603:10b6:408:2a1::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.18; Fri, 15 Aug 2025 11:07:16 +0000 Received: from CO1PEPF000044F4.namprd05.prod.outlook.com (2603:10b6:a03:100:cafe::8) by BYAPR08CA0007.outlook.office365.com (2603:10b6:a03:100::20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9031.19 via Frontend Transport; Fri, 15 Aug 2025 11:07:16 +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 CO1PEPF000044F4.mail.protection.outlook.com (10.167.241.74) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.11 via Frontend Transport; Fri, 15 Aug 2025 11:07:16 +0000 Received: from rnnvmail202.nvidia.com (10.129.68.7) 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; Fri, 15 Aug 2025 04:06:56 -0700 Received: from rnnvmail201.nvidia.com (10.129.68.8) 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; Fri, 15 Aug 2025 04:06:55 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Fri, 15 Aug 2025 04:06:52 -0700 From: Dragos Tatulea To: , , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman CC: Dragos Tatulea , , , , Christoph Hellwig , , Subject: [RFC net-next v3 3/7] net: devmem: get netdev DMA device via new API Date: Fri, 15 Aug 2025 14:03:44 +0300 Message-ID: <20250815110401.2254214-5-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250815110401.2254214-2-dtatulea@nvidia.com> References: <20250815110401.2254214-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: CO1PEPF000044F4:EE_|LV8PR12MB9716:EE_ X-MS-Office365-Filtering-Correlation-Id: 90f009bd-1995-40e3-beb0-08dddbebe4f5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|7416014|376014|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?szQ9R+HEHcn1LFhKqvnFiYt5RCQpvt0lpnWVeeAHC0Il55QZ3s1duAS2dFXh?= =?us-ascii?Q?t0ooJ0zYeeW1aUg6tdI+wN3rnFzAEEjFq8o5+842E857X+t4KAvosI6gyksS?= =?us-ascii?Q?sGsgnbW0daFauNffR9b7gisDoRPPQ4L73vGLalvCMTk81+GEub8zF9eKKt+K?= =?us-ascii?Q?YwG5Jj23RR1/Pkkp3eeTE37zxSrLCLVyR1gXqc0wGL8vTkKwwgZxQVtrbPpV?= =?us-ascii?Q?mdopRnRfgyFnd2bJE24j+V+1+wJxM/eYiZUds49RGGKywA0992hs5pHInPPI?= =?us-ascii?Q?Lf5NiplP7wOoYsuSMQL19vX0Cl2BgdCA3Oa2FS2F4bMJWtZvljI+gdosR+FP?= =?us-ascii?Q?xQUhtZihMIyIkv0+uPAxonRWArAcK6SEn+nuJC//YsRxNZBBc8blSLY/mdDD?= =?us-ascii?Q?8PmTzdE5Eg1bngSylprdwyHAK5E3wRpKQ85IZG8PWbz0/Fln83v8Fy37t6ZP?= =?us-ascii?Q?Mkq3dPy1RIU2x6U7Ih9JxoLboIu8eJYMRNpKGALgfK85daHszrxfjVUx5h/L?= =?us-ascii?Q?PT6c8e1oVL4vS+P4PfRVFa1VnfNINwDwl8RYbg9/KxBwOQMJNzMmJLEOQv+M?= =?us-ascii?Q?jRyySGhbMg+tuSr7IVmPIdbVUUtfcOBqSKSWktrudgvKPUUUx0oRUhd/5a5o?= =?us-ascii?Q?fSnOF8FnZcfhCEOAfRHKDOMuJejxxdcUD85Dwts18WnpiURU2Rw97LuTLvYb?= =?us-ascii?Q?HY3LO0rQWuS16yhllHQUUqJ2hmM50BA3GLeulZURCT4E/11iKwB06fdqP3kK?= =?us-ascii?Q?mwIPkCp3OiKEqA/6HSHLAynbVP8wWFJPWJvBA/HANQ0dz3t5bzBwDFKtzOCY?= =?us-ascii?Q?gmbFfwLKiI+a9Xk1t2a2O86Pi33MFpvsAMfBTIWOPAeleTZDMxqHfMT/JtY4?= =?us-ascii?Q?h6FttIE6uMN4qwah1gDh9v9j8CNEtwo+2F4xOUTpvN8poMkoT+BHhNljZRC7?= =?us-ascii?Q?JzBABfK3azEdrme9gwETUevtfYDlMdZOEZd/igRNiOoG+EEUkaLFVaXmKhfq?= =?us-ascii?Q?eHM04H6TP3ZlzvAN/wYhhQdkBHtyIrgdu/Dww468P6EmmnfL9POdKtCg6NAe?= =?us-ascii?Q?G0zp8SrUpTxcLeU5XwJhOYUPpKm3kJlAYutnc0Xg9LAXYKXtxoSkV6fLZ5MQ?= =?us-ascii?Q?5ZS6NbsI0cG0xVkpzbVe7w+aMcfc3bTGNTEGgIBRcL/hVuD2dzRsc/pNhKsO?= =?us-ascii?Q?TzEe7UWulkyuw7U4g0MSmnL7WWypky7+y4NP4mPmMThmC/59+gJSMQHR7WF7?= =?us-ascii?Q?nG49LO+Dp2QbLVPxSJ5Xq5+kl/6sGWO5xMfKEkJ11oI1batKdkX2rZJCb3FX?= =?us-ascii?Q?0xe/A+oxV/e1Hi9h/Dm5VqPQIWPiUftPbxTrlzqMuuUQnVZtvdGZXN83IQV/?= =?us-ascii?Q?q9qNhTzbAmjTcwXpXTA+PVHVNLRJVko8vYscOCZXmHuGN5YiIKCl0qH9ZvgF?= =?us-ascii?Q?OMixyd99KFfyE+2TwWoIlayBoHbsRBBUADBoQZzj7VkSKlDiYe9oxgYbn/74?= =?us-ascii?Q?RzTd0WtQ1yNMDrkhDV2uNNAeugi9zApFRG1J?= 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)(7416014)(376014)(1800799024)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Aug 2025 11:07:16.0021 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 90f009bd-1995-40e3-beb0-08dddbebe4f5 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: CO1PEPF000044F4.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9716 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..d66cb0a63bd6 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 Sat Oct 4 14:13:10 2025 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2079.outbound.protection.outlook.com [40.107.237.79]) (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 03A7D28504D; Fri, 15 Aug 2025 11:07:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.237.79 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755256035; cv=fail; b=nnIi2/RzZT56vfow48qKaGXl6HkrQgTqw0aMflZlQlPJHHDAfwaw+6rrLvKpwP6Y/ealdCGCwcHZ8lZCo5xBoaVG9SlYGnhGbhhpyboY+SQpfzBSekxWbVhKA+v0nJyRz6tq16rx7TNLYZ7kYAf3QTAcDp5vXNTuE883fF4ftb4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755256035; c=relaxed/simple; bh=jfsmS9T99w2+ci2dy/ZkXSNqDsqEkEEq6QgNOk+9MRA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=bDiPidStcqeeB74QwIP/WaJlra/SJ44Hb5EtSbXixQaK3UrIxZPhmfx14v89qRNbr/7pDx5GCPi+1xfLIYKB6UfIopco7JYfHAk0t6MQ72pBX59eNO7PpM5qBxa1KV/1bPDRYetpLZyh+VtVSVhINf6g80Q54+8HJqR2ukoRWkE= 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=aWxTAEp8; arc=fail smtp.client-ip=40.107.237.79 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="aWxTAEp8" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DdSDisuQW6BUrKp/6SLbRqCw6EWEiiW5nbMzvYqoVxWoUgMnSdaQEPq6SzvHhh+X4qpdu5FGK7U6E8rWaRsATYtmHAw+n3FRLCdaYEt3UGZ7nL82/OUJtIh+SEZsKDbEqqBD5sKakRl4n09KsOLCwu5EqkbjeNRSX/vME99XFqHAqMZfN39XHGUvMQaC+gSE0AKZEYWkU9ESWHkRb5MeYJbzcpM7BgJiHdBiyLXI8xz+POEMAheNvuKzC/xulUO4IheYlwNm0bBa3aH7A53b0NfEnq8jeRzKODaWy5rBAatqPc1RVX1H7DQMBMDQYjpilKWEX8VAHhyO+rTlkB/hBw== 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=wWzNWqyjdHnGY6e0zsVptgNWi3yBRfF3piwDAgvJf6I=; b=EfBpVRIGgGc9pzJye3NjcNFz8pxP8SpqHvRoS0W20sOYp39NcEu/mfFVOcZhM2cqhXu7OcbzoUeHE8Qcb9ewVPKboXKln8EVdCQYn7S8y6y/e8ZR4Tet5DqFkdAvFRhRNY5LJb2+UsNujNx6kBfMqob6Exxo+InarDS2SW/J7fnN6hvfrbR6zoC7b0HmJ4MvUSXdeYkuWrpAoK/8+bMg+C/dzI6KT4bywoaReTx1LfkHC9TAfdM12f49Vxsuh8rSSkD5BQlYaiKLDg6MCu9K+d99LH0vLTBWFHh4ZqTe4BX5v36R10Ng9Fj3QQNH7dpeatUEGHk6lakD4FWgEFbmUQ== 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=wWzNWqyjdHnGY6e0zsVptgNWi3yBRfF3piwDAgvJf6I=; b=aWxTAEp8tj7GQ/CTInSx/Bf4leWzBAV5fEOcGIKfQPY31AATTi083UKS7RiZTTAaIaMEors/JnO4L0wI3lVNeiYG73XFt+HbcEyvTqH64IDponZPGrnjrfOkZVLjvSmOJg9NINwr0goynyRxJMb6kHyx+aP+eO058O2TdcBuT+jBBoVqV2j47BKmUetMQqZLpnUnywxdTCoXYE7ndEQ1GD9bOylyy2+8Ll/SI8270QmmsLg75FZcXWTj0/zvZvy/l4gt/KJOiI237mXFaAjRxX50NeLkz2Qjxq7+7xk7TjPZOcHYpAibsbDLKlQ17GEHB/pxaAXb9YagmIAPJoLP/g== Received: from MN2PR17CA0027.namprd17.prod.outlook.com (2603:10b6:208:15e::40) by CYYPR12MB9016.namprd12.prod.outlook.com (2603:10b6:930:c4::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.13; Fri, 15 Aug 2025 11:07:10 +0000 Received: from BN3PEPF0000B070.namprd21.prod.outlook.com (2603:10b6:208:15e:cafe::d1) by MN2PR17CA0027.outlook.office365.com (2603:10b6:208:15e::40) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9031.18 via Frontend Transport; Fri, 15 Aug 2025 11:07: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 BN3PEPF0000B070.mail.protection.outlook.com (10.167.243.75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.0 via Frontend Transport; Fri, 15 Aug 2025 11:07:10 +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; Fri, 15 Aug 2025 04:07:01 -0700 Received: from rnnvmail201.nvidia.com (10.129.68.8) 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; Fri, 15 Aug 2025 04:07:01 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Fri, 15 Aug 2025 04:06:57 -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 , , , Christoph Hellwig , , , Subject: [RFC net-next v3 4/7] net/mlx5e: add op for getting netdev DMA device Date: Fri, 15 Aug 2025 14:03:45 +0300 Message-ID: <20250815110401.2254214-6-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250815110401.2254214-2-dtatulea@nvidia.com> References: <20250815110401.2254214-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: BN3PEPF0000B070:EE_|CYYPR12MB9016:EE_ X-MS-Office365-Filtering-Correlation-Id: c3388816-e48f-4453-98ae-08dddbebe1a0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|82310400026|36860700013|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?+teRZeYYkt4Tpv2485W1BLZmeVAnNypqyvDYXR77VagVhpql5C8a9uQiJTW7?= =?us-ascii?Q?PbGAl+23rPmAoDfszpwsYTYDK3oaEiPbYJB7TJbAUzP11MsmLT5ZLUho01Ec?= =?us-ascii?Q?SRa3GLmmp3cdlBKRP9HzZAv3vllKtFk729qFS4b4CuTRtoTXvAqbGK/7ovxv?= =?us-ascii?Q?EY2bcYjfA1Y/yOg1fvSJXrAB+f9zIs2LFhYoFYWrPFL+PEf2fiO0CdUzfzAy?= =?us-ascii?Q?1q5mZXv240tf0R67N3wegZAVBT3IUWfzi8eSo6b/MBtQ3tpOt7orPpSN8iI/?= =?us-ascii?Q?+6YD9RDq4KSb7FwMTyDt8hjo+XlJHv53ZId9Y0JqptFQvHtCzy0I/raSMc7z?= =?us-ascii?Q?FViaY6Uv7iaz57qrMIWfGUsXoqheGzMMUY8MEPb3Ve/DoOVAdW+Y8fdTecMU?= =?us-ascii?Q?n/KHwy2a/y9Iegjfkcv9UENaRPx//zlCzuLiNScd//6HQbvXR+vOBP81BOAX?= =?us-ascii?Q?Ox9jLWAWm0eUawl/xllZ/CGXboQKiNKFFSkkom3ZNBM3F0kh28Kvh77koXpA?= =?us-ascii?Q?LgyLTaNwTDh3jI8OoXEwYA4nLWNlNSg0zcyqJhp7Ag7Pan8ovp09UGrD05+1?= =?us-ascii?Q?zQA3MDg8QAmXBDQRPHrCeDl9jQHuxdKunEm7w7ksl6jhVujWzfX1fRCiMf2e?= =?us-ascii?Q?+KC6h8C/YgGa3L1UofWX4U8tWvMS8f2jAugJM6p+7vKcyuoOwwQCM5hUvuNg?= =?us-ascii?Q?gIjQGBtyqwmRgq0g2YSYu28GEbZnxRzRy+PW+BGnragfVg/ZxLFWMJInRoas?= =?us-ascii?Q?Uoxw8A4tHe0JCFddOtBA1Fzi3VdQ0c5aAyI4IrwqwucfZ0MK2TTPlEgCDUfc?= =?us-ascii?Q?hwsMQa4vTKsa9j/WpdcO0FBgCtf5omNkESA0NC8ebvUoZC8ka+LjtM4UbKHD?= =?us-ascii?Q?rsX6IZPCc3VbIjZ05oW4+B5+dKyvaF7YgwfK28LBX+o2P4DYvNCn0fMkc003?= =?us-ascii?Q?cjK2z0VDd8bk1Is91B8skKiEU610heR8X8aRrsnfoxZKVMwoJ0276wXC1iP4?= =?us-ascii?Q?nuQgoNOCS64aWt9EFA/bEf8lD5r3/UjGsUdFL8lmAlmsYSE0co/SgPrO3kUU?= =?us-ascii?Q?C2zhl2msC+wLaEg0etjxJOy9Y7AFnq0HuLVVhRp98APOwor51WGVFgfgpzqF?= =?us-ascii?Q?wHsFVFvVOLdFoqoO49N7NvjeAgyLcsw7kAd7KdtvL41Ed2m3HmC11DF2vBoI?= =?us-ascii?Q?YU4MWMX9EWBi7HGPy/KlxtEJom/i7LkjQROPGoFptOYAK6ar1Y8aqOjt3sAQ?= =?us-ascii?Q?rxD+00l+KBGvYT5qn/BXOZR4xMM3z+VpDB2qsKZW4iplyz2SS7IuIhG+iEZQ?= =?us-ascii?Q?QJlhewTyCu6ROycCvdVTnjGh7oFci5Q7Mldv/aRQeonWbyvByIugYyumD2lc?= =?us-ascii?Q?N4D5xsGJCXg4blFLrfCyHQIuqOnqYxCw8eFjJsqSeUtCV37LfS/ioQP6HMts?= =?us-ascii?Q?jjB5sOMm9Ega7Q8JtplFmsp99KCZGClE1zXGXI4oJCPoEiSC/7ekTbIqWn/+?= =?us-ascii?Q?0nI+hL+OPEVJfoeVe2NO7XonkBRGe56ZBRQycCm7q3JxJdgZZrLrltDreA?= =?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)(1800799024)(376014)(7416014)(82310400026)(36860700013)(921020);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Aug 2025 11:07:10.3760 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c3388816-e48f-4453-98ae-08dddbebe1a0 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: BN3PEPF0000B070.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYYPR12MB9016 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 Sat Oct 4 14:13:11 2025 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2054.outbound.protection.outlook.com [40.107.223.54]) (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 9232A2F7461; Fri, 15 Aug 2025 11:07:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.54 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755256048; cv=fail; b=Eu9s/EZY8uIKJHWKb/c7BXNtjr06rWT406ByblaubT3dssa7riMmOO6jEfoPhv6Mbi9VDYNYXE5gXkbwKrUa+iv5q5lrzc/rAvsQXHikQ7ANB5I/sCEqHm5y1o9eKEQp3QoKWA0YzDUUS1K6udOvRSOb2D3126DpXcLoupasp/I= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755256048; c=relaxed/simple; bh=P1gTmVJtjA7yANqS+cFN59OaanOX84cr+5fG1eI0ErQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=hfIioz0/0yAcL7FjhIddIAxH6sDCJRmt5Y+xVRUqJnfggsyyJWCOctSxPYtfwZoTJaxPzPs1FBhowM8k3eT6fHigIdW9fXUqNLR4urNbp6xXSsFS8V8HrtLSPx5VYWpq4L3UHBnFgFlh0EyFdeJ06mnDk+Vi3J3OuTmVboLAgO4= 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=LgZzdWyM; arc=fail smtp.client-ip=40.107.223.54 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="LgZzdWyM" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=w25U8DJWaLksKwWjky9xgQFam7Dd5ezdCUW9fX52R4JgRvAdaCzW9Ny7hql8bc1cm72ZS+ozZa4kdEDWnyRIf14JgZ7e/h0WY1Gmh2fPc65ZJkcobgm3sroHIwzT4SXM9rrYDQbInslV02uaZUwae4wgcJ5Iy46c2/BD6PkVv8+kxPxmyOrjf1dJtLxk8sKv59Bmm+nLu/RrXIyC1OfVjvtJH5/t/ttK39iSxUuDEhrJzosw2jNMorC24b8owOYmbQELLqBbij5RoETn7gA1VIHYr/CV3Pk7VKVpD9HvNb0EMJ0jTmJvy5XCCqVIsD2MPIWcVGvxAgqcLkdhZQscMQ== 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=55M6reHujLw13YzWHgCtkwgAC4v2MtLiwqgXE8G0+oc=; b=ROF5ihKsfRfXFJxJ7UCtya7Rn36Qn9JzMkd6TYhP1MDdsdJuVm6S0roFrnZJkpcUx1AlhJTdEZL37TuLRarciem8ior5E3UxOrwUtY7lvcBcYyW0B9FMrhRgzshdbIO11Evr6gJfRA6qUgrpsxW4/bnuZWxA7AV2QGZut+sb+cOXSaxt4VMLBTa7YeLe2vaabEiGc8jiP9JqYDA99D2zzEyTDJ9JsAPWGxQTAAo0SmrE9Tn1TZzFn3uk0aY68vH21x/3Em+01QJLgoodT2DSbJGX+SUbIyoLJl1HPmW2FHg/MmUUeuOEli/Cdce2mXX4+ZGlbM7PUeX/lrmQEVSW1Q== 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=55M6reHujLw13YzWHgCtkwgAC4v2MtLiwqgXE8G0+oc=; b=LgZzdWyM0/Kel8t2f8+G9RwRBr8WWgj6b2WO9TbSm8jRgrX5F/PoN3YZmikHg8TCIqsFGWQ83RyyFGoT8NBaEB8OimVWxkvpjZj+y3YxxjniXsQOS74qeJgeyamboNUK+/FtryhJR88tJIkWxDCuYCXShjEBRf6f85f0LzVPkt8Wwy6e+nlBD5znLEXgtVTrQocUjyvWMqyvI0MmJQR6n388suX1vHHa1jVUQfAgW7YT+4Wn2vQrd0J75Y1ITB7JlOhPSBnSSZN2m1Y7SgmyhBAXmmnMYsB31xPo7ieoXaI0sYr0dHUwTef2aQC4dboGtIvZ9h+8IcK5bQ/oMm1g5Q== Received: from BN9PR03CA0624.namprd03.prod.outlook.com (2603:10b6:408:106::29) by BY5PR12MB4194.namprd12.prod.outlook.com (2603:10b6:a03:210::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.18; Fri, 15 Aug 2025 11:07:20 +0000 Received: from BN3PEPF0000B06C.namprd21.prod.outlook.com (2603:10b6:408:106:cafe::6b) by BN9PR03CA0624.outlook.office365.com (2603:10b6:408:106::29) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9031.19 via Frontend Transport; Fri, 15 Aug 2025 11:07:19 +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 BN3PEPF0000B06C.mail.protection.outlook.com (10.167.243.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.0 via Frontend Transport; Fri, 15 Aug 2025 11:07:18 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) 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; Fri, 15 Aug 2025 04:07:06 -0700 Received: from rnnvmail201.nvidia.com (10.129.68.8) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Fri, 15 Aug 2025 04:07:06 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Fri, 15 Aug 2025 04:07:02 -0700 From: Dragos Tatulea To: , , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman CC: Dragos Tatulea , , , , Christoph Hellwig , , Subject: [RFC net-next v3 5/7] net: devmem: pull out dma_dev out of net_devmem_bind_dmabuf Date: Fri, 15 Aug 2025 14:03:46 +0300 Message-ID: <20250815110401.2254214-7-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250815110401.2254214-2-dtatulea@nvidia.com> References: <20250815110401.2254214-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: BN3PEPF0000B06C:EE_|BY5PR12MB4194:EE_ X-MS-Office365-Filtering-Correlation-Id: 5e88e65f-8e93-403a-4eaf-08dddbebe6b0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|82310400026|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?4Dwf3EJ5yxRmAZ44XZQurB9uFCweUvejjnEZGcKTYN8EN9OCaNX13Z5KSFAA?= =?us-ascii?Q?54oZA73svpqLho5qy/ipCF3syZfVZyKEteIeZ3wUB1BYx74jdOp0K/HSy4L3?= =?us-ascii?Q?OSfRxGYPsVin6VUPC6KV3I9T0JMR+GOk83oGbvP6hRN80Pc2bcUfBc+oiFb/?= =?us-ascii?Q?LBbwnirtSAnB0hJqNApa115pdHcwO+1RUuMT3kCAsWfOXq52kORT5xNEgmO/?= =?us-ascii?Q?uaLqX2MNXLlJLLiBbIYX4Uy/9t5aWy3v5oO+XtDzHbLiggoF9bpsaFwAHgG0?= =?us-ascii?Q?W3CzpPvPf9qIdaLEwM5NLohNBapqLkvHw/oqSgMnNTNLKJVS1mjFu+knYjyO?= =?us-ascii?Q?BL9SKf7C6eu16wSVicao7yIoMch859fH58U9grT/P8UdNmt8+Ja3inTY9Dkf?= =?us-ascii?Q?LaBfet3e9t5YJgwLlV29AUsQ5VjkTOmfkcWMvSXi8wAQStrvsQN3R17LKjfK?= =?us-ascii?Q?r8g8yIbl2wFRVlj+Vo4c4SQbqHNEz9SFSMPRmSMB2WO4DhFnXODBoY4c+tU6?= =?us-ascii?Q?zBqcMWnzwJtexv9dD+Ak3FiS/4/P9xxroJvi/zpAVQqtGJ45hFIw+7BlGpiD?= =?us-ascii?Q?KIyRe9PHF7jKWE+2Wu4xj+GcuISlTzyq8Svjs/WuAjzKxchAt5KO1e/V/wmA?= =?us-ascii?Q?06IdWeDqzoCpCccz4viRXptyCz7ihkWwSbXQhB7YVXrw00PeiO/nFCgoYV82?= =?us-ascii?Q?EJEKEOuftuAfLWpUksAUaa7htwmSEuMtBXXytd3w7TmeBCMqGm2FdBRlCxMi?= =?us-ascii?Q?9UFb1ZHAE9jwxnAjZd4tFyfnDSI7XJcM1GS+bwefq5Eu6TlDJ1x6Ym6nNFjx?= =?us-ascii?Q?c49ccR+aT24YlYtEwbVET4t+7v/4FQF3JTXxUtZdcjEeQMYgd5+oVCNTS68H?= =?us-ascii?Q?dmMiajl4blRMCxkjGItW3K3wvV7epYzJ3z05hOFjU0LgdTx2RZpHuMLxv6SR?= =?us-ascii?Q?M7odxYFaymeySBi6rha1GKn0H22tl4yzK5nuqKrXa/ADnQCiDBx1rPNaIdNf?= =?us-ascii?Q?K/u0ah4oEZbjCImBlfRwK7OHVh0Cwn6hdds/rtbCi5eT5uXk7T2CjTFFXnVe?= =?us-ascii?Q?zxnxVsXfbVW+p67qNLjiUFfxDCw3Q1IKwYVNOWOfQS4wYtmkpp197IJzL63l?= =?us-ascii?Q?QPL/WDj3Q7StugLyFePSVsL9YDa22oorxxAUMd5lRN79D1vEguDuA4+29uhn?= =?us-ascii?Q?5zHLilXuEHcXdbl6SJWbwBdhP3uNBOxGsMHiUWz7Aqh130yOKjJoJICbI99f?= =?us-ascii?Q?MRnMnFQ+LKEv/eQZPQaJOwPEv8F8kcDjylTpJJ32D5NXTwNNco9q6WKdjxiE?= =?us-ascii?Q?WHZQRGBQduYz73KYywRUKvdjviei1EONKAqgvF+NlYn2T1w9AcgX+eGoOHA2?= =?us-ascii?Q?y7Bxpkxz44JG8qWwVgka5znzVUJgevrEf860Qt8JSTYrdIUQg8i4YG/it1h8?= =?us-ascii?Q?lX12XtFM8TELbjXnaV3c2fMiwL03LKJQyLcA+ssS35lQeR4eGtuQaRpYCMyh?= =?us-ascii?Q?5ROtzV+3bsWU4Ad+IqBozBcAJUdMA1k3PPMb?= 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)(7416014)(376014)(82310400026)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Aug 2025 11:07:18.8727 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5e88e65f-8e93-403a-4eaf-08dddbebe6b0 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: BN3PEPF0000B06C.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4194 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 d66cb0a63bd6..c7ca16c9fc04 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 Sat Oct 4 14:13:11 2025 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2067.outbound.protection.outlook.com [40.107.220.67]) (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 EB7AE2FAC0B; Fri, 15 Aug 2025 11:07:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.67 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755256048; cv=fail; b=nPwbTwJEy48GChp/I6ryq1Sse8gTJ3vgQ21GuYsvgcBCd2297pZCMUuICHVlK0b+6DvCVTl1id2b2qSGTvZLxfZcqTY+CE1tLGOyTmOx4KJokyKkvACLcAcLEGS6J7egd3OnxdE/RzsRLKN4b95Ar/sGuEk3JCTGVuarDySNe0g= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755256048; c=relaxed/simple; bh=piQCW4Y/ARKLErABQPFMdpdAmfpPR+xD+gU6RR+JBZM=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=nvSKIGNtfFhRATQmewXw0luSiL/RRnzY18uPlAiTqNVB6haX0FCIJYyyIjv9+WoF7yXMPn3U6S24ehJjEHFKV6WSG5Ut0Kh4SaruK5cMctrBNlFIZqP6QShopfgZ4PaJ2GRMztfuGNGXAwY+9IbmqDiub6uWlR76Jikel/nTWvQ= 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=hlogYyi2; arc=fail smtp.client-ip=40.107.220.67 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="hlogYyi2" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cB4W88HoeqLGonDlWdgQtIMnPr0pf3YteN9GN/k/6JFElz6CfXySawEeoK7eBKOZ15DJz8YbJjIZo67dGJ4o7ah4CIKyS8TPcdtcgsgfu1MQq63zathev6EnOoQa4LbEwChc1UEfYevqjciMcpG4ARpKRuDtB3WkJQeThmn3FihEKOgpjlDVekvnn65Gf2GlhyWlH5xvvE1lNLlQ5QJ53Qkyg9jDXSWmlI2lyYsIU6R0cTScLG+H+N29leZ/01x7pYq3c4v+QEiDONXdIpJ4QA4/UUq/Kaje0S0F6P6229ODALt8BSTwRdqWt9Okamlv4TiU/ahUTXJWLsKwHK9BYQ== 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=SjMlIFKGGcjJyUy+9rF2xSi4bmBNuK6lddkqHpygMQM=; b=DwheZnR6pe/Gk9xrWzb6niIkkPrNnKZ4PZQrkhSmzxAwX+QQurQsRjSOkXC3YqFK5SccJWixDI5iNcBkgFizZFAxaqx+CcbjrSEUnesIFNvng9cfam/f2peK9zaqryK3xne4Bn4chLHhwm4ySS1gmBYgBunjqBvA087YTbIeAhrYmzakpTLVVVFHTaEqMPeXdczwg2WCpC9jAfP3pR7IXisaw47k674Rj4wkr0iskYfGnTOrmS/q/DfiLQb9bl7hr+rc0hcUDMr4hXieRYuv3euKAMvt7ZpReYTqaXnOykx2WK/4mIsaD1k8b64V2+NaKqoDCcscoSw7U8eVbyonfw== 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=SjMlIFKGGcjJyUy+9rF2xSi4bmBNuK6lddkqHpygMQM=; b=hlogYyi2yYJCV67/TAjXO8aUe08GFQKT/vLA+oMaKfMjacB/rqGgDvh/U2KUFdaSoQCe63XzeBcCYRA3qzNUBYinNZhRQ/W+RJfPAzUaQQ/1al3ib259nkoaUGN8bQ2X9PwuGxpMrI2o9k4qXq+TQQAk7ikftV8xJDfdwx1GT6O9dO8ITL74wnkCvN6J5A4wG0MJZgWYHb28hJmyr2lnTtg9OULPWI8wI4I+sKqg869d7karKsGmeIVn5tlSBQbg2yjOR1BGavygzJlD/0TSSIM3z3EO5uZBsjl6667uaFtTy1VppEbIKvSoyg4qP5gInYITHUfmiBL2uj+D6TmBjg== Received: from MN2PR02CA0029.namprd02.prod.outlook.com (2603:10b6:208:fc::42) by MW4PR12MB6873.namprd12.prod.outlook.com (2603:10b6:303:20c::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8989.18; Fri, 15 Aug 2025 11:07:23 +0000 Received: from BN3PEPF0000B06F.namprd21.prod.outlook.com (2603:10b6:208:fc:cafe::75) by MN2PR02CA0029.outlook.office365.com (2603:10b6:208:fc::42) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9031.18 via Frontend Transport; Fri, 15 Aug 2025 11:07:23 +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 BN3PEPF0000B06F.mail.protection.outlook.com (10.167.243.74) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.0 via Frontend Transport; Fri, 15 Aug 2025 11:07:23 +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; Fri, 15 Aug 2025 04:07:11 -0700 Received: from rnnvmail201.nvidia.com (10.129.68.8) 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; Fri, 15 Aug 2025 04:07:11 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Fri, 15 Aug 2025 04:07:07 -0700 From: Dragos Tatulea To: , , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman CC: Dragos Tatulea , , , , Christoph Hellwig , , Subject: [RFC net-next v3 6/7] net: devmem: pre-read requested rx queues during bind Date: Fri, 15 Aug 2025 14:03:47 +0300 Message-ID: <20250815110401.2254214-8-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250815110401.2254214-2-dtatulea@nvidia.com> References: <20250815110401.2254214-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: BN3PEPF0000B06F:EE_|MW4PR12MB6873:EE_ X-MS-Office365-Filtering-Correlation-Id: c6db060e-7b1d-467a-d704-08dddbebe92f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|7416014|376014|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?U2qIFNbWKggWJsG4c3zv+A2xOr6WB3vzh6qGJDWJaNmHqtNe1P57//Oh5rYD?= =?us-ascii?Q?r9z8iIycKEbhkRnaTax8UZ+kuh55s6740Wmt6arl/vyokU3rW5vKhLyMKDzo?= =?us-ascii?Q?IMkQytqYQf03SefIuzaZzAANhH0mc0hesl4UfmoPPyAHxqDuAKdaSUKqXT2m?= =?us-ascii?Q?HIzGac4+mWHaP8HSGedWFDpeDxZCVgaSKU8xTw6zQnqgGD9fQfNY2yjuLHNV?= =?us-ascii?Q?W/sQQdmmh9j4S7afF32ICc035r7Ydf06LM7Q/JPNnhMPdKDVcWCgn0rRd+p+?= =?us-ascii?Q?OOVSRdJaeReoWxA2hM76Kqvmira/8pEcH3Z/GKAKCy9jLFbPAdd65QMkz3JZ?= =?us-ascii?Q?HGxiG8oBnWPYSK5OPi5kabEXA7fyikQrQjNrnSxGkUdRxjhIQRCMxnK10eMe?= =?us-ascii?Q?3O9Yj8xpiaVqllywB2vZeByvAL5FCBdzUiQL8Tl5gG54S4XbjOJu7QHWVDj7?= =?us-ascii?Q?pzQxAf1Uhcqj72u7lkr27BGh/DoLOl5OcCDE2PlMbp5nmAYMkoWf6CXy67Ez?= =?us-ascii?Q?SZFI0FADzPQKDhYB+akymonHbpx+A8zpXx9OpM82/RX1jRKHJbXpUDZkCt8V?= =?us-ascii?Q?ef88Mxs4DS5992mq3BfzUORnrixO4wGKeBbXOkXQJ36H7YZLihf6ywhz7b5W?= =?us-ascii?Q?2U2sMJiKiKIOM2oC4E3WstX4ZS7Y3wMVj/iSc3d8JANsSQDSUd8OCYH2I/XL?= =?us-ascii?Q?rPxEULooZ1Qp5fawTPRYSf0mjmnGJBDkYdRrE7cJ/f5o9BqSP3c5COLgG1Cr?= =?us-ascii?Q?2QGswq0zeCfDcVJcZz196ankCuvX6WY/SLW9J9qqlp0Kmw9UWS+8NOx72kfH?= =?us-ascii?Q?gwl3/VVvTUbtcAVy7t5TeK2f7NQLLAd6Tg9T2VcC3oKCiSVyo0WRWuMZXbFN?= =?us-ascii?Q?MUW5udTPXG8wf0HGvq+bFWl8aMlRsZd0lpdRA7AAMyWzJFjlsW7qhLi8dqmL?= =?us-ascii?Q?2vcUhi1Qh9H+eBUOK0Jw8DTGl9iRcOtUy4xCaKdmqDNGX/10SUedmwVo5U0g?= =?us-ascii?Q?6hdtjJjIP3Rqn1MwNl20/LZX2zOwDAj8df/0Z+bmxMPAD36sR68UpUCz8RtZ?= =?us-ascii?Q?fx1sDKDWSEabe0QlOEsQ4wL9euf6icxVtRyXdAD0X2pIXyDBve2tUF+AfEf0?= =?us-ascii?Q?7Ssplzu69+xj/kiOZti0UGCYAdqlrqzi46Wfj3p+sFvMtkM4Jt0AnZomPbEg?= =?us-ascii?Q?xqgR0A82FYxJKka7M4IlU4iyRkQXeMDb0qK8Y5qmUN0m0h2/JUR9bqqCtgvB?= =?us-ascii?Q?BQPTRmbOdbDpIVodrYl3oLbnfCNfAWLmvrjmnTGogVrYE/WBxSig2Q+TeXQW?= =?us-ascii?Q?sKLEFUOFQEoHD/PfauGVJXh1sEDKi7ImEzLOJOtSiHk4CfBb0yF978+lJA9C?= =?us-ascii?Q?biQ54/VlO/4tBcgzZP3jeEaPSiBuIa9wyuk9kTxFYJRgZXXFtU09ZU0HR2RZ?= =?us-ascii?Q?Jo09Ew0XxSWn6gjbK/4stD/m9I6z6ai+oM0O9SWkIhPL4ldBybKpDaC1CKBY?= =?us-ascii?Q?0TiMZ5qscpq1zjpYw3FmBk5p4hsn66KU/aqb?= 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)(7416014)(376014)(36860700013)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Aug 2025 11:07:23.0411 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c6db060e-7b1d-467a-d704-08dddbebe92f 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: BN3PEPF0000B06F.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB6873 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. Signed-off-by: Dragos Tatulea --- net/core/netdev-genl.c | 76 +++++++++++++++++++++++++++--------------- 1 file changed, 49 insertions(+), 27 deletions(-) diff --git a/net/core/netdev-genl.c b/net/core/netdev-genl.c index 3e2d6aa6e060..3e990f100bf0 100644 --- a/net/core/netdev-genl.c +++ b/net/core/netdev-genl.c @@ -869,17 +869,50 @@ 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, + unsigned long *rxq_bitmap) { 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, ARRAY_SIZE(netdev_queue_id_nl_policy) - 1, 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]); + + 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 +955,22 @@ int netdev_nl_bind_rx_doit(struct sk_buff *skb, struc= t genl_info *info) goto err_unlock; } =20 + rxq_bitmap =3D bitmap_alloc(netdev->num_rx_queues, GFP_KERNEL); + if (!rxq_bitmap) { + err =3D -ENOMEM; + goto err_unlock; + } + netdev_nl_read_rxq_bitmap(info, 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->num_rx_queues) { err =3D net_devmem_bind_dmabuf_to_queue(netdev, rxq_idx, binding, info->extack); if (err) @@ -966,6 +984,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 +994,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 Sat Oct 4 14:13:11 2025 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2072.outbound.protection.outlook.com [40.107.92.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 2C2D820012B; Fri, 15 Aug 2025 11:07:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.92.72 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755256055; cv=fail; b=K1U/63eV5rkJrC0WYQV9tg5E5Z4cSV+bbxIvWvS7yATPravy856RGdeh978uXmaXik7qA6PUJXD/G28ta7llgE/yGGdCuOqd9PCnmZBwl1Dm5sOtVMWSBba8chuh51BHzXjVW8z6MYCZun4/OStx6cGM8lR6neM+DPVsASuszhY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755256055; c=relaxed/simple; bh=IkOG7Jn7h/u1swNCKcqOX0IXYF1NYzjsODyvqBvk4K0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=YJhSma+N3qpdhND0pme/J7jY9lIFZwQ4v0vbqC/ubwz2PB3ZMzK3TPADfoLhvgWKNWGRT9ebuAld/rdPFxVODlg6t9a/aT1f4MlBWCa92HkWP439xs4ljwHeZlAlIcWBgIUEZ9OWPE29uERJH+I/FBKdVQauxXMvNyLZJldLSAE= 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=DDZoowHY; arc=fail smtp.client-ip=40.107.92.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="DDZoowHY" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NGBwO9hxSz4izyTLKYTY8Pjw1lJ1vhLRzzkQgueNs656OucKZNhqEeFHl9M9Ro1dOOYDISnD9B7AiXXsjCe8qqYXITDNVpUiSf972gbR69Gi2VyC6WFrQqXM0nzVbgdk1tD/PJTfWDINMSZsWfAJPdxzA5GmOsEQFbuaLmkXk76dh0SzJ0QVXYCfX9YiFp6iQI1XKmOTwS/+bjJF6LfKwTZ8DL2iKhDk01t4sgWWtnUsy12lIlpMHMKUXaioxu5qsIR2R0A+NjZQQy3gZKOMrbDtk4pXgvES/JsHau8UW/vNNGwxTtMlLjDjFJCN5s/ou6fTNns0GEJs5uUgtbWlwg== 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=uKQvHLzi3G/SJ0AYieUzkEDLfNfB3HSu9gocVsmoePs=; b=KF3l468ogrLXv51i7+sjK0L38i7XXzR9qIY9qhp5dtETXhtSUDcMc1dQf8NgLSEjWqbJvbqe949MJNnZ5D3dEhoFsSKferlv7R+653VBIfP4+9oGgtnTIMlgp/6L7aGhxZXsGJE/uO1zlqu0IDffA9snWm2m/hd7f24lPqlUN7oUyAXKTWF9Nds+F38rJqzcdwN9XtpzME5WGnFmAh4XVMQzHN5hF4XL3d6pMS7Bg7ZoFuKvuPSVqD5eh4gI67AK5C4wbQ80yW0PUGOWEZcx1wHcJBX9Ul0L/CYzIk9ektXPD0reVOxHEvWJxgtJeGK+ICywup079YuK/8eI+R1fkA== 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=uKQvHLzi3G/SJ0AYieUzkEDLfNfB3HSu9gocVsmoePs=; b=DDZoowHYx95HozQhIV/mYd05QnOg4wQ4WV5vydZrajY1u+bYLIg6w6OvB7bE4p7T/2uKDUlbA6vqW9SkMlGHghSSguvSf5T7Q0H2Kp+PRj15/8E6im69bG2Ci7uq0DKkChIXLOLEQY7k3zU8IxesMGiqsdFmTd/JFVrLrVv5huvkMtZxHjHVK0M2CrdV/dGyAR5WNKzfZNpt5BWoh45HaSy02ixwfgdYhuAnuXvsmcOSvS7l5u/WtLdXzAS+p69auCGQx9yDytREHz02ZDodYhAVuyMHnnLptQh22w1H+PKYvPjk0/Pfe3bkyuIDq2oa2HccGr7/juLzW1THrS5OLQ== Received: from LV3P220CA0028.NAMP220.PROD.OUTLOOK.COM (2603:10b6:408:234::21) by DS7PR12MB5815.namprd12.prod.outlook.com (2603:10b6:8:77::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.14; Fri, 15 Aug 2025 11:07:31 +0000 Received: from BN3PEPF0000B069.namprd21.prod.outlook.com (2603:10b6:408:234:cafe::6a) by LV3P220CA0028.outlook.office365.com (2603:10b6:408:234::21) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9031.19 via Frontend Transport; Fri, 15 Aug 2025 11:07:31 +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 BN3PEPF0000B069.mail.protection.outlook.com (10.167.243.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.0 via Frontend Transport; Fri, 15 Aug 2025 11:07:31 +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; Fri, 15 Aug 2025 04:07:16 -0700 Received: from rnnvmail201.nvidia.com (10.129.68.8) 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; Fri, 15 Aug 2025 04:07:15 -0700 Received: from f42.dev-l-178 (10.127.8.9) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Fri, 15 Aug 2025 04:07:12 -0700 From: Dragos Tatulea To: , , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman CC: Dragos Tatulea , , , , Christoph Hellwig , , Subject: [RFC net-next v3 7/7] net: devmem: allow binding on rx queues with same MA devices Date: Fri, 15 Aug 2025 14:03:48 +0300 Message-ID: <20250815110401.2254214-9-dtatulea@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250815110401.2254214-2-dtatulea@nvidia.com> References: <20250815110401.2254214-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: BN3PEPF0000B069:EE_|DS7PR12MB5815:EE_ X-MS-Office365-Filtering-Correlation-Id: 3d2a6c99-e6c6-4bdf-aadd-08dddbebedff X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700013|7416014|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?6ebbilBBQZmcstivQQRfTAlOIEKVgmSV/cDD4W7WOHkeCmpYG7Bs5EKt5f74?= =?us-ascii?Q?JYJDNU3dDPhjB+nPVHo+52huqexs0tTiKQVdjzQ9HX+pGcNpkZ7+VY0aQLJF?= =?us-ascii?Q?lSbSKLtxSSETo4Um0gQQBz8fMbuvkzNvlTxu1Z1WYuCGloHmxvhakccfbxAI?= =?us-ascii?Q?m2XP6mG9wrPaxZDGa83I6q8ZPPK2MHjuch7euGW1mboaoD5bNVtAnoNOYWke?= =?us-ascii?Q?rhIyR/OBith+ut/9ow3O4gEDgpbgd4/QH/c574ieF7zyJmzKP5HpO8XK+lsz?= =?us-ascii?Q?z4lgDQcN91bqKey/L/Jo6XX0na2QD+ikSj4gsPQKHYHaRhfb16rdLaa3ymDk?= =?us-ascii?Q?swWPDq8t9M+XRLQtj+Yppu/UAb4UhVF92SiJczYZNf5L0iOnlDCi7QhjKYOP?= =?us-ascii?Q?XNjfFpSakr01X9VcorD/Uex+o3bKOHJend7fmgckIyZTv6c8vonQDZlgk9xZ?= =?us-ascii?Q?QLTOnIxO739wLrxE5ePJnwq5IPvTwESd0GBHforqK3hGzSp1rAjlGu9emBJN?= =?us-ascii?Q?LeWysSdTADmzcYAuoBix/GYTW4kpYCFqD87PVA0DSqaF+yMUH16bPRiluDU9?= =?us-ascii?Q?pT5qNOyo8PQH7yk1hlYwuO0jKYlYoSsVoK7OpdelzFRA5lq8+9Q1zY6ClOoq?= =?us-ascii?Q?ZKC0q043G+qoXfqLRn6n8mEunVHCsAHRVnCuQiTDG0aulhDydOzA8BhnN3Ed?= =?us-ascii?Q?0whnoiVgLWOOYsI247mjTqxKQdotymiLvPVzbNL6NC8x2xQdhBlxRfysKWjo?= =?us-ascii?Q?mNNBgD7eIRhuL9Rn4xTUA7pW2I8n9d34JW5aXZ5SwJAHw0kQyaRKir8U+KiW?= =?us-ascii?Q?RKUX2hftAnkc15dlyUf1cKp7blJqzdN5Ne98zDTRrMzIISA0VvzqzOAf1ISu?= =?us-ascii?Q?hqwB9EavhvhLxh9CXlcfGzwkJnvWwjWdPviegVX9Oankmz0d9+au978d91mB?= =?us-ascii?Q?LaaMPWyFMQt6jFcWhcXlod1XlNLU+DZPFEh97RyGF8U59vXgFqFUyqC3Ujp0?= =?us-ascii?Q?KCC5mWyw9iDuAeo+LG+yPoDlD5462b8vFTilMov/Fyo2S/95CCvxiOXEu8M5?= =?us-ascii?Q?7e3LNYRZQlkv6JzOjxvJ/HqUOfQPbU6t7jlJYomtS7BQT7o8LgL5B3WIz1JX?= =?us-ascii?Q?xkr6hpLuKtlo0QcXK5lSwxm3tZVG606uOh3EpAVkJPSCzZ8AptI3lrApK8Vx?= =?us-ascii?Q?6m8JF5w6Sq7SMxk4OhfHOgxZN5OTzz4DwDwbnWZn2Kg78pju1m4U67sUJyBD?= =?us-ascii?Q?dwlVcgKkzdo2GyElfKhAKA3+vwZoinkmNvHkWmTJHwqlZNIKvDMGiNvfFFUe?= =?us-ascii?Q?4xC3Jhy2eaOaTOcxFjnCVL7VNDR9VRwK8Kbi04tXqfHiRgxGvvwqrOcP8nsQ?= =?us-ascii?Q?6lL/+ESMGGw/DIvNxjV+zpqIehQTmhnse4bzIGy3JeCPIOp101v2dU4+HlqA?= =?us-ascii?Q?Tdn0tljYrWNhfu0jZx065EHodmuXWm1Dp8tHpQuyJ/CSN4Bp6SSlTBYEvDmk?= =?us-ascii?Q?EPOJJk9Faaxg6BtgTvhaKKgjRmKJLqhoidd/?= 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)(7416014)(1800799024)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Aug 2025 11:07:31.1458 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3d2a6c99-e6c6-4bdf-aadd-08dddbebedff 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: BN3PEPF0000B069.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB5815 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 | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/net/core/netdev-genl.c b/net/core/netdev-genl.c index 3e990f100bf0..649b62803529 100644 --- a/net/core/netdev-genl.c +++ b/net/core/netdev-genl.c @@ -903,6 +903,31 @@ 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; + + for_each_set_bit(rxq_idx, rxq_bitmap, netdev->num_rx_queues) { + struct device *rxq_dma_dev; + + rxq_dma_dev =3D netdev_queue_get_dma_dev(netdev, rxq_idx); + /* Multi-PF netdev queues can belong to different DMA devoces. + * Block this case. + */ + if (rxq_dma_dev && dma_dev && rxq_dma_dev !=3D dma_dev) { + NL_SET_ERR_MSG(extack, "Can't bind to queues from different dma devices= "); + return NULL; + } + + dma_dev =3D rxq_dma_dev; + } + + return dma_dev; +} + int netdev_nl_bind_rx_doit(struct sk_buff *skb, struct genl_info *info) { struct net_devmem_dmabuf_binding *binding; @@ -962,7 +987,7 @@ int netdev_nl_bind_rx_doit(struct sk_buff *skb, struct = genl_info *info) } netdev_nl_read_rxq_bitmap(info, 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); 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