From patchwork Sat Jun 14 07:14:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolin Chen X-Patchwork-Id: 897179 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2080.outbound.protection.outlook.com [40.107.243.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 D6DB41F4C92; Sat, 14 Jun 2025 07:15:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.80 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749885320; cv=fail; b=rs9A+dtNykb4n9Q9XmiNupLisIj6QZR1n+0xIxTULlEkhlqXyI0hlpyo/XQqXQzFOOMAHe4S7o+rZ2IY0a7ub9c3Mgp+Qss6Gl7cjpXlFNJA2a5lrr+dEbFqcuWFBYo4wJyqs354sZp571o402l3fkSn4E7ggqgyrBHe+tlGJR4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749885320; c=relaxed/simple; bh=908rv3XmbzCrLQgwpozwB8bpaeg56wcZiTVMCusD9jE=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=iy7gOmUVwtxFujvKW+Vc6omkPRgTe1ZdRO+83ahO+fBzzPMpg6ECutoKvywTcOAdn9ODFisiISOQkGo5y6yu3y/G1cS+3bpfHKkSevK0WbpRDFzb8V+UNUAg1r60gcI/Drl+/QU7pTFw4bojXJVkmiLIWUa6daM7rkT+Ujayi+A= 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=Bf7UMksm; arc=fail smtp.client-ip=40.107.243.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="Bf7UMksm" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=G0Wx6osTSkhwy6M7LBiyN5uUoM9BFPOHO2IpcRvw+5XC2ghIQCS8qQYkIFlM6bytQKYCNa5D8dGhwEZrzRw6/UZ1xHXvdvwtMsgzQ9tB3JAmk2F4IX+s57i+/JJqav1pPLD5Xl7Wa6mcLkCqBOrqVadeIYC13IURjinaYJrKAWZTpxn+7IJHveVMOZTe5Fm340SxxmreAryLQV7XG9TihixvMrrsQlkPxZUpzyS9bC21u5f9fud4XkWSJJ36/V8o1tFB7uR29Q90fERK7KF9Tuk3cl4/yJ8ir5hMZoSunO0FVGxAMF2mvo/N0cTAmGSii+ttKDPYdXQJwXS2+psURQ== 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=+Q2Kn0tQ2WEcdl1ky29Rml0NtaEPou866TZF/WPqEO0=; b=umRPIPl301mZ/WX6HEYlVQlyBTh7jj3sdm6g74t+H9ZkH7affjDj12KV9kzwNsdnoPgVL6bbjBPhWzU+Un8Riu2ueeNflgTZfnMUUWMThTLUF6MriWxeTNVKP7c1Gdc6Oa98d58zLo787GRKItjH1RLL3wsD0lMvWZQX65jpyWgdFoGrPUr4cXav1h3S6HwxxpSdwjdQLM+DeybTiAKkxsEsVSdvkVTXwscyIbpGqvlhdkW7/YhSbCAV4y22T6Tb2kzWmvTUKnAPTWaFrYz5AXGXgyChuKNNosfgpwzWgpT0FpNsxgOMrtKLMogGgBzbRr58Pdee8T225CZ9L+qJLA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=amd.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=+Q2Kn0tQ2WEcdl1ky29Rml0NtaEPou866TZF/WPqEO0=; b=Bf7UMksm0Aqj0e2PJWKturhi7OddPLGyJESDRgnzQxp9zDRxiIVQkgwu7UY74PtbMdUI1+WrQqYUOJv9I/34r5+vqmIpj1mtBDgDzED3JMt1iONjbTLRTZkxERtk3ycqJm8T6lv8Om4viUMNcxOu7iZ99yYJk+Ak0aErpHWnhpVvzQSNbDkbU9PIPQ8kSdaMMpdp/xXToiEIR3Wvf/GfzgFWFxeQD68mybt2yx9dR2lipZtii7B/OkVmZE2AVvvVD6QyCwdYREEXxsfCVcXoJ5JIl2Ex4GPG7WWPr3MMCayMrRzua3jk7ourHttJ74Hzf0bT6Ms50NVcgdlpnjOikw== Received: from MW4P223CA0001.NAMP223.PROD.OUTLOOK.COM (2603:10b6:303:80::6) by PH8PR12MB7351.namprd12.prod.outlook.com (2603:10b6:510:215::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8746.30; Sat, 14 Jun 2025 07:15:11 +0000 Received: from CO1PEPF000042A7.namprd03.prod.outlook.com (2603:10b6:303:80:cafe::65) by MW4P223CA0001.outlook.office365.com (2603:10b6:303:80::6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8835.25 via Frontend Transport; Sat, 14 Jun 2025 07:15:11 +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 CO1PEPF000042A7.mail.protection.outlook.com (10.167.243.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.15 via Frontend Transport; Sat, 14 Jun 2025 07:15:11 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) 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.4; Sat, 14 Jun 2025 00:15:01 -0700 Received: from rnnvmail202.nvidia.com (10.129.68.7) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Sat, 14 Jun 2025 00:15:01 -0700 Received: from Asurada-Nvidia.nvidia.com (10.127.8.11) by mail.nvidia.com (10.129.68.7) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Sat, 14 Jun 2025 00:14:59 -0700 From: Nicolin Chen To: , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH v6 03/25] iommufd/viommu: Allow driver-specific user data for a vIOMMU object Date: Sat, 14 Jun 2025 00:14:28 -0700 Message-ID: <4560262a8c1ddb3def127417f1dc59bff5bff9fa.1749884998.git.nicolinc@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-NV-OnPremToCloud: AnonymousSubmission X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1PEPF000042A7:EE_|PH8PR12MB7351:EE_ X-MS-Office365-Filtering-Correlation-Id: c7672e61-6ef0-4329-df00-08ddab133385 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|36860700013|82310400026|7416014|376014|7053199007; X-Microsoft-Antispam-Message-Info: UwlQ+64WmyPCGTywbZd3qBUQ5WS8M9gfvneCZW8KZlA8P667rd4VbemCBgrybqdVFJ9eHSjLVsjI9XNHCFg4W4vehECUQBE4PZFpP9ScY6Eod5FqNGxoumV03Dgn/YU/tMB6F8a4Vd9RzM50Z/VwGSDh0TayDVRYruTdvgbjzEsbM5+lupQqD6iP6Z4XfX9TgvvL6vn/A0MQaNK5wjvky2qmHMxyn6ktj6sxk8LP/XfVrws+kPUIoUEOlZprAT3URfmT3+AoroWzn/PUDMKBkvYDueHPl1vn5ZiCbQaTcKwieKDZwogiDNtjjO/VTC9h5/YG5jvvf1axRBtWT59XTs1J1cMjouraQhBg2/TlEI6LEsS3bQ5GlbjzO/gyoDbpbJftGEkTKkmuddqApk3gRPr1hbp+KvjK/PiUDnvyLPaMvCsCRHKmdwl6cQtfCT3krdZHtNOD6ySB5553P8G1XQRmUqVpj6Ti8qt7o634BzZco1rHq5lIh4D+zByP62TyMXBBi9QduZX4pCmdd2sPxNJRwXbh62A72V5mRThVBk+w195Qi1fP3elojCH0d4HQaGKzt57LEACfpqpK2+0iGV5IIKPf5BZ1ZFhqnvio1DUMcffKha/LSkvblrRit59TSVIWFukOPmYbfVNXazpZT9ThMXQvPpXUjhseTqi0bBLEJroIo2ZTalA+M95fQClG3BK8CAiZ0kvnwnN6iD/KMcDt6XnDD2EuyCUZ335fLG+6I1LGLJEEiC+DUF7/6IF2bYt66WTLJjSBfTmz0H/tZDGFBF8pcFC3nlB3yt9jZif1kTe/wBfIBkuWOVdEtYGwHNpb6tr89K2EfN63ByqPmf7W9+pYh3Eq50XggqOkWNNG/2UzburXdlhoHEjyd1VpfJ6vEJdyu2wEcePm8HCnjcS1HO7EEHrVm1cM3jBZrqZMgK43XLts4Pzub+1yfUQsGDwxe9pHal35R2xXOWaN32YCB6MFn0kvarPu1y6sBN9BXcwK50wnMTP7CTa5OGxa64EOI5b1yrcI7NRJVxoU62v6Lk6hSDxsCRTpbN2QrhRPn4N5dy1Qh1/k+6DVHHcz5IbRuIBER8Do3NkDzjhagIBU9OqSRQMYDAF9DMFs1uAsPB3VvpEKlRJK96wAhxNnuV+Mc6HsrBKSNah2bVwHdFwNyrPu1YkItKdXH09NFgMZb4lcldM9+wl2K6f+M0vEpzbwIUYFmIjIzek4LKiDFnxh64wFnw/DMsiEmmA6iTZo3dZn0QVhU2iFgEMcwf2ir0N5QwwA5NbhoiCX5LZM/oXUCkkw5KrgZw0G33SII/OThgtlDOKJsx/Hs0iCF7jYXHn2wJ7271iMILaYGcA3LPrF2lMomKK65pqqATLH0RYodbe0squRw10sPM3vS6/JtF6vF3MXe8IBkk4rI1UTXYiqhazQj/WUzelI+2RMUYIiXfj1HfRZ+1KV/EXEVYp3hlxRu3jIFaacmKZv6qMd3OdqXp3GcsHoU9fTivMg3X14JynVeKw88rMJs9RfIU6s 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)(36860700013)(82310400026)(7416014)(376014)(7053199007); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jun 2025 07:15:11.2696 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c7672e61-6ef0-4329-df00-08ddab133385 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: CO1PEPF000042A7.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB7351 The new type of vIOMMU for tegra241-cmdqv driver needs a driver-specific user data. So, add data_len/uptr to the iommu_viommu_alloc uAPI and pass it in via the viommu_init iommu op. Reviewed-by: Jason Gunthorpe Reviewed-by: Lu Baolu Acked-by: Pranjal Shrivastava Acked-by: Alok Tiwari Reviewed-by: Vasant Hegde Reviewed-by: Kevin Tian Signed-off-by: Nicolin Chen --- include/uapi/linux/iommufd.h | 6 ++++++ drivers/iommu/iommufd/viommu.c | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/include/uapi/linux/iommufd.h b/include/uapi/linux/iommufd.h index f29b6c44655e..272da7324a2b 100644 --- a/include/uapi/linux/iommufd.h +++ b/include/uapi/linux/iommufd.h @@ -965,6 +965,9 @@ enum iommu_viommu_type { * @dev_id: The device's physical IOMMU will be used to back the virtual IOMMU * @hwpt_id: ID of a nesting parent HWPT to associate to * @out_viommu_id: Output virtual IOMMU ID for the allocated object + * @data_len: Length of the type specific data + * @__reserved: Must be 0 + * @data_uptr: User pointer to a driver-specific virtual IOMMU data * * Allocate a virtual IOMMU object, representing the underlying physical IOMMU's * virtualization support that is a security-isolated slice of the real IOMMU HW @@ -985,6 +988,9 @@ struct iommu_viommu_alloc { __u32 dev_id; __u32 hwpt_id; __u32 out_viommu_id; + __u32 data_len; + __u32 __reserved; + __aligned_u64 data_uptr; }; #define IOMMU_VIOMMU_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_VIOMMU_ALLOC) diff --git a/drivers/iommu/iommufd/viommu.c b/drivers/iommu/iommufd/viommu.c index d1f80a03e3dc..c5eea9900c54 100644 --- a/drivers/iommu/iommufd/viommu.c +++ b/drivers/iommu/iommufd/viommu.c @@ -17,6 +17,11 @@ void iommufd_viommu_destroy(struct iommufd_object *obj) int iommufd_viommu_alloc_ioctl(struct iommufd_ucmd *ucmd) { struct iommu_viommu_alloc *cmd = ucmd->cmd; + const struct iommu_user_data user_data = { + .type = cmd->type, + .uptr = u64_to_user_ptr(cmd->data_uptr), + .len = cmd->data_len, + }; struct iommufd_hwpt_paging *hwpt_paging; struct iommufd_viommu *viommu; struct iommufd_device *idev; @@ -84,7 +89,8 @@ int iommufd_viommu_alloc_ioctl(struct iommufd_ucmd *ucmd) */ viommu->iommu_dev = __iommu_get_iommu_dev(idev->dev); - rc = ops->viommu_init(viommu, hwpt_paging->common.domain, NULL); + rc = ops->viommu_init(viommu, hwpt_paging->common.domain, + user_data.len ? &user_data : NULL); if (rc) goto out_put_hwpt;