From nobody Wed Dec 17 14:23:42 2025 Received: from BYAPR05CU005.outbound.protection.outlook.com (mail-westusazon11010020.outbound.protection.outlook.com [52.101.85.20]) (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 D39503538BD for ; Wed, 12 Nov 2025 18:25:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.85.20 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971939; cv=fail; b=ieXT9Uc98g9fBkhtdfarfQ+a1+InrTrqCi7UwCVDYt3yJh0Bl7AVIS8HalXE0rnQPqtVAyzsCmlm230HL3a1ZN2nDhU88msPrwbolEEqqDBTu8hmlJjot7RhkhJGfFISvtbNl40zL0hjUDrbAyy0MypNjprIL08XzjkRmuW0KFI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971939; c=relaxed/simple; bh=R8Io8l8m+wR9jfAaX4tf2knIrJYmNuNmZKXkesNZAfk=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=f+zgYYBAgdVjGvlQiwZXoNHIZvvAMV+BkIQgPsm25CoMzJZT11lKNZVLZyR2rvmOxljBSJ9grm7zi6ONBYGQX2HTH/SqTLHmflDpt/MkoicIvhvauEl37dSr6XD1CHrcDCmEofDU5gpE6GhRt3zxA5w6n2sqLl9UfcWb5fVCjkQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=O3KUQoJf; arc=fail smtp.client-ip=52.101.85.20 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="O3KUQoJf" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=K6/19w6G+qWoPaScWYSgQKUsk4mVuQ0cyn2ZL2sWZxrXcMH9pkVxx7ajXka0tPhb34+lWa6rJkXngCc/lFeozD3LcYPMQ9lVSSSIc27lpENwX5k9rytG3ysjNazCoaD+I6CtD767MNuJ1kdkTj6lQx/VniY73z57hDom0r0AOc3gzYhgED6ndmXaVMMjT4E1UPabpzmr9bVAnIttpOnFV4ranJ+OJO5intz2jIQPWitg5/R31Pc8xfQ/6/1+Sdr3AM011b8S/lYHqSQKG3EwsYA31G9avNm0QI5WiauVbUSv+4JZZVy4c2G3rSaJYP4qpApLoqugDoVK3Z1MOv6UeQ== 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=pgrsTAh6nIKwgd/TDBQiluuUg5l3XPtHVtweGuGoAUc=; b=aXt5UA+K7nnhRPWYDGvGNFZs058skdlIAzYMt8IqCI/3b5W9koDaDNako46wH/vfMUphd52ynqEcHuUoRN1gHcilljTkYZLOt38l9ClIXdCYjcnDY1DuKPFzdBkFhAFCTZ2o26C9fA4BMKnINkOSQJYhB7aZDcma2NcGAgzcVHIkKJ84RB4dN9SUIZcHKSmr1MC2dWovocotufcaDZVzb15O8yxB2WG8yRpsTcsxbnKOuR3yVEYZIolcbHrHpYZSdV3n0v6G/dVWnbkPUIT2B1tj8Yu0DxuaI6LcpAgYNhD2wbVqVl/sK09oE8yVOpWmuQ2nwkktyq2YuKAoUQm9NQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nvidia.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pgrsTAh6nIKwgd/TDBQiluuUg5l3XPtHVtweGuGoAUc=; b=O3KUQoJf6Cvj0wf6jYvoFSA0Ha1udHmVy1ldd2/+tT+oMMQ3DZd3IGt4qvSeF1KM5TB5dXbafdzc2kYJ7kDuTKEEVFt5rmlQpFPtTtDK/3N6/Z+gDNf01bAlXFS45CWYoSfsnSMLvenqcihkKSxs7tAPIRp6aOwYtwaDJq1fseQ= Received: from SJ0PR05CA0129.namprd05.prod.outlook.com (2603:10b6:a03:33d::14) by CY5PR12MB6059.namprd12.prod.outlook.com (2603:10b6:930:2c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.16; Wed, 12 Nov 2025 18:25:34 +0000 Received: from SJ1PEPF000026C5.namprd04.prod.outlook.com (2603:10b6:a03:33d:cafe::ce) by SJ0PR05CA0129.outlook.office365.com (2603:10b6:a03:33d::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9343.6 via Frontend Transport; Wed, 12 Nov 2025 18:25:34 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by SJ1PEPF000026C5.mail.protection.outlook.com (10.167.244.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.13 via Frontend Transport; Wed, 12 Nov 2025 18:25:33 +0000 Received: from purico-ed03host.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 12 Nov 2025 10:25:28 -0800 From: Suravee Suthikulpanit To: , CC: , , , , , , , , , , , , , , , , , , Suravee Suthikulpanit Subject: [PATCH v5 01/14] iommu/amd: Rename DEV_DOMID_MASK to DTE_DOMID_MASK Date: Wed, 12 Nov 2025 18:24:53 +0000 Message-ID: <20251112182506.7165-2-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251112182506.7165-1-suravee.suthikulpanit@amd.com> References: <20251112182506.7165-1-suravee.suthikulpanit@amd.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-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF000026C5:EE_|CY5PR12MB6059:EE_ X-MS-Office365-Filtering-Correlation-Id: 71101563-49e3-490b-c6d7-08de2218de7e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700013|7416014|1800799024|376014|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?j8cbwpVH7c/iQMHk7yRzvPGUfk7TIQnM6PUP31Oeyx4+fsh8EJyISKDWDM5t?= =?us-ascii?Q?9FlqlDE0JK3WKmc8Luk3R614be2ev3wiWpqDyjT69He/B89SY/UKyaHYxD7f?= =?us-ascii?Q?3Ss+aL1rJtsrOwGvYcZGkoaeDnmBQ6hwAQxDWWaTx0gRGbwqynUKbUEZWLWE?= =?us-ascii?Q?qCTsD8bkLbzz04WynB1W8A72rtsRBDafNRYUe4Jp3x3ais6WwoW+Bu6WMR2K?= =?us-ascii?Q?4JgUD8de3LD1b9PdRUbVeBoPBocRT6+QeRKlCsc2AREiTMENcKJYHyMgpoEy?= =?us-ascii?Q?N8blYp0e/sC+jniWIZG7gzFngzdr2LIcnLtPWnBrJQQGmX/gRwz+MiAP0smm?= =?us-ascii?Q?KfyUtjXybKt79ug+Fbt3Z+LuF/cN2NsNCuv8Yj3JPmf7jdLuRyZOBMyzE1x0?= =?us-ascii?Q?02AUmCWVvx/fYrariMazYI/FfZY2P1NBELutY7VtfSifwbBYX0NhXoFOZPNv?= =?us-ascii?Q?4bXsjKnpoVyeaYf2b7woTGkUKQRMOUI+ZDnSAKS/At/w2qZz394THpdOrcDI?= =?us-ascii?Q?Pvh5k01vPRBCEaM8FQGkHwnKmgQ38g1J2HOJbURiuTkLoC+aldR04vnfYDHX?= =?us-ascii?Q?12oi9mKm8cVyHHkCzmYdPTsTVGNtDdCBmIwEvfGLTykt52zcdRIuk0hAceDs?= =?us-ascii?Q?af8WpC9bMDCOZtZKQcZLn8F+cUhsj4fA9MIKiaeAjcQf/IPrykHYd+mOJcmg?= =?us-ascii?Q?oNhdj4efWNCCrgP3ffDw278OvlsY0DqGOMGxBuHO27OYStSpC83snIZjGx6I?= =?us-ascii?Q?kuxbb6g7vGe/6krpYF/f35jxRQFhzcRvDD4+VfUMi8Z2tZtVyS8QB8TXqyUD?= =?us-ascii?Q?YVKWt4zzximAfo847tk4NMQNl0z2HksceLg4dfRb1lFhla72SI2pfVnj5Jws?= =?us-ascii?Q?xW82b0h7qSDYfRo+rCAFPExiyGpeOHkFgeCMclFKygiKUmdPi936aLltBiVK?= =?us-ascii?Q?CnmN5IWiKb7ZYacKP9pApQXZcw5Ldd/5xH3IWUQ8ROoNlp/OqiWamy3IdEKF?= =?us-ascii?Q?27JHeJnpJY3BMb2TzwJfYeq2IAToL0Tt4YwJB2FvvOPU2RfqWJFKDqJ638IL?= =?us-ascii?Q?mwc2crMBh0pKCuPYHfdjBoNAVsANsyn5bb9JMWFTzFbMquK4UyJ/I7iS/YOQ?= =?us-ascii?Q?o2bchrf5x6zXNsdPRj8XIxxclIQ+RLcToF3kyFGtGZadD1ksjnvgJ/CNOcYU?= =?us-ascii?Q?xC0w36njm66HJFGMQe51RGPbUGs+HkoLt1H3CHD8/lnwCaZHGx8grFueoCRc?= =?us-ascii?Q?12P4ICDqMkL277Evp3D89pkVjef9TNzO5FxgSlWfDJmNxeVD5MwKxc6bCkvs?= =?us-ascii?Q?UsOu2X8hlr3ogvs6y/g+keE9hzAV0jHvVE7X5LYlqs5fuCWOu9cnquX3CLXQ?= =?us-ascii?Q?Qvyk15+cQwHZXlJwwphrUC4EcdlZArBGTDrCr8sX3w5Zh41UsIJKxsKf1JE6?= =?us-ascii?Q?UbH4wtryb2Das0BpjAZBJnNRTdZ8YrMjinhjBFLox0aBxyJR9mImp37/lFnx?= =?us-ascii?Q?gDrgGVxuHKvofUdEOesdF0iAczKSp10NzOZ8N9RnlyCqePX2shKwZStbnaIN?= =?us-ascii?Q?Yb2qzOnhOy1yqQRnHO4=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(36860700013)(7416014)(1800799024)(376014)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2025 18:25:33.9251 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 71101563-49e3-490b-c6d7-08de2218de7e X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF000026C5.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6059 Content-Type: text/plain; charset="utf-8" Also change the define to use GENMASK_ULL instead. There is no functional change. Reviewed-by: Nicolin Chen Reviewed-by: Jason Gunthorpe Reviewed-by: Vasant Hegde Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu_types.h | 2 +- drivers/iommu/amd/iommu.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_io= mmu_types.h index 4b4a37fad70e..bdd7d5f3c4a6 100644 --- a/drivers/iommu/amd/amd_iommu_types.h +++ b/drivers/iommu/amd/amd_iommu_types.h @@ -353,7 +353,7 @@ =20 #define DTE_FLAG_IOTLB BIT_ULL(32) #define DTE_FLAG_MASK (0x3ffULL << 32) -#define DEV_DOMID_MASK 0xffffULL +#define DTE_DOMID_MASK GENMASK_ULL(15, 0) =20 #define DTE_GCR3_14_12 GENMASK_ULL(60, 58) #define DTE_GCR3_30_15 GENMASK_ULL(31, 16) diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 3505a14a4d2c..02cbe82ffcf1 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -2081,7 +2081,7 @@ static void set_dte_entry(struct amd_iommu *iommu, if (dev_data->ats_enabled) new.data[1] |=3D DTE_FLAG_IOTLB; =20 - old_domid =3D READ_ONCE(dte->data[1]) & DEV_DOMID_MASK; + old_domid =3D READ_ONCE(dte->data[1]) & DTE_DOMID_MASK; new.data[1] |=3D domid; =20 /* --=20 2.34.1 From nobody Wed Dec 17 14:23:42 2025 Received: from BYAPR05CU005.outbound.protection.outlook.com (mail-westusazon11010027.outbound.protection.outlook.com [52.101.85.27]) (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 4DAA734DCDF for ; Wed, 12 Nov 2025 18:28:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.85.27 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762972111; cv=fail; b=H/iQZEDO1wQCkVk8iA3gMGROn7dgzbuJ124U/4iiNORNeTW9rQ0zcQFC8UeMaHnMMHXzlvC9/gBtrpJMJmo+S2leZuEP7hXnFEhrsXQDUlmGnfiaifSymWHt1G9livks6VfP90NfyclEHAXTI+KwvHlQx4c5QImTniyYxWZsx0E= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762972111; c=relaxed/simple; bh=mwBary1A+rF2JCuZ/U3UUT3W04CjEQtDKK3EuuB4Aqc=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=NsayJ3RhCSx3KpN3S/7979ViQDsKePPQDefnOS7EQ+6x8Lmr98PlOcMVc2IREl+8NuskNHr/VyZb2yhBOWF4ft9zh9WjG2h13+WG/PNOxi0mvvOnF8aCMknmml406FPAPHfTCxS1x5ZzbhOogHf5yq82Og9NfZJGScWqwIEn+JI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=vclWMab5; arc=fail smtp.client-ip=52.101.85.27 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="vclWMab5" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=k05basjnwxJIj5FEI6UE2lHAAscWRQvggEJCFRziwqYyHlH2lkyt+RCWJVV69Qj7+9WgRqZMEGu+pmF1wjEDcalEEPv4wZ4FRoyE9qiky10g+EkDhAdo3pAHpycs3jL8n5YBP4Dp0BWMytyYsmWxSTwoTxkkn2KXmtWqbkH05f8OHUW4bU7rLV/eDRYNMb0YjrsGatYg8Oild43yANmhR5IRBk1ejww0p/2n1QraEU8QPtOVI6hw5VcU9P+6CaqnJ0/Xkkd4xOEOyO0eliJd2M1vqaZA20EFfyw7JDtZ3SV3e3EtKkBZV22cf1U1SHiOjJJv398xXlhpd3F+ologqQ== 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=Omzki7ZLq6+yzrWQ3wbKUw/t4bPxsCLs0Qjfs4lvJ/A=; b=mKXUqgnuCiKLesZ2v5I/EMB33NIG2ToEItQFl2jo89jYnWJs8JK4wLPJU2GWToHGDdVaCfBp+rEZ3LTl7GWjv3GlX9PeZlbNs/OWfhUcOs1mdHxoyoVbC5UazCPHu8WWWllyC3iqabZpH2/bToJ7I49GRkdAcytkPY7B1R6rAhbUDP8VHZukVQoy3dtRXAXVOLlsn4ril6HfbGZnBqwiwllV52i5dYoHeoI1QR0GE1w3x4dzwta1jygtQOBv85QCxBDkP6xgq98rGl9GTXATemTgPK6N+bU65/q9Vy/0q1k9F2m0BrmWiwKBV1ezH7vdUecwJGgDZUgNhAjPnkUZ0g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=temperror (sender ip is 165.204.84.17) smtp.rcpttodomain=nvidia.com smtp.mailfrom=amd.com; dmarc=temperror action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Omzki7ZLq6+yzrWQ3wbKUw/t4bPxsCLs0Qjfs4lvJ/A=; b=vclWMab5DGieOC/pS9l68kg7PTfSxe+NakcSQWYchw/W8JzGRwG2Hh54ke8JfSgS6GmOwn4lWngWb34InOosqBOa86QttI63IeuOQpuzGXm2DKgJYW1DwcESoVCG2/+zTAnI6cRjxQDNiJCNjc18Eiprb/hK0PY+kJshRO3qf9g= Received: from MN2PR08CA0016.namprd08.prod.outlook.com (2603:10b6:208:239::21) by DS7PR12MB6021.namprd12.prod.outlook.com (2603:10b6:8:87::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.16; Wed, 12 Nov 2025 18:25:39 +0000 Received: from BL6PEPF0001AB59.namprd02.prod.outlook.com (2603:10b6:208:239:cafe::ec) by MN2PR08CA0016.outlook.office365.com (2603:10b6:208:239::21) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9320.15 via Frontend Transport; Wed, 12 Nov 2025 18:25:38 +0000 X-MS-Exchange-Authentication-Results: spf=temperror (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=temperror action=none header.from=amd.com; Received-SPF: TempError (protection.outlook.com: error in processing during lookup of amd.com: DNS Timeout) Received: from satlexmb07.amd.com (165.204.84.17) by BL6PEPF0001AB59.mail.protection.outlook.com (10.167.241.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.13 via Frontend Transport; Wed, 12 Nov 2025 18:25:38 +0000 Received: from purico-ed03host.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 12 Nov 2025 10:25:33 -0800 From: Suravee Suthikulpanit To: , CC: , , , , , , , , , , , , , , , , , , Suravee Suthikulpanit Subject: [PATCH v5 02/14] iommu/amd: Make amd_iommu_pdom_id_alloc() non-static Date: Wed, 12 Nov 2025 18:24:54 +0000 Message-ID: <20251112182506.7165-3-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251112182506.7165-1-suravee.suthikulpanit@amd.com> References: <20251112182506.7165-1-suravee.suthikulpanit@amd.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-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB59:EE_|DS7PR12MB6021:EE_ X-MS-Office365-Filtering-Correlation-Id: de1a5ce2-ca91-4f26-8fbe-08de2218e16e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|376014|7416014|1800799024|36860700013|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?e/wse+6Ez/mOUx8j5Mu73c0XYOwSgHb7fgaPo1mmAgvP7ZoyyVSvKxK87YSp?= =?us-ascii?Q?oc+1W98waowfaLg+TofEa1L4SAqDOpp6cq1oWx9+HKsuyt6jeoVHzHkRHWK2?= =?us-ascii?Q?UGL982bzm5ym3aGL6lV2C3CTGoGsgKEBiSDdWuppOM7NhtH4JqUSIrIc7BX7?= =?us-ascii?Q?EH1QBGn8mXexExdhVtWGYx4Fuir0GdwNmQpC1ilH/XEaNw46zyzuayhr6HtA?= =?us-ascii?Q?tUMgsVSGv7b99nN+c/dlzIDUR6Hesf37Tn/Q48EuCzysOOeLkcrYxUklazSx?= =?us-ascii?Q?2kfvcYqVgV0gc9M8AKTqOH3CignB24MHmrRbYQ/755xHNZiS7VWYOa2UAG5z?= =?us-ascii?Q?qHNcfGsdwthKN6M1tNxRvkxoqNy5JkA4ftdJYJUTjgcW5PxuIe/7q3Svo7v+?= =?us-ascii?Q?ZdyxGmo4x7b12twrE1ZtMX00tlkQ7J7Y0VTGSMB5lvWiipOjBO9sOtc9n7AA?= =?us-ascii?Q?TplNsI82PDYs/h0ughdVPxY4PUtbTK65CRq5BTEqHa9jvNvP6hUkv7m4QHlq?= =?us-ascii?Q?Q5mc8QkIM7RICrSnXJ6snlAT8JjF9XlqHGfW84qfkJQA3JKVMeD1hAtF52Mf?= =?us-ascii?Q?hCQmghhx0b+PygnLUuJ1pQogMYFhnAlUUo/W6IXeF/wahd+nW7D3SzZxueas?= =?us-ascii?Q?UoPxBIks90rFXQ4Edcds8u1VmCk4qRmOen+ivVnO1U4qSludoIidBCOtuxVf?= =?us-ascii?Q?b6IAN234f/wktf3/+ILZeNOv7MCp899hcygewyqKhEyfgv0qXgmSDNRFYZ5I?= =?us-ascii?Q?JDMYW4u/P28Gj5XbIpph7aco9MdmmSqkKVx24pDX4/B++znjlCnxVZ/4oQcY?= =?us-ascii?Q?6ibEgVpq3xCNb7E+VbX2QEMXlVIYsZyUkt4V0RC0W8EgSwhccDH6oIuP33AU?= =?us-ascii?Q?FFJQNZtmZbhpX2PYrazbrEtX3Uxm1yW/Uz9SscUm1ywCsPlcNrk3VhZ6pMdq?= =?us-ascii?Q?yIKvyOk/LmU0kYSKiaCRzxtgssesJUouPa/vQdzFDmhh+Z1uy84pPSkeaF1a?= =?us-ascii?Q?4QOrymF4MSdydGSJKGQk7FA9QhRgD6HJ6n5x5T5ck2xeANUfktxEAKiGDbWi?= =?us-ascii?Q?RogPHm+IipPKiKJYd7jAoW4S2aoN0DNInDh1DQnpfqLfK8RODxhZ+xAK+XDY?= =?us-ascii?Q?ay+7N2FzwKEzyARp6C1XQ9tvIg0W4UK1pgX3mLfhAbLMIjlzLU/xAo9B2Wxv?= =?us-ascii?Q?EKxuCu2SKjw+tT3geOQZBm0AzBVpgsqk+4zQpfnzEchd1tGitWvI6GTJmYGq?= =?us-ascii?Q?45rqmjmdsUgfNMgMUcTrfNrVSqTANzNlDaD6CgRTsJcWe7DxHTnxUVaojIM8?= =?us-ascii?Q?nFZyuRhQLqpjZzHTlEcnYVFODp+C76kw0K7KuSIbvq1ZTjqchFYabrRDLDzl?= =?us-ascii?Q?3ZgU5OEilYAN9/4xgQm/LOzqAKr836gi77An7rv6vspRxNE3g/XAMX4CNKNW?= =?us-ascii?Q?3OezoLHru0evje0FPVhlHAymQpLlIo3j+eE/GmOAcIKNa2SUDw5wFUyrrzsh?= =?us-ascii?Q?wz+VPCzvtPY6m51PmK1GQtBJ540EMUDo7FRo4C8Wi5Rm1JqY0ks2MTpppnID?= =?us-ascii?Q?2PhMUKAlnEp7zdzf4Kk=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(376014)(7416014)(1800799024)(36860700013)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2025 18:25:38.9437 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: de1a5ce2-ca91-4f26-8fbe-08de2218e16e X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB59.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB6021 Content-Type: text/plain; charset="utf-8" This will be reused in a new nested.c file for nested translation. Reviewed-by: Jason Gunthorpe Reviewed-by: Nicolin Chen Reviewed-by: Vasant Hegde Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 1 + drivers/iommu/amd/iommu.c | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/iommu/amd/amd_iommu.h b/drivers/iommu/amd/amd_iommu.h index 25044d28f28a..a9d724d43398 100644 --- a/drivers/iommu/amd/amd_iommu.h +++ b/drivers/iommu/amd/amd_iommu.h @@ -26,6 +26,7 @@ void amd_iommu_set_rlookup_table(struct amd_iommu *iommu,= u16 devid); void iommu_feature_enable(struct amd_iommu *iommu, u8 bit); void *__init iommu_alloc_4k_pages(struct amd_iommu *iommu, gfp_t gfp, size_t size); +int amd_iommu_pdom_id_alloc(void); =20 #ifdef CONFIG_AMD_IOMMU_DEBUGFS void amd_iommu_debugfs_setup(void); diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 02cbe82ffcf1..b42738e9d8ab 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -1787,7 +1787,7 @@ int amd_iommu_complete_ppr(struct device *dev, u32 pa= sid, int status, int tag) * *************************************************************************= ***/ =20 -static int pdom_id_alloc(void) +int amd_iommu_pdom_id_alloc(void) { return ida_alloc_range(&pdom_ids, 1, MAX_DOMAIN_ID - 1, GFP_ATOMIC); } @@ -1875,7 +1875,7 @@ static int setup_gcr3_table(struct gcr3_tbl_info *gcr= 3_info, return -EBUSY; =20 /* Allocate per device domain ID */ - domid =3D pdom_id_alloc(); + domid =3D amd_iommu_pdom_id_alloc(); if (domid <=3D 0) return -ENOSPC; gcr3_info->domid =3D domid; @@ -2478,7 +2478,7 @@ struct protection_domain *protection_domain_alloc(voi= d) if (!domain) return NULL; =20 - domid =3D pdom_id_alloc(); + domid =3D amd_iommu_pdom_id_alloc(); if (domid <=3D 0) { kfree(domain); return NULL; @@ -2825,7 +2825,7 @@ void amd_iommu_init_identity_domain(void) domain->ops =3D &identity_domain_ops; domain->owner =3D &amd_iommu_ops; =20 - identity_domain.id =3D pdom_id_alloc(); + identity_domain.id =3D amd_iommu_pdom_id_alloc(); =20 protection_domain_init(&identity_domain); } --=20 2.34.1 From nobody Wed Dec 17 14:23:42 2025 Received: from SN4PR0501CU005.outbound.protection.outlook.com (mail-southcentralusazon11011070.outbound.protection.outlook.com [40.93.194.70]) (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 AD6C43563DE for ; Wed, 12 Nov 2025 18:25:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.194.70 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971953; cv=fail; b=P0XekJIJC4VUsSuiywJL9oSmH1kQe/w6IR3wMfUxZ5pgpuLCNw7kY67ZSSUhaMqd6FawZEg5mhM7FO3dkAnj22JrJC1/sOGdgpDU+BpElS/22baGOd64qOxYXhLOYWweI+lldJ9yB8hqBb3jhkW4kzD10qBzLXXgoQRZ8z4LwJc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971953; c=relaxed/simple; bh=ELIjPhrnx4j+w3iIPyRSr32J/zy8ZkJ0lR45Oq+wysA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=sDi1Yuv+uYWzNOlYqIFkGwM0oafCHEC6T9bpXoTb89+qSbDlHxedMGfaUJSyIp+qU0wYIjhAotdXgJRfK3C9PNaaXx/zIKrWSjHctNCO9w7x1Wyxaf9MLh0Z9dIntdHtR70lg/1E/5GBFK8n090isphP7ycmNKpGgOFEmRiVuJg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=4OavHIuw; arc=fail smtp.client-ip=40.93.194.70 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="4OavHIuw" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cDXqKnhlRvCuWDNd+zpqJiKoK/85GOlclrLLJvzIBT6w6D/2/QHChCyON/XUB3a00XirSxntDl5F8ioQE0TnoWQIlDMtW2M61wHopSnpGrsQFYaxX78OzEeFLyjxlUTHZFNOJjH2iElnuomtUc+BHWmGL1ZcnvULAErqQ06GGmM5LAlFq+pmWdLmlF/0t0qEXYvAK2FCfLPozmZGISekbBx+AgttObfQiCGu2pPX//MnybPeuJFg9Sx2DHvtxYwnSC34k2g6ehtBg1LuZ3GAG1s6LA78UAHXFTC1TQmnOiMwwRNoW7v4D4oqBBCXTy6hMmvo8f4gGjK/i9dedCZUnA== 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=6hDhcPIQuunr+iOdvxERkrROxQq9TjhD7HblJzqTZ8k=; b=tgutYpasvYs1GvJSAQP45fgW4Owe0KoZe/sdLSetKigdovIB0pU+f0EAT71/eDrNfxE9H5XZ0vPPHW17Atpx7/q1sbB1FZuk+B3zCbmAk9bOgVU+2a1fB2UxVkXdvMGh56Eja9grHrEe5lnn4Mr1D8NMwAw6+UHfqM0cR3hLaH6/aNozyqXp2pjVrVa6UZys0gUHDJJaUd7LkUruMzhMKlmUIio/7Kawb6E3o61gukpcQRicSqq9VXVe+DaOWW0fpeOLhbYq+yIa8pkDZKYUTYsfs3DxFRrO9DqQu0nnXSw1cH/j1SYuPx8V4FYVc8XLfkkHhXp8TGNlRZPE7na+DQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nvidia.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6hDhcPIQuunr+iOdvxERkrROxQq9TjhD7HblJzqTZ8k=; b=4OavHIuwjDWC+Kjkr/nuL6QL9IaTf/tzQAi1jpknEUxewZci9j+jW0vuupoYLH9KGt/G+fTMAm0xJBsT2YGuAz+5eJnN6TGMplinffPeRAbCo2p3ZBDg6KlyLomlQ/2HOA2HnAoPmZCzuPQY0VmGK2tAgUV9xGIZmQL9vVq/dPg= Received: from MN2PR08CA0014.namprd08.prod.outlook.com (2603:10b6:208:239::19) by SA1PR12MB6845.namprd12.prod.outlook.com (2603:10b6:806:25c::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.15; Wed, 12 Nov 2025 18:25:45 +0000 Received: from BL6PEPF0001AB59.namprd02.prod.outlook.com (2603:10b6:208:239:cafe::3d) by MN2PR08CA0014.outlook.office365.com (2603:10b6:208:239::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.16 via Frontend Transport; Wed, 12 Nov 2025 18:25:45 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BL6PEPF0001AB59.mail.protection.outlook.com (10.167.241.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.13 via Frontend Transport; Wed, 12 Nov 2025 18:25:44 +0000 Received: from purico-ed03host.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 12 Nov 2025 10:25:39 -0800 From: Suravee Suthikulpanit To: , CC: , , , , , , , , , , , , , , , , , , Suravee Suthikulpanit Subject: [PATCH v5 03/14] iommu/amd: Make amd_iommu_pdom_id_free() non-static Date: Wed, 12 Nov 2025 18:24:55 +0000 Message-ID: <20251112182506.7165-4-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251112182506.7165-1-suravee.suthikulpanit@amd.com> References: <20251112182506.7165-1-suravee.suthikulpanit@amd.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-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB59:EE_|SA1PR12MB6845:EE_ X-MS-Office365-Filtering-Correlation-Id: 8712af6e-7418-48bb-8b9e-08de2218e4f7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700013|7416014|376014|1800799024|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?yai7fOsbLAkuTEj5GMDnG3nzQOutIQQaEKp5NxqJlbTCNEHl5LoQFX76MZUJ?= =?us-ascii?Q?N/q6RlQa70VPu2DS75cR+Fdimv/GizipJk2k2vKpRFj86z4mkJizT1TDZBDJ?= =?us-ascii?Q?6ptX1ptZDVrH5vGGvLlsOiS4zR10MFwnpAKZu1yqmjNrNV02y9fg+CQ0EsZu?= =?us-ascii?Q?JUR95hZgdJ6E8vyLa+g3Nx0w9uc3b+PWkCbzeB+VVczFn83XtBq7pspctBFW?= =?us-ascii?Q?eatoWz0LfXN9VlNrmVPylF+d7+7yaaKvbscYF6jALPKqRbxt0PHcVjFjzDbO?= =?us-ascii?Q?NG3vJDVwiffTv/A/mXjO0vTshGa0BcNkrKRCQYUDzCDXuLsVhtrbVtEN9IDQ?= =?us-ascii?Q?4vLiclF880O07C8mj9bajkXKWgWhYixkingbCQZV6LenC8F+GAf7HWavoowS?= =?us-ascii?Q?7lq7dIVPP5/L7n+EhL/xfb7/+9BbPvUXR06DjEOmksabtRVs/Gl0RYWrxCpP?= =?us-ascii?Q?Q59vyloletpDTiAU4cIEwrBkcBpZTWJsRzc9c2g+/wSJ5nVFCIAv66wWhUW3?= =?us-ascii?Q?s8CYVPaYW2YdXrfla0IYD1uYmWPqtfc0oAP3yM3UG+LJ0HRR/W57uFGyDyuo?= =?us-ascii?Q?HE5MQH32VWQvIaUbTRbp0k32TW/fp217EwiG2mAxSWiThCJBRKwpjPkhmLHu?= =?us-ascii?Q?PgPwq1KW6YhRvn4Ij3awfKV06SJdNVI4K6y0kAZWF3RK7qgIztYXsF/t5yd6?= =?us-ascii?Q?cCxiyuhu/I7ZCvCZ0vig3wTrBUTYaWwV91dTVbFz4OHllHOUGgQn9zC5uSx0?= =?us-ascii?Q?CDnf1FFhBM3rU2ybGkUZ6bxoJXmZU/+1fMy+8jpHP8sfKCy+s9FopQg1S+3N?= =?us-ascii?Q?dLe8ohU0aHt0G1JvX4WiXkES5D9YA1Rf+NjC5Yd/MenhEUbruJggHY6EXK4k?= =?us-ascii?Q?oYtuvylPFAh5WTbbG2xfk8MDqe1GYlEbG0n75c2so8RUzFPmdPmaJnsuuH4+?= =?us-ascii?Q?VtK80GwUzVSPbWBfSBMvVsgC1f85aFOXGqOpoawzzFL4dXnGR4s8oft1xeRz?= =?us-ascii?Q?n/bLFD7FYQ2A7uZ4gpm53EtN/jSypy6eYH8cyAAoR6vBuJjIYDtKWY15FILW?= =?us-ascii?Q?jhiRsA1QXQuXaZfVgreL/PT7pF8Jwk2h4D37WsuyLG6tcRk/Z1FoemskbTN6?= =?us-ascii?Q?xQ9YzsyocJmX5KF3tPgsycBDSdhfcXkH0MmbRuPvJfNfri3aAaApSMcbhtOI?= =?us-ascii?Q?h22Ow3Xl5EB1ZDCkzQItBgI5w4pQ8ou7Vxk3tMc6HRen41VaJFMiH3c85Qvz?= =?us-ascii?Q?szUC+rTAepoQNwuWyWnpCSRu7aJNUP3YD9j5srfiqa7f27m7dv9S0fRtioIx?= =?us-ascii?Q?ITEadHR7P2vnEskoM3gnjPf57gJpzO/RKVlOtRt/dMWY3Z5uEowtTvz1Ugri?= =?us-ascii?Q?f0OaZovIOOiYqkAXVEZQEynusCtBoA9pd8xOMVJH4YoyW737Yo6rsAHU/+4f?= =?us-ascii?Q?Sga6+1uGiEvs7/tyWXaKZTIEiQi6a4SMxLbxje8B8mWzDCMMDOHC1Z09NHWM?= =?us-ascii?Q?/yyer3/BhQh1081FWXGn/0yKCtQkef4/hgoULuW4/Ofu3GUw9IfI6CyDyrFB?= =?us-ascii?Q?IYs8XVOt4m/yU3+leCE=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(36860700013)(7416014)(376014)(1800799024)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2025 18:25:44.8747 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8712af6e-7418-48bb-8b9e-08de2218e4f7 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB59.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB6845 Content-Type: text/plain; charset="utf-8" This will be reused in a new nested.c file for nested translation. Reviewed-by: Nicolin Chen Reviewed-by: Jason Gunthorpe Reviewed-by: Vasant Hegde Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 1 + drivers/iommu/amd/iommu.c | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/iommu/amd/amd_iommu.h b/drivers/iommu/amd/amd_iommu.h index a9d724d43398..2730fd0b55de 100644 --- a/drivers/iommu/amd/amd_iommu.h +++ b/drivers/iommu/amd/amd_iommu.h @@ -27,6 +27,7 @@ void iommu_feature_enable(struct amd_iommu *iommu, u8 bit= ); void *__init iommu_alloc_4k_pages(struct amd_iommu *iommu, gfp_t gfp, size_t size); int amd_iommu_pdom_id_alloc(void); +void amd_iommu_pdom_id_free(int id); =20 #ifdef CONFIG_AMD_IOMMU_DEBUGFS void amd_iommu_debugfs_setup(void); diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index b42738e9d8ab..81eb27aa30e1 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -1792,7 +1792,7 @@ int amd_iommu_pdom_id_alloc(void) return ida_alloc_range(&pdom_ids, 1, MAX_DOMAIN_ID - 1, GFP_ATOMIC); } =20 -static void pdom_id_free(int id) +void amd_iommu_pdom_id_free(int id) { ida_free(&pdom_ids, id); } @@ -1839,7 +1839,7 @@ static void free_gcr3_table(struct gcr3_tbl_info *gcr= 3_info) gcr3_info->glx =3D 0; =20 /* Free per device domain ID */ - pdom_id_free(gcr3_info->domid); + amd_iommu_pdom_id_free(gcr3_info->domid); =20 iommu_free_pages(gcr3_info->gcr3_tbl); gcr3_info->gcr3_tbl =3D NULL; @@ -1882,7 +1882,7 @@ static int setup_gcr3_table(struct gcr3_tbl_info *gcr= 3_info, =20 gcr3_info->gcr3_tbl =3D iommu_alloc_pages_node_sz(nid, GFP_ATOMIC, SZ_4K); if (gcr3_info->gcr3_tbl =3D=3D NULL) { - pdom_id_free(domid); + amd_iommu_pdom_id_free(domid); return -ENOMEM; } =20 @@ -2774,7 +2774,7 @@ void amd_iommu_domain_free(struct iommu_domain *dom) =20 WARN_ON(!list_empty(&domain->dev_list)); pt_iommu_deinit(&domain->iommu); - pdom_id_free(domain->id); + amd_iommu_pdom_id_free(domain->id); kfree(domain); } =20 --=20 2.34.1 From nobody Wed Dec 17 14:23:42 2025 Received: from DM1PR04CU001.outbound.protection.outlook.com (mail-centralusazon11010025.outbound.protection.outlook.com [52.101.61.25]) (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 654ED3570A1 for ; Wed, 12 Nov 2025 18:26:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.61.25 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971962; cv=fail; b=RyqK6jEiV45gFuz4rCbjhaOcRNyxtpLkvn3mvj65aTf6IDe8/MHTG5nAioXYNvyCH80ysukPNIVrLKVBhN1HLd1E6mzGXS+toWGBu4XR7ZIG+1EorS8Jha4BeUzzKKdjyOdfnCRzvBDOhrNMLMTIRnpxCTJTDjtJb81WaOeHXAs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971962; c=relaxed/simple; bh=sPUTVAFgKr9ruNjiwu6OUS8/ThL0URLZt4P2KJ/G8Bo=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=dBShskF9sstx7pYrPhzjwnKJ9tbQhC8euCSagrMgn+rvpxEhwoRuv+4k92NDEJU5nvdzk1RMPjfXNVQ1gphcpxdamUgbcO3fz+DpKEd4xy7YZ6L4zZJSxm2tZJr3IwjTNHyO/aSdtPnQe26s61y1yRoZ51ImoebjG9/mZ97kDsQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=mTQfNr/A; arc=fail smtp.client-ip=52.101.61.25 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="mTQfNr/A" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=p4I5G83BSCXpYVP8q2/w6DNbXal2rGMsZDGOkcdLNPtsNl+nxycUk7JFFTKhvqt4qnfAwBXV2WaEK0NCbqRkrh/Lk9XNAlbrlHnaI2UB+QSexbs68DV6v8FL61kqo+Ly8KQcrTXGL2mZeU25CJA8cLUPBedFSYvaCMgj9+Iay9tiKiIA9h/CjA8HE/TmX9p4/3DkxTCnwRBzIzUbhtRsTzaeEuXSnChjtgrmPs6/RRqzA+pwYvzxJPhONT2E5X3jyqGk4/dwTjKOsmjAFagDnJl/0XFIGQzHy8s3frdvyIbVxp0BAHOfCk5JYAEjtstAnQmG38/YJMwf9eYFRpsWaA== 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=DOeWeR2hR7qVKAnOem52gQIB5GHJOrbbE5fs+eurI+I=; b=FrciCsjXE5xIis5sybABU0/PTBmXPSiMTrGPB0i+MSNiLe1NxXCigcMFbDo1avDl6IYwK2zWoYCANI4CNT1GANkMW6eTX7/CBl79yfn5nM45X2ClSwAW+8As7WmQfSqlVRi0kbKzz/bqLaT9j4K2rENv3ZChJLWAHT2q1aOeJ0m6S4Jmxx5KFy/FcbBSF0YcJOk1Kuggl+Dbm/LJi1umysl6QcRQv4S/5tSUYMZBYqY55kkQDeH03EY3f5MxUgoLkiqDP+ReScET0sD6BFIgzywpWxZ0d1Wwu9Jdb46RtYJ5PYGpVPzJnSzGjrkhPIbnIcCazwE2w3tNTIiEyQrN0g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nvidia.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DOeWeR2hR7qVKAnOem52gQIB5GHJOrbbE5fs+eurI+I=; b=mTQfNr/A9LKOB7u2SPAJKrKpl4xNlkX3kbgUwrD92Vh/K4CyUzK4NcaQwHVG2eiwMfOga97m1cNhIXSJYIXWexnHNn8PWrkvp+hvOesOWOQjONs/XW141DMVOCwaTZnnmtotdvrr9Pzt2a5GtF09gcTZv+mYpDo+H9WON/BRr8U= Received: from MN2PR05CA0063.namprd05.prod.outlook.com (2603:10b6:208:236::32) by DS0PR12MB8344.namprd12.prod.outlook.com (2603:10b6:8:fe::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.15; Wed, 12 Nov 2025 18:25:50 +0000 Received: from BL6PEPF0001AB54.namprd02.prod.outlook.com (2603:10b6:208:236:cafe::31) by MN2PR05CA0063.outlook.office365.com (2603:10b6:208:236::32) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9343.5 via Frontend Transport; Wed, 12 Nov 2025 18:25:45 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BL6PEPF0001AB54.mail.protection.outlook.com (10.167.241.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.13 via Frontend Transport; Wed, 12 Nov 2025 18:25:50 +0000 Received: from purico-ed03host.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 12 Nov 2025 10:25:44 -0800 From: Suravee Suthikulpanit To: , CC: , , , , , , , , , , , , , , , , , , Suravee Suthikulpanit Subject: [PATCH v5 04/14] iommu/amd: Make amd_iommu_make_clear_dte() non-static inline Date: Wed, 12 Nov 2025 18:24:56 +0000 Message-ID: <20251112182506.7165-5-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251112182506.7165-1-suravee.suthikulpanit@amd.com> References: <20251112182506.7165-1-suravee.suthikulpanit@amd.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-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB54:EE_|DS0PR12MB8344:EE_ X-MS-Office365-Filtering-Correlation-Id: 40cb5816-b9d5-48d7-ee1e-08de2218e80f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?2V2ab7HP4vSLK5gsEgvtQUE4o1M5GjchlWcU25gsFDMyDyPy5EthQ1Qa9eHB?= =?us-ascii?Q?MfUyKnUVGUy5IDHivX8VaPUGXPo9k3SF6dNdk10TdCaH/mNik6dzkS7wbnz/?= =?us-ascii?Q?mBmi/0L54NIs+ojNDH7A2MjPohNgvO/kAbISLglkiaf0j+9L6w9YFNRpwIQw?= =?us-ascii?Q?C58r8uQKPbt9kzze0miCyiexx4jXpGThy/JWJOyUr0VgRkHLo9HIkpZ4FpsQ?= =?us-ascii?Q?66bt8dQKgO2hMDUfr3ukWzT7r2epbM7PI3CpyEtRlnjh9fpH1A5sTWL3iSrx?= =?us-ascii?Q?1Nvj2LB49ctIPWYbt6qSv6+uWYrL4cXKmUP1AVvIThNBn907U08zTBJf6f7D?= =?us-ascii?Q?YZGToB71in0TKFqUEazAhQT/iJ8QAqsZWJk0/FQiHOa4wn6Wk9FhzH6EHwUr?= =?us-ascii?Q?k4nie8kUK4w9p8vrvFl6E1T69jG6lZPsRFixcLjH8H1wrkQKrnneWlkwu299?= =?us-ascii?Q?TkY9mOgNI5H8f8kQyBaAD2BdcbR6gQl41S6h0cgDLPCBdbNvpM/H88XarwVJ?= =?us-ascii?Q?wWupKUk9q0i9LiNiohBKDA6JghuoAhIrcEcahNhqzYvWu3vgOsrVOiWpCNmJ?= =?us-ascii?Q?iaqoLbM/tG9BclxmvYHQTJt/WZsfFSrij6dVg4uqYozfxEZ3IWMWM4XS+xAE?= =?us-ascii?Q?Y5VbiE5/eoHo7hly55fLKL6XMhjHbzPVobQvhyfGoj3K6x1AWfSpjaQAIiQe?= =?us-ascii?Q?QapYPzhEFHFFsPw1WLrpvHiPG85qiJxSzR9VFowpo6GoNubRZsuKOgJhPrAS?= =?us-ascii?Q?7aKILBa6UoBghd0EVVSgoF2H2BHDAUVFjxcF1n2jWFL8GNOrgoKicJbbLYMl?= =?us-ascii?Q?l+PjHSZzEHGf/onlCXejPwDnzPvviF9yB1igK4moBHCeDCJY3OZ9tzxCy8oZ?= =?us-ascii?Q?sKXGZUKMm0VpbrF72Xqv6aPkUTMlt/J8XS+L32/CHzi2y2SoBQ9ocxyrr+vS?= =?us-ascii?Q?tFPUfy8KCJYprzXd/zJKRu9mYGDvyA+jjCgd91EobbBwH/GqUvCM3m/QsRYD?= =?us-ascii?Q?zh946ifxOCsmiZdixKUrtvo/apEv1l/Oz6fIeSJ2QgcC7qq9eO/MwjOxyrF1?= =?us-ascii?Q?qG33MHizLugWHDbTxfSC0ONsjIQg1Cw9JLH6iixoSDMY6taQZ0E/wudC4L9Y?= =?us-ascii?Q?r3Cx5hFgZxA5nwrbzJbdNgh+uSzT9UkRVLrktyMCa9LdtGmrmtJdZqQsXqQy?= =?us-ascii?Q?hOaHBEUUqrOE20Jj2CtuN5ji67u3MEo8IeuwCq00Yjlx2On0eRLwG26KE8Kh?= =?us-ascii?Q?Sza+aTkiF5636276t1tdTdLPXcx5KMetwq1SIH9Kp11KKlkJtFR7p6GcV8tP?= =?us-ascii?Q?rjhVNUT7Tb9/T8OzQfcg4vGGVffoUFAyLDwyskmdEppladXRd0zX3c8/Bnth?= =?us-ascii?Q?m3Wg5rONPoqe8cvQ5Il92aNn3xX4Yw+v73OTuL69SQyoYFF90zWXXWTJTfCI?= =?us-ascii?Q?cLAyJk/A2lfP6F5QvbKaeJtGo+vKXuGD5iFGdQt/BlaNYePEiVrTWnE0mB3X?= =?us-ascii?Q?eNDoY1Aa9T/J79OV6EXH9SyFTTUor6FpZmweO3t5cq6BPcTnh6qjOZaL+en6?= =?us-ascii?Q?zFruqnI0DnVu2QNY7ME=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(82310400026)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2025 18:25:50.0666 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 40cb5816-b9d5-48d7-ee1e-08de2218e80f X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB54.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8344 Content-Type: text/plain; charset="utf-8" This will be reused in a new nested.c file for nested translation. Also, remove unused function parameter ptr. Reviewed-by: Nicolin Chen Reviewed-by: Vasant Hegde Signed-off-by: Suravee Suthikulpanit Reviewed-by: Jason Gunthorpe --- drivers/iommu/amd/amd_iommu.h | 8 ++++++++ drivers/iommu/amd/iommu.c | 13 ++----------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/drivers/iommu/amd/amd_iommu.h b/drivers/iommu/amd/amd_iommu.h index 2730fd0b55de..a6ffb1ece2f9 100644 --- a/drivers/iommu/amd/amd_iommu.h +++ b/drivers/iommu/amd/amd_iommu.h @@ -187,4 +187,12 @@ void amd_iommu_domain_set_pgtable(struct protection_do= main *domain, struct dev_table_entry *get_dev_table(struct amd_iommu *iommu); struct iommu_dev_data *search_dev_data(struct amd_iommu *iommu, u16 devid); =20 +static inline void +amd_iommu_make_clear_dte(struct iommu_dev_data *dev_data, struct dev_table= _entry *new) +{ + /* All existing DTE must have V bit set */ + new->data128[0] =3D DTE_FLAG_V; + new->data128[1] =3D 0; +} + #endif /* AMD_IOMMU_H */ diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 81eb27aa30e1..0be2c818504c 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -1976,14 +1976,6 @@ int amd_iommu_clear_gcr3(struct iommu_dev_data *dev_= data, ioasid_t pasid) return ret; } =20 -static void make_clear_dte(struct iommu_dev_data *dev_data, struct dev_tab= le_entry *ptr, - struct dev_table_entry *new) -{ - /* All existing DTE must have V bit set */ - new->data128[0] =3D DTE_FLAG_V; - new->data128[1] =3D 0; -} - /* * Note: * The old value for GCR3 table and GPT have been cleared from caller. @@ -2033,7 +2025,7 @@ static void set_dte_entry(struct amd_iommu *iommu, struct dev_table_entry *dte =3D &get_dev_table(iommu)[dev_data->devid]; struct pt_iommu_amdv1_hw_info pt_info; =20 - make_clear_dte(dev_data, dte, &new); + amd_iommu_make_clear_dte(dev_data, &new); =20 if (gcr3_info && gcr3_info->gcr3_tbl) domid =3D dev_data->gcr3_info.domid; @@ -2114,9 +2106,8 @@ static void set_dte_entry(struct amd_iommu *iommu, static void clear_dte_entry(struct amd_iommu *iommu, struct iommu_dev_data= *dev_data) { struct dev_table_entry new =3D {}; - struct dev_table_entry *dte =3D &get_dev_table(iommu)[dev_data->devid]; =20 - make_clear_dte(dev_data, dte, &new); + amd_iommu_make_clear_dte(dev_data, &new); update_dte256(iommu, dev_data, &new); } =20 --=20 2.34.1 From nobody Wed Dec 17 14:23:42 2025 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012037.outbound.protection.outlook.com [52.101.43.37]) (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 4E0FF357737 for ; Wed, 12 Nov 2025 18:26:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.37 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971967; cv=fail; b=Nmgqbo2XK5voz/7wSBFyaEK8CE9UL4p5Ukq6KwAfr1PNZAeCnYibeeDXtTfKPP6R7rY3/fzuwkf5cXGBit7tDKxDeT02YnnHJxQxAhmKBy1O2MlggyCP8QAkquBoSn7pYw0CKk1rSN26EMbIgYPqLPYqXkGZAV0rB9nmIW82vBk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971967; c=relaxed/simple; bh=29zwzi3qeYlJD0rxDE0X8rnIQy0WUrMkqt2gLLf8VR4=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=sHoyLouejpxPGDZhmRE2f2+wsBC+DWQ7857L2kjuy06KvweAwdmokPow9Ii2cGpMx8ILZaS9f/qSEzlrpkm+OKVMTgKATmlj0ZLUf9n3qWWLUyern4GPYZzCVndGv5glgld673/SGKWfoSSCJrt+5nj/607Q68VeV4YkmuWoPdY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=fAofcBbc; arc=fail smtp.client-ip=52.101.43.37 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="fAofcBbc" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gxsYqRt5mmqL+rdm/BfMJgR2etWegcnb8ksW6r0dj78s4J2AO7SFe9jc2Ru226/kFTXDH20Wf8STi2/ahHmzqcnQC+vCEJOzc3TM8awicSX5KZbK1xMYjNjFxMNmzexoyD1Aq9qpqNSRxgCh+np5zHvSlMfRcl57NVNT67gW6yH8ymHwYBg9DjioNF3GojxsBvEoFGuS2YghxB8TT2mnl0wup22yzmPh72F/ZTnw9/Yxy6KFCGNQPmyB6zCLsuZC0YmmGS5xT1PDGiBWrrTiHWPNAyQP5qwEow2Fuw7uf3ZHuWuxColsy2UH6SKww+dbil0FnaFBVtS7DjlN6Jlnlg== 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=GIPTP+CKtXjFk9i6vC3qH4yW42R5m1r5+JH4vpiVJRU=; b=AzUvFC+HwIN9mW4X9+TLV++7XNFsxM5lRztACjBNUSTfumimo6G2gYRqlCpXyMje9RmfQDd8mibBGOBJB2Joi53YUtiFaHLmA7cYAGRXpZpsvTDfQRcXjvqnCBVXhoNUsEWdcW8x2E3DJC5dlhCSwYBPcn7d1FhmppGTgcnmQWe3wuYts94QO9igeRVvFVhmbbrGoe9ljZbpZjOjUJs3uZGPBUd1CZywMk9hMrwKed6WM3kOXSdh8fzHML/f5Tp7b8OpUjNxvUigx+gdrF8TVX0PQQ0Cg4Kq9lHc7Y0SvneeHkM8sUzSICLR6opoAK8GHsJo7bjlqrhpPlPunYjpAw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nvidia.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GIPTP+CKtXjFk9i6vC3qH4yW42R5m1r5+JH4vpiVJRU=; b=fAofcBbcN/6hdzBmoMwf329WrUY7W6u2EU/vuLYITBUfpw6AXUvmbudrB3zFsPDsCFNXKHoxogqb8s4HA/HZ0Z1reGWbCsaQP4N1W2x4HiMb6uRMOC8xwPoWnsWHSEYgNrzk/XO2hV0rST1lxM6J7p5ReH8FZ+5Un0IKy5ock64= Received: from IA4P220CA0011.NAMP220.PROD.OUTLOOK.COM (2603:10b6:208:558::11) by DS5PPFB8FBD73EA.namprd12.prod.outlook.com (2603:10b6:f:fc00::65e) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.16; Wed, 12 Nov 2025 18:25:56 +0000 Received: from BL6PEPF0001AB58.namprd02.prod.outlook.com (2603:10b6:208:558:cafe::10) by IA4P220CA0011.outlook.office365.com (2603:10b6:208:558::11) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9320.17 via Frontend Transport; Wed, 12 Nov 2025 18:26:02 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BL6PEPF0001AB58.mail.protection.outlook.com (10.167.241.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.13 via Frontend Transport; Wed, 12 Nov 2025 18:25:55 +0000 Received: from purico-ed03host.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 12 Nov 2025 10:25:50 -0800 From: Suravee Suthikulpanit To: , CC: , , , , , , , , , , , , , , , , , , Suravee Suthikulpanit Subject: [PATCH v5 05/14] iommu/amd: Introduce helper function amd_iommu_update_dte() Date: Wed, 12 Nov 2025 18:24:57 +0000 Message-ID: <20251112182506.7165-6-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251112182506.7165-1-suravee.suthikulpanit@amd.com> References: <20251112182506.7165-1-suravee.suthikulpanit@amd.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-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB58:EE_|DS5PPFB8FBD73EA:EE_ X-MS-Office365-Filtering-Correlation-Id: b3d326bc-80e5-41fe-8fb9-08de2218eb58 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|82310400026|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?gvKNknIRKrk2A+2dhLuQfqtGXX7zLX0MaXiVYweRIR9MWkUdubqhQ/MXvCHT?= =?us-ascii?Q?eRYkCyx0TObrETlA5OT3tt1MhjPtnhWZ33UR3UmL9V0pYvlAiKflc1CFDEdJ?= =?us-ascii?Q?keGQbaW20Q3vY9pRkpCI2BfcfNZ8HJXvDHAaPwM8d+X2ui97NuyVklCjcMBl?= =?us-ascii?Q?vQlQwBTIAKI/t+ki+6qPLYz6r9EP3gdZmgfrGJbIKQ4JzWNzf0YrnG31+c23?= =?us-ascii?Q?vh1c8z+zAq93ss1tFe9XRAdchab/ZGV2AMLjvQxKqlz0Yk4Z/KspEDIrJGjg?= =?us-ascii?Q?QyvMshEdH95y5IY6DBZyfvjfLqXdy6PwO+Xll3XQ4Or4PebkCF/uBEIG42rg?= =?us-ascii?Q?VegyEgk1SW18ervPN0gAp0i0p0YXXnV8h79DS4bAfBRh6ExwN47yWgOd6SaK?= =?us-ascii?Q?ir4IkQxSPTOueSiHamsBDCj+xuHFLVtljW3Dxc8K3TXtFARQo0Jjhp8Truxy?= =?us-ascii?Q?oE0ClCBr3Eo8xDBGHE1aGVFCvlhp6XPKkAyBnEuy8MNzhXzb416Kz+hSFL7g?= =?us-ascii?Q?lJK8z9OhC7UkthOSKdO/fY3XoxHUCVWkWzH4+imDEk2KeMWV/Ob7C68oJC1m?= =?us-ascii?Q?El1awXgcFNIvSe0weE99Ba7flhg/xB+ys9ZJUsmOTBrjTHRIuFMVCSH8/faj?= =?us-ascii?Q?Dtts7x8kpA67A2oxYVYlLp9BxI98+58Adzy18Boammew9i5AhbXMVRKKS9wr?= =?us-ascii?Q?NqPD3cPoREOE8xOCrzUyPIbfxgOzX1f+0ANKAcaI24PHDgZWBIrW5lC9QuqA?= =?us-ascii?Q?0DS4Mj8iPBZe7rEepfiO4L9gvO3MuPyi1kicCLVyqb2keFHa8s0KV9/LUpn8?= =?us-ascii?Q?Gd+uvphlHYih13Clbm0cB2s2DZW42JyUPyDGdDKT3CQSJWooAU0S7Q8kD3W+?= =?us-ascii?Q?bFmzAU5b8Qayvnb41TECCij2zr7KzsRyF+yi+akTwEL5Av5A3o6w6BeII33Y?= =?us-ascii?Q?wJsS///Yeit0ATvPGMVopK+jjjZJpJMY4KVAfvVKuqkc13RxfjJH5d3jPAyz?= =?us-ascii?Q?cFonz8AMXF6FCM87jhcBmS98jx/IWwqtyd4iBpjy5PBbBisTTi+fnqjQt4br?= =?us-ascii?Q?dR7BywHT05bWH9Euf/lenL+fDQeoWL45AIG2/nGVkyxd+J5HDfmuS7Rvlyix?= =?us-ascii?Q?UWTqMw2FtQsKNIkNllJxaOnBO9Z4hWpvhos3XaO+aDeEPef2miO8voaldiyp?= =?us-ascii?Q?Fk7XNTpv/vQxg+0+8GiiGMWIEKsTOo9x2YPb1G9KK2BMWPdcJ+54cdJ+/DI7?= =?us-ascii?Q?6TsJv+TB+B7f3GahaG0ry3VCM4w0SlRaWN8k43hb4+LXxuAb4EY648L3FYVp?= =?us-ascii?Q?vzSATFNk5adA3o04EBFGua7ecVcEdbK+TvH9TqdDXaZLoBFkiHboXkeoeLXQ?= =?us-ascii?Q?ucSugIlZqb2e6+62LdGTGOkHZPmhHrEGkm+hG/nC8t1uo/5p/yVdEOtHeKBv?= =?us-ascii?Q?m+Bea70KR2rJAo7Cg2MGdJVTFEJwzhvMlRvFSP2Xg5f7bqB18sdRsT7+KhNp?= =?us-ascii?Q?n8FH1jI4bmHJkHc4dxP4bb80/NDEuy5N7U6DmKrzJ6HWADZ+t1HsfBafsLxT?= =?us-ascii?Q?vJ12UJqfXC7Lt7i7XIg=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(7416014)(82310400026)(36860700013)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2025 18:25:55.5769 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b3d326bc-80e5-41fe-8fb9-08de2218eb58 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB58.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS5PPFB8FBD73EA Content-Type: text/plain; charset="utf-8" Which includes DTE update, clone_aliases, DTE flush and completion-wait commands to avoid code duplication when reuse to setup DTE for nested translation. Also, make amd_iommu_update_dte() non-static to reuse in in a new nested.c file for nested translation. Signed-off-by: Suravee Suthikulpanit Reviewed-by: Jason Gunthorpe --- drivers/iommu/amd/amd_iommu.h | 4 ++++ drivers/iommu/amd/iommu.c | 24 ++++++++++++++++++------ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/drivers/iommu/amd/amd_iommu.h b/drivers/iommu/amd/amd_iommu.h index a6ffb1ece2f9..3ad8b5e65a82 100644 --- a/drivers/iommu/amd/amd_iommu.h +++ b/drivers/iommu/amd/amd_iommu.h @@ -187,6 +187,10 @@ void amd_iommu_domain_set_pgtable(struct protection_do= main *domain, struct dev_table_entry *get_dev_table(struct amd_iommu *iommu); struct iommu_dev_data *search_dev_data(struct amd_iommu *iommu, u16 devid); =20 +void amd_iommu_update_dte(struct amd_iommu *iommu, + struct iommu_dev_data *dev_data, + struct dev_table_entry *new); + static inline void amd_iommu_make_clear_dte(struct iommu_dev_data *dev_data, struct dev_table= _entry *new) { diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 0be2c818504c..a36426f096d2 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -76,6 +76,8 @@ static void set_dte_entry(struct amd_iommu *iommu, struct iommu_dev_data *dev_data, phys_addr_t top_paddr, unsigned int top_level); =20 +static int device_flush_dte(struct iommu_dev_data *dev_data); + static void amd_iommu_change_top(struct pt_iommu *iommu_table, phys_addr_t top_paddr, unsigned int top_level); =20 @@ -86,6 +88,10 @@ static bool amd_iommu_enforce_cache_coherency(struct iom= mu_domain *domain); static int amd_iommu_set_dirty_tracking(struct iommu_domain *domain, bool enable); =20 +static void clone_aliases(struct amd_iommu *iommu, struct device *dev); + +static int iommu_completion_wait(struct amd_iommu *iommu); + /*************************************************************************= *** * * Helper functions @@ -203,6 +209,16 @@ static void update_dte256(struct amd_iommu *iommu, str= uct iommu_dev_data *dev_da spin_unlock_irqrestore(&dev_data->dte_lock, flags); } =20 +void amd_iommu_update_dte(struct amd_iommu *iommu, + struct iommu_dev_data *dev_data, + struct dev_table_entry *new) +{ + update_dte256(iommu, dev_data, new); + clone_aliases(iommu, dev_data->dev); + device_flush_dte(dev_data); + iommu_completion_wait(iommu); +} + static void get_dte256(struct amd_iommu *iommu, struct iommu_dev_data *dev= _data, struct dev_table_entry *dte) { @@ -2088,7 +2104,7 @@ static void set_dte_entry(struct amd_iommu *iommu, =20 set_dte_gcr3_table(iommu, dev_data, &new); =20 - update_dte256(iommu, dev_data, &new); + amd_iommu_update_dte(iommu, dev_data, &new); =20 /* * A kdump kernel might be replacing a domain ID that was copied from @@ -2108,7 +2124,7 @@ static void clear_dte_entry(struct amd_iommu *iommu, = struct iommu_dev_data *dev_ struct dev_table_entry new =3D {}; =20 amd_iommu_make_clear_dte(dev_data, &new); - update_dte256(iommu, dev_data, &new); + amd_iommu_update_dte(iommu, dev_data, &new); } =20 /* Update and flush DTE for the given device */ @@ -2120,10 +2136,6 @@ static void dev_update_dte(struct iommu_dev_data *de= v_data, bool set) set_dte_entry(iommu, dev_data, 0, 0); else clear_dte_entry(iommu, dev_data); - - clone_aliases(iommu, dev_data->dev); - device_flush_dte(dev_data); - iommu_completion_wait(iommu); } =20 /* --=20 2.34.1 From nobody Wed Dec 17 14:23:42 2025 Received: from CH1PR05CU001.outbound.protection.outlook.com (mail-northcentralusazon11010000.outbound.protection.outlook.com [52.101.193.0]) (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 49B3A35773D for ; Wed, 12 Nov 2025 18:26:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.193.0 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971969; cv=fail; b=Z+SoOkgv1VcaAf1X1PHoXZw9EYvt0fK/tjqsFxnmZPWW3lgqF4Sh12JoVWUlZzAzV7MB8Cn5DRQByuXnhHpTRZ0Czc3bQGb6NUDvib2v+VBy2svwF0kAEyqSMuWryYBwbbNnjIinseGx0pQtZIYc1u6o6jCGiuoFHtw0X2A+kOY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971969; c=relaxed/simple; bh=PwipERzvypGFKK974dmFNGG04FJ50B9n/u9Kr2h55MM=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=q78qLgP1e8nwt0u2nWxUaNM4lHEgd2VH9nkEkkuBScUuOGZJIJVRQ9ZeAu8YmmCLjQXMrfPqthNefUz43QEl+GfDNDGbGvfkZj0SZX/mKri5BxFPOOO968ls/AZO0W6t/gP0PLiK5KcDDjJBxLCVwJEqHJgM4mIuQBT0SazDYfo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=sY/aIqtq; arc=fail smtp.client-ip=52.101.193.0 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="sY/aIqtq" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YEMqahslG6HhN4u0u3gJ2DsDq7mVb6c8ANNvSNeyY2EMmSmqGeJoN9/QqECanTkYzgrBDPx2P+n1+uK1B4E5KWz6H60GW6ENJg3f0BUc9d/DXbL/k3GPKMoN1srrd7/5DvjRFjyQLLlvaqRVerCvpsHmziefqqtllymWl8AHF1039JOoStZW3m4iAVWiTAgkX61g68fa59v/H+Qc9HXSa+zj4zMyjFXh10nVd0OhwmLA07FjbRBcX+rH16y68jcq9a9TG2SuG5sWd3FhUK5iBH4pdFuA78eaNmFKFsMiVmpcPd1YQpouT774WFVt90tSCLcAYtyirHWQV/2/+yyyPA== 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=J+6vf/6vi7INSJxGt98mVgh+kcYeknuH5XHqzZZ5js4=; b=sfstIBbT53wS7AHsu2lBPeuURPP69W7c6vrvQR618uwKkAErIUlMMCVqPtOVD/TnmFB5psH+WyW1Y0TqIbnbE2khXs2XJGhFZNUhbw5xqQMvx79SJybUSIOUw56MClHKUi+uPztqEJy4cBNc3KnhiEYioa8DCh0/L00OobXeXA14FHsd8cKuWDZrSxF8qBbICW49ZIrTyIRaMCf4wJynWEJq0cLWL1qN4Zwtr/rE8QH4vXTQYrA61U1pxlCa/B8EcnfSlZspsVi6nfNmjtvjAToLgNBNbOhNIlGsi8HmbUkJI9oJEx6Jlp6g/4LUgN5SYSgn5x3aMaSBfVQ5N/cHvg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nvidia.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=J+6vf/6vi7INSJxGt98mVgh+kcYeknuH5XHqzZZ5js4=; b=sY/aIqtqomKiHavrN5aGgYr4Cjaw8DqOWJKFEAjlCENDtXBIYHzzRK0cBIDxHsp9B5pWFOgBxS7eRIzReeYf/EG7PfqZKppRzKbSB4++XJHNz9auF7nuPU8oMzWuZosnZiHFKctwBB7WZGL9n8f/kzGxjTN0JuPzn8sIThjrIkM= Received: from IA4P220CA0002.NAMP220.PROD.OUTLOOK.COM (2603:10b6:208:558::13) by DM4PR12MB8498.namprd12.prod.outlook.com (2603:10b6:8:183::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.16; Wed, 12 Nov 2025 18:26:01 +0000 Received: from BL6PEPF0001AB58.namprd02.prod.outlook.com (2603:10b6:208:558:cafe::d8) by IA4P220CA0002.outlook.office365.com (2603:10b6:208:558::13) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9320.17 via Frontend Transport; Wed, 12 Nov 2025 18:26:08 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BL6PEPF0001AB58.mail.protection.outlook.com (10.167.241.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.13 via Frontend Transport; Wed, 12 Nov 2025 18:26:01 +0000 Received: from purico-ed03host.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 12 Nov 2025 10:25:55 -0800 From: Suravee Suthikulpanit To: , CC: , , , , , , , , , , , , , , , , , , Suravee Suthikulpanit Subject: [PATCH v5 06/14] iommufd: Introduce data struct for AMD nested domain allocation Date: Wed, 12 Nov 2025 18:24:58 +0000 Message-ID: <20251112182506.7165-7-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251112182506.7165-1-suravee.suthikulpanit@amd.com> References: <20251112182506.7165-1-suravee.suthikulpanit@amd.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-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB58:EE_|DM4PR12MB8498:EE_ X-MS-Office365-Filtering-Correlation-Id: d0c9f849-bc41-44e8-3b8a-08de2218ee9e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|7416014|1800799024|376014|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?TkG7jyVDDX8oCoj4i90r5XNM332AlM/I4Nd3sizQUHvNtTXGkt3qJNrzfg8Z?= =?us-ascii?Q?1Xwv38RxMpVWVDDQnhoTpD7HNeBCWcd4IC0ufqyJ3GK0sgsCMuyCqPrdIVLs?= =?us-ascii?Q?5nnC458ADJDma2/76Okwi5YOyYvSPuXNmgzoXVHHylhRkqy6L66sgfbneQA2?= =?us-ascii?Q?qqr4r43g4XpM0DWwOQaQm2CjD27K6g7aW6DwAA7w1OsoaPFDW/WqxeqgpTt+?= =?us-ascii?Q?HNMl5/7D/HFJRRcZpse31iGeE5DaogTwOh1YHyKWJB+qpPsA52ReR2BRZ8fD?= =?us-ascii?Q?HfxY8aTmfMaCUpemd9W2+2A0ymE2ddYFfGuLSt/FcOX5Wg9VZd2yw3Mivj74?= =?us-ascii?Q?z7RxuIJYbCuHCZEmr4TCWTBqSWXNeUumGUcjcSBKcSxsT5AcxFarRzvcc9oh?= =?us-ascii?Q?xuaHpSZ9tmgWQJFfb+QEUPMpiCEIszDEYrw1dB0F0p/DlZNkL88k1GXu6VF4?= =?us-ascii?Q?3sOSNGlO3RGkVRfN9bfA943QXNJN+lB4ro53mvKXfQavndA9y6h+B17JdQoT?= =?us-ascii?Q?ZcH9Za9SQYZn61+F9k2ZolHIVpLHZe2z3V5f0bVPiIwRgiSCky0lFkJQijTA?= =?us-ascii?Q?wVunSuJr7BmWXQYamWVGSFj/SvkVerb4UxaFziOmoRHs2ydAG2VhIjKD6eV8?= =?us-ascii?Q?KRhUhIAoJo6sWT35iP+jdTP1oDJJTZeTCt6tJmHIWi0GfI5KlRWM7IdLV3tN?= =?us-ascii?Q?1DLuKo/vCP0dppnk7+uGuGOVoPJXfPPqqJXHpb19Biw8ffCZGYbkQ9uWj07C?= =?us-ascii?Q?WmU2ofkOSO6enyLG2+N4gKExOsom/9NVtDpDFmfbM4lMDNYVHcueXlhbKk4g?= =?us-ascii?Q?XAgw1felrlZp+JzCtws6eAvFMikSsktrJbKGQPgOaopdQa2RUBzCe5Y65oNi?= =?us-ascii?Q?msn3xgJy7obNDHaE9nwO8TkADgfxWp0LXd0IEI+RQyPXbS1leuuR/SaABg5i?= =?us-ascii?Q?ve3tIeYS1yvKMd/vc8cv79YbCLAtaZW3KhxRSLg47AwEcTkYRE8IVrxGgch5?= =?us-ascii?Q?n/k+2ht9b9scexwXfxVzGYy63DVLhtKM4EvUlvlrtJFeTEui7j8rcf5nBc1B?= =?us-ascii?Q?stlPZfhy5dYvfDIeCDwq/sYzv7EQIsjgdXwjZ9vmieLuh2kzmDoYs+DXgyQz?= =?us-ascii?Q?NFdQyEmeMfof4wFpF3CM9hrtpYrMSJvh3gFdHkmbufvA/WctZEniUpUhE1Tr?= =?us-ascii?Q?Lqpk7zPgib2iyOSTROPHYufDVi55F2bJGx/DzPjJ7XR8DWwkUKsM0J1cG2LS?= =?us-ascii?Q?Vw3C6FIACUWFoWvp51n9AtH+yQ0KpaZMc/39fdgO2gfZPTDAXdK2RLVNN1WA?= =?us-ascii?Q?AkfMwEdlpUAGqN+wCHwsbXIZQMsDQ9hwl5TnIxC/0xK5GAUDhXnMrwrp0PmN?= =?us-ascii?Q?JGe3HW/6U5sNXlMIja2JYQTpETIU4J0Ob7zamReL/ZApKDuJXfTjqKwoynE/?= =?us-ascii?Q?b862kkxJppvKF/MMNQ5Wg1guRyXVuXRSXAkUvNSVczMHbGwGx0UwMFov8Tyf?= =?us-ascii?Q?cj5PEtfTB0+/ZJQekt773RmF8PUG9oJ1TdkVtGeFbBYzlv38AK2CHPwW/9pt?= =?us-ascii?Q?b7bgXWD2QZWsclhN2yU=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(82310400026)(7416014)(1800799024)(376014)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2025 18:26:01.0651 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d0c9f849-bc41-44e8-3b8a-08de2218ee9e X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB58.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB8498 Content-Type: text/plain; charset="utf-8" Introduce IOMMU_HWPT_DATA_AMD_GUEST data type for IOMMU guest page table, which is used for stage-1 in nested translation. The data structure contains information necessary for setting up the AMD HW-vIOMMU support. Reviewed-by: Jason Gunthorpe Reviewed-by: Nicolin Chen Reviewed-by: Vasant Hegde Signed-off-by: Suravee Suthikulpanit --- include/uapi/linux/iommufd.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/include/uapi/linux/iommufd.h b/include/uapi/linux/iommufd.h index efb52709c0a2..d111ee1dc572 100644 --- a/include/uapi/linux/iommufd.h +++ b/include/uapi/linux/iommufd.h @@ -455,16 +455,27 @@ struct iommu_hwpt_arm_smmuv3 { __aligned_le64 ste[2]; }; =20 +/** + * struct iommu_hwpt_amd_guest - AMD IOMMU guest I/O page table data + * (IOMMU_HWPT_DATA_AMD_GUEST) + * @dte: Guest Device Table Entry (DTE) + */ +struct iommu_hwpt_amd_guest { + __aligned_u64 dte[4]; +}; + /** * enum iommu_hwpt_data_type - IOMMU HWPT Data Type * @IOMMU_HWPT_DATA_NONE: no data * @IOMMU_HWPT_DATA_VTD_S1: Intel VT-d stage-1 page table * @IOMMU_HWPT_DATA_ARM_SMMUV3: ARM SMMUv3 Context Descriptor Table + * @IOMMU_HWPT_DATA_AMD_GUEST: AMD IOMMU guest page table */ enum iommu_hwpt_data_type { IOMMU_HWPT_DATA_NONE =3D 0, IOMMU_HWPT_DATA_VTD_S1 =3D 1, IOMMU_HWPT_DATA_ARM_SMMUV3 =3D 2, + IOMMU_HWPT_DATA_AMD_GUEST =3D 3, }; =20 /** --=20 2.34.1 From nobody Wed Dec 17 14:23:42 2025 Received: from DM5PR21CU001.outbound.protection.outlook.com (mail-centralusazon11011069.outbound.protection.outlook.com [52.101.62.69]) (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 3715E34CFC4 for ; Wed, 12 Nov 2025 18:26:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.62.69 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971977; cv=fail; b=kAf84X3cV+W9sbfAIRhSo74tDXVUYDWuHpUnFe+bJyjB+Y9iOuLtV3vNvuOmo25WsrYU5lVKPSr4rj/ajRSo9hp8ho6iIJ/21VTwXoVVnq3AOm5YcQX4NbWPLJdSqA7lJTCDw9IyA/D8ebwlIskTea3cd4Y2ivOZ7aiCJi1mfmM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971977; c=relaxed/simple; bh=c65gMbs1znME3uAzIh8oSwVYrmfhU1HhK/OAMiwprZ8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=mVUsVL4e/7B1ICrHfaqb6rynmlck2uVWwsd+biC5T7EYU00g4g/xZqzckBafTdI/bD/KsC53u1hJD2jAjVYWR1Tv0StL81Mmk7ORgtnxuki4Q0AOMYt2dK6zbUyhmVEWnM8J3k1aDL2pqm2tiUDNqv2vFgzuAWC2R/abrHGEJho= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=bby0+pCm; arc=fail smtp.client-ip=52.101.62.69 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="bby0+pCm" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VXmp4MEcgXvH1fgx4dwaoPRpRhk7KC7t+no9YYui+Rb2w4kXGtXyN8K+KvOezy1TY1lTgRjxNpTHbJ+IOpy99vNdKlkWafRu+5H06Yhw4NAEvYbzSZ882aknQJXqXjxfnyQMwQFdKeFqm7SckT2znphZ1GH+Tr2IQoJ3MszbfKpfPZQ3M/GZmA3Uq1bt4dtPibFFqjMgysOdkaV/Jjc2d505GACKedWqe8D5EC58Mn09o2Pm1vPcBHL2SsdzrOm2asT8RNNM5fWmVto52rftzzW5vRYqoWIrIg4zVX7Y/rn26EU//utCyxptSOTwjAugx5c04bFaHbF1KeCCHCPCVw== 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=2CFNwmM5tVr97DreExdH6BfKdq1WYPyiocE3RbvvsCI=; b=YgOXACWpjGlJZlRzREDwVL6Ag0SXHmIKeioAswrAuw1xsupaQrw9OItGJl07FHmwR+IsIx7S+7LnVEFpkBXwMl3IEkMPOlHn3ke1GSUKrpIu+wp2PtMs9sqhv72UwzMfsKeZce2TDFfdKP2tcetueB8uqQOPuiW+PABpW7OUekRblJ6mgVPmjo2XmS5KVzoSpHyblntnqa7ZhIhHDWdXnqjQCDzFowWnwz0gD6eDc0XmI3F/lbkaMFDd65sNNlmbJYfVgWCYONevYpotF8KGaBCYlc+cVLb90OYUEj3F1SlYA5xwURWM3Krncf1Ay/QKpQTAaFGhqw0uKpziKVnJjQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nvidia.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2CFNwmM5tVr97DreExdH6BfKdq1WYPyiocE3RbvvsCI=; b=bby0+pCm93H2o+6+Xrxgx69H/ctnzkOlUz94VydO8oXb2475SpJK9ruRsbBbejLgTORWB5ROktd6rLdu+SAIz+eM7pQQtOWdmEI7S7a5no1lD6jI7ggXgRYh2Fxq6Ovv4CKkS/12cXoe0IjzRpeFnxDMyR8uL1HJQjteXoNaPzg= Received: from BL1PR13CA0115.namprd13.prod.outlook.com (2603:10b6:208:2b9::30) by DS7PR12MB9475.namprd12.prod.outlook.com (2603:10b6:8:251::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.15; Wed, 12 Nov 2025 18:26:07 +0000 Received: from BL6PEPF0001AB55.namprd02.prod.outlook.com (2603:10b6:208:2b9:cafe::2d) by BL1PR13CA0115.outlook.office365.com (2603:10b6:208:2b9::30) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9320.16 via Frontend Transport; Wed, 12 Nov 2025 18:25:42 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BL6PEPF0001AB55.mail.protection.outlook.com (10.167.241.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.13 via Frontend Transport; Wed, 12 Nov 2025 18:26:06 +0000 Received: from purico-ed03host.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 12 Nov 2025 10:26:01 -0800 From: Suravee Suthikulpanit To: , CC: , , , , , , , , , , , , , , , , , , Suravee Suthikulpanit Subject: [PATCH v5 07/14] iommu/amd: Always enable GCR3TRPMode when supported. Date: Wed, 12 Nov 2025 18:24:59 +0000 Message-ID: <20251112182506.7165-8-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251112182506.7165-1-suravee.suthikulpanit@amd.com> References: <20251112182506.7165-1-suravee.suthikulpanit@amd.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-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB55:EE_|DS7PR12MB9475:EE_ X-MS-Office365-Filtering-Correlation-Id: 60078cd7-be7a-4c96-fe88-08de2218f20e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|82310400026|376014|36860700013|1800799024|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?kcJKfiA7//ntqKlNMwOTtkYuFPUBU2RvFgThcB4ut2i/TR6VZWa3bzXz74db?= =?us-ascii?Q?4kM5QkzdJ0yYTuIL5kM50uQ5ka6WbTWLURLVQHFjANjY0bT7c/SJEjk9CW9u?= =?us-ascii?Q?rq2zopSodCQcBl1ZloNFrAUXbkWC6bhPD8kOo5xgOh6F2cFDVuIet2sXaDTo?= =?us-ascii?Q?CHANsjDaWS76QrNsFAV19dCxejhuPop3RGNuR/N8ayG1TB78FRnpErtiJ+hO?= =?us-ascii?Q?/3V8MzDAeQuqSqov7FMhOiAiAGOEo6Zb92s3brjhiaKIE12ugqm43QiyPZih?= =?us-ascii?Q?bXV2btMnXNm9iN/zdTBQOOnOjEo4sG7s4Q7xfoEv2toVb5qRxzJpVueDbjvL?= =?us-ascii?Q?tF82vXbPdWWB37UjKoc6sfqRP/VGC8A8I0d2rrlVvHqsSyqvasbC3t2Gur2H?= =?us-ascii?Q?+glD4zmq02ng2jg8N3zeTS4h/Ww+XVQcBTqr/CGA13hK1OsYPyAPAVJx7xq8?= =?us-ascii?Q?cLYdnmgKXuAqanKqrKCjpcTB8wEMBuQLkkQF2Je+RhOnSj9W/opXG7PWjXEN?= =?us-ascii?Q?0N/lfSUdWr4fmWkCyUWWvhIps06ooQP55Wv3h3DqTRsCjzzWnAZJ56P+gy6D?= =?us-ascii?Q?XRIYEwobICwlDOyu0rtV8jESvzfJp2HbeooJZA3eDr7KaJDPi2kSV7bxeD72?= =?us-ascii?Q?cnS0OQ5gFCpbaYVxu0oj4gMm5homVJMhWKJQbS5yGW+SGPvoRk8kovX97esz?= =?us-ascii?Q?7ELHaKSeL7SvTtVkQVyicwrqJ5alO9xbp3/ZfZZ1KY+CiO1R30MOaLNePSVq?= =?us-ascii?Q?kPRau5qMBdtPcGdmQoXW7MV671Mb+vDkCTCX/Ndug0jH32wNcxuLP4MhcRsv?= =?us-ascii?Q?CtRZ6zdlitBVKd5RW/yKmbTjxlrQBQwaE5pBFaqLAwRUsaNyCdlmdIbXfO9X?= =?us-ascii?Q?snNbpna/qeP4E7hMMsqXTLhFm7OYQmBDSYZt2YfDEF4aWUGUgYNtmSzO7HNn?= =?us-ascii?Q?R2ybYK4/uXY1/WndPKWrcpOqfD2a5B+mGoW18E8VGLfMpop+Mo4lByZVgzbc?= =?us-ascii?Q?TjoZbmaqu1VXZjumWVmHMTMtGh74/XqeVgBF/rHxun5SPQD8s+sFsm51RL8x?= =?us-ascii?Q?y7iFffdgUXJ0nCtUEMlyY0Eof4+mNNSwkPserIoUUFFF9Mzj246e7Z51MrkS?= =?us-ascii?Q?HOMfV8WLidHowc/AOx/Y0BlHhUEgYAIkYQvusBRS+yuL4Gk23rWwVEXjgndo?= =?us-ascii?Q?KIwZF9aBeSv2Y5zASVKNmUambI6rGFfkPnduK9jzBRUHYoC6u+ZbTB7JkvzJ?= =?us-ascii?Q?aDeneYaQ/K5+n+HFNf9tYywOr1J8fQtIsVHwwCdVxJVwb1MbEcU88y+szfiF?= =?us-ascii?Q?y7C26A7kS6+RN/IJZm/e4jsjVmIKp7bEVsNXaq6/P01ZEyanuVidSFc8JEiM?= =?us-ascii?Q?DGKCKkpG40lax3ETMEKHImdpPs75KxfFbKXYTshupBmiBEb2swiMC+ZU5GTR?= =?us-ascii?Q?In+3EJWuU6LK1nYbNL43wXxSidxJvhcMhn0dLAPQWKF3EZMLUyfEULOsx6ff?= =?us-ascii?Q?g1fmxXO0EYZiPqWfaIggc4W4IFMPgxM3YW6AzHV90kv3yKu6+FDst+sRL8Li?= =?us-ascii?Q?ccSCN4PqOATnSRY6sUQ=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(7416014)(82310400026)(376014)(36860700013)(1800799024)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2025 18:26:06.8379 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 60078cd7-be7a-4c96-fe88-08de2218f20e X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB55.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB9475 Content-Type: text/plain; charset="utf-8" The GCR3TRPMode feature allows the DTE[GCR3TRP] field to be configured with GPA (instead of SPA). This simplifies the implementation, and is a pre-requisite for nested translation support. Therefore, always enable this feature if available. Reviewed-by: Jason Gunthorpe Signed-off-by: Suravee Suthikulpanit Reviewed-by: Nicolin Chen --- drivers/iommu/amd/amd_iommu_types.h | 2 ++ drivers/iommu/amd/init.c | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_io= mmu_types.h index bdd7d5f3c4a6..d13a50fc209b 100644 --- a/drivers/iommu/amd/amd_iommu_types.h +++ b/drivers/iommu/amd/amd_iommu_types.h @@ -107,6 +107,7 @@ =20 =20 /* Extended Feature 2 Bits */ +#define FEATURE_GCR3TRPMODE BIT_ULL(3) #define FEATURE_SNPAVICSUP GENMASK_ULL(7, 5) #define FEATURE_SNPAVICSUP_GAM(x) \ (FIELD_GET(FEATURE_SNPAVICSUP, x) =3D=3D 0x1) @@ -185,6 +186,7 @@ #define CONTROL_EPH_EN 45 #define CONTROL_XT_EN 50 #define CONTROL_INTCAPXT_EN 51 +#define CONTROL_GCR3TRPMODE 58 #define CONTROL_IRTCACHEDIS 59 #define CONTROL_SNPAVIC_EN 61 =20 diff --git a/drivers/iommu/amd/init.c b/drivers/iommu/amd/init.c index f2991c11867c..a61111c2aabf 100644 --- a/drivers/iommu/amd/init.c +++ b/drivers/iommu/amd/init.c @@ -1122,6 +1122,14 @@ static void iommu_enable_gt(struct amd_iommu *iommu) return; =20 iommu_feature_enable(iommu, CONTROL_GT_EN); + + /* + * This feature needs to be enabled prior to a call + * to iommu_snp_enable(). Since this function is called + * in early_enable_iommu(), it is safe to enable here. + */ + if (check_feature2(FEATURE_GCR3TRPMODE)) + iommu_feature_enable(iommu, CONTROL_GCR3TRPMODE); } =20 /* sets a specific bit in the device table entry. */ --=20 2.34.1 From nobody Wed Dec 17 14:23:42 2025 Received: from CY7PR03CU001.outbound.protection.outlook.com (mail-westcentralusazon11010019.outbound.protection.outlook.com [40.93.198.19]) (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 3B18134DB61 for ; Wed, 12 Nov 2025 18:27:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.198.19 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762972060; cv=fail; b=QnGPCifv1HBRESr8INf4wkd8xyAQfr78TfZg6xPvTMeUIXtu5D/VVcR71FzhqWM9eK4u5QphYsRQBFeKDi8x/KryJ+G1uFV+GM5Y4Hnq6zq2muHGSRn2+aigHtSQkHVNhT/jFqWhkllbzEHzoJ9qTbuzOlkMBBCnWRQHwdrIGUo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762972060; c=relaxed/simple; bh=/92rYh126iF5amixGHYs+uo6GeqpKaT3RPErkPueYSk=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=CNaXtJIKGkK0m0qvVey/Bllwmbyr8AcAJBtcJWsRYJqZx2U99AKIRL/rx9whFidbsFBhYequ7VyCRD9E4j9lNfIF++aoZA8ZomPTH+Y9lsxK8Q036LlBYFyV6SqpiQnpl5gW6kf/c47sOmu86+HvenYlzdG4ttCvqHojO9VrJX0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=hkTnPRgT; arc=fail smtp.client-ip=40.93.198.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="hkTnPRgT" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=C8DnjoQ5VrubZjq0J5hpJ4YY+wx3UdE373l5mfrJMZJP9txDSUHDrSIP2RYmGB8gsNItDou8cDMtifBnEV/69KnmOh/qer7ifBq3mHhpm1QKozI/0n5g6cJYGcmuQiKJwfncQpJXPUu86veEwe7yjbOp2GWRupAA+Qj8Hgq0eEvxzUKZEecZSWJW8A7R7xxStD0KRUyMKdb9wlxrvu7qMWzd2NEBd4WhMGk27z1ISo5zgk/xyUJ/WIAUIE9/08fQjDTuu9IMQN2dcSV1xqeKZzYVkUoxVBrprKwhDtc3ruC2N8GX90TEvHsvwmtHwM68y8/kh/fnpvysl3npw52t7Q== 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=tfD66YdBuYbCKNz4xv/ub76jT1GPVi86VnTU7ECfFm8=; b=hxWwy6ZTqUujBxuvsBBAYthEYseNbGcn9LydRUiQjKFDwoOw4xLdnhhy294EKqqdRInMMZZlCY1UC9WTVqkAVZMqFLxwIq1H6onDG7ceSw6Nzx1m8pVvaFBQP/IZjBg7mXxU5GAyN23d3SBje+N+xbxHy2WvBNWizWMuzX0A7f3mX1vTv82/HM7VM6T4JdRaXoOnhabkRSG/cUDWKA9Ckc8rNDkPrKSh3ibMnifK5QrcxmFsONr9aX4uhqPv0R6Gya62n0hrCSL8Trr7pYrSW4FDfs0hbvPpKgMWgK+Qn+IP2LxEgIN5k5Y19w1JPWu25LME6CpU4Nff28RBjGJQCw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nvidia.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tfD66YdBuYbCKNz4xv/ub76jT1GPVi86VnTU7ECfFm8=; b=hkTnPRgTXpV8Lmxa6zBsiDnINpJIHGpJiTsCwXmsPyGY4Ec8wl1DMsXdlumQpznWSxbJ+8iRNgw2ptY/s8IS4r31Tw4kdhqp7jttwMUTSxIfjReSo2FnZ2j8L5hNBk1HWSgA9x2fO2m6yTb+vo4GNrMojUTSB1TAIwsEtUZu17Y= Received: from BL1PR13CA0110.namprd13.prod.outlook.com (2603:10b6:208:2b9::25) by SJ0PR12MB6856.namprd12.prod.outlook.com (2603:10b6:a03:47f::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.16; Wed, 12 Nov 2025 18:26:12 +0000 Received: from BL6PEPF0001AB55.namprd02.prod.outlook.com (2603:10b6:208:2b9::4) by BL1PR13CA0110.outlook.office365.com (2603:10b6:208:2b9::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9320.16 via Frontend Transport; Wed, 12 Nov 2025 18:26:06 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BL6PEPF0001AB55.mail.protection.outlook.com (10.167.241.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.13 via Frontend Transport; Wed, 12 Nov 2025 18:26:12 +0000 Received: from purico-ed03host.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 12 Nov 2025 10:26:06 -0800 From: Suravee Suthikulpanit To: , CC: , , , , , , , , , , , , , , , , , , Suravee Suthikulpanit Subject: [PATCH v5 08/14] iommu/amd: Add support for nest parent domain allocation Date: Wed, 12 Nov 2025 18:25:00 +0000 Message-ID: <20251112182506.7165-9-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251112182506.7165-1-suravee.suthikulpanit@amd.com> References: <20251112182506.7165-1-suravee.suthikulpanit@amd.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-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB55:EE_|SJ0PR12MB6856:EE_ X-MS-Office365-Filtering-Correlation-Id: cb60f37f-033f-40f1-6deb-08de2218f54e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|36860700013|82310400026|1800799024|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?RmphVy9fuswVN7jDXlRIp2zdCcD0h2lq8D3tBi9R6p2uUNaWBVKY6rjq5+64?= =?us-ascii?Q?7rlyEC6CdBdOcXsyCDSQz05UlA/kRmgHLeAaohxgh1uBO0Z9KD/JxtHbPx0P?= =?us-ascii?Q?Rro/Uyq7KBQNRxDjqKLcyyQ8w77LTGrnND/9aBuToqGiXoqSW790F/ilFhzi?= =?us-ascii?Q?7GRagNtrjzLrpZs3OzgTo/ssrekbu6ajvX8AFFZSss4IUtTL52x2FXoO93YO?= =?us-ascii?Q?RTor69xShe6WM+7yq4RRnsNQR6DNoyUS5fGZo6C6gJ1CJBannJkOg0e5b+D0?= =?us-ascii?Q?4nYytOjW0qQr8OiRoCVGurkNcocYmR/Sz79JpQbKngoxXCcXMrxV5xXC1lRY?= =?us-ascii?Q?/DnD4joH8Mf0Ik84eaGeiEmBQgddjx/hRXGwiOiJVD+k9GOhZsPe6DG6CI3G?= =?us-ascii?Q?DyshiIzrxM4fO46kjDLja1CJtraU56m3J6X72dfyIk6Ti5onFfp0UDDlv2Yy?= =?us-ascii?Q?Jy6nZHUQLdjx8eKOzSqSnT6uA+bcNs6jOy7FAK+Xq3Fxt+tQJ/ytw1UZcUoJ?= =?us-ascii?Q?xAahFkyQx0S1hGIH9FXKhj2nWvaO6P7+voRGfQTh8gOJ6nGwq5iNV6oKfEKb?= =?us-ascii?Q?rY7GDTC/Mm9RfvAVdgJgiN1Tex11HuFpZfVc9ULWrkYBEBi92TjJdhpfy+hY?= =?us-ascii?Q?PniFPULGVmAjGbZFhTIBp+x4DM/CtnZJ+MNEUNF2swyrilzs9bHiJmoHHVQV?= =?us-ascii?Q?qC/4QtoyRNYHjVtUgFBHlyRjBgfHywvQpOr4tXWRpYKh4lpaw6tkRc+xdgCi?= =?us-ascii?Q?hOe0rgOy5IPUoJ5XngrP7fZnNtszNNmpyF8568sAptbXsiXS+SBYLQIrsNog?= =?us-ascii?Q?NuzWCHicmFhVVQSJISRsiJiWo2rV7/VIEsuCvnIWf1KvXxr3kO9kuuboSptx?= =?us-ascii?Q?y8U6dOYHHrxFW9Yzh2G0oUkEyE8pU1nV5ctavRtjLIYGvNBaAYKHvIYyf3Lr?= =?us-ascii?Q?IibwSZLLQK4ttSezinXuBqDhqF18qaZ6QcqlDPPeVmrAKTLm0rK5QCx15hcE?= =?us-ascii?Q?JaYMY1vfZVqO8LMh98VRy1Z3LBukbCZ07QmKKYFYnbdzFxzUoAQUcbOZZd4V?= =?us-ascii?Q?sfvXjx82xDoqdFLA+B6B41itmFN6U9zSJyDLfPRt+uD/tSZN13Y/mlrFcT/U?= =?us-ascii?Q?8iuTuD+y8MNiCAnHskY39xoZZRo3EDPZrXTgZ77/gm3+97dV9yuoYjgjN4Kc?= =?us-ascii?Q?me561l757kvts/ym/DGJzpzRHyUnXQrqRVLHxo/hnffuNZVVt9zWnBpNqjj+?= =?us-ascii?Q?qFsjoSMwKjtJY3Djnq8SUfMh35gqyl7i0y6uZHBZqgPAszLq7tzPfNMDQGRd?= =?us-ascii?Q?4QdpYc2yJDDXRE+ZLjq8rr86rPZTJ3cE7GiHMDJWOm/GUrBr3O9+tnBXeJXM?= =?us-ascii?Q?TV1NdL3XbhV2knjwzaRFpqFhSlj+82uElstuso7oNZFEDmKP74ixak1Kn7i5?= =?us-ascii?Q?OQS0/G7XwnITGiLPAzzfdMlsZVTQcx6XzLo1zzcGVxqRr3llwsuElmZYeEOm?= =?us-ascii?Q?gK52mH1y51U7vFZ6NIUZcebM66f3YvnUbBNldvAJWKYRXteRarF8qIF4zlGu?= =?us-ascii?Q?PaasNS6XAtrgk2o6928=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(7416014)(376014)(36860700013)(82310400026)(1800799024)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2025 18:26:12.2864 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cb60f37f-033f-40f1-6deb-08de2218f54e X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB55.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB6856 Content-Type: text/plain; charset="utf-8" To support nested translation, the nest parent domain is allocated with IOMMU_HWPT_ALLOC_NEST_PARENT flag, and stores information of the v1 page table for stage 2 (i.e. GPA->SPA). Also, only support nest parent domain on AMD system, which can support the Guest CR3 Table (GCR3TRPMode) feature. This feature is required in order to program DTE[GCR3 Table Root Pointer] with the GPA. Reviewed-by: Nicolin Chen Reviewed-by: Jason Gunthorpe Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/iommu.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index a36426f096d2..e03aa8d946b3 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -2727,6 +2727,14 @@ static struct iommu_domain *amd_iommu_domain_alloc_p= aging_v2(struct device *dev, return &domain->domain; } =20 +static inline bool is_nest_parent_supported(u32 flags) +{ + /* Only allow nest parent when these features are supported */ + return check_feature(FEATURE_GT) && + check_feature(FEATURE_GIOSUP) && + check_feature2(FEATURE_GCR3TRPMODE); +} + static struct iommu_domain * amd_iommu_domain_alloc_paging_flags(struct device *dev, u32 flags, const struct iommu_user_data *user_data) @@ -2734,16 +2742,28 @@ amd_iommu_domain_alloc_paging_flags(struct device *= dev, u32 flags, { struct amd_iommu *iommu =3D get_amd_iommu_from_dev(dev); const u32 supported_flags =3D IOMMU_HWPT_ALLOC_DIRTY_TRACKING | - IOMMU_HWPT_ALLOC_PASID; + IOMMU_HWPT_ALLOC_PASID | + IOMMU_HWPT_ALLOC_NEST_PARENT; =20 if ((flags & ~supported_flags) || user_data) return ERR_PTR(-EOPNOTSUPP); =20 switch (flags & supported_flags) { case IOMMU_HWPT_ALLOC_DIRTY_TRACKING: - /* Allocate domain with v1 page table for dirty tracking */ - if (!amd_iommu_hd_support(iommu)) + case IOMMU_HWPT_ALLOC_NEST_PARENT: + case IOMMU_HWPT_ALLOC_DIRTY_TRACKING | IOMMU_HWPT_ALLOC_NEST_PARENT: + /* + * Allocate domain with v1 page table for dirty tracking + * and/or Nest parent. + */ + if ((flags & IOMMU_HWPT_ALLOC_DIRTY_TRACKING) && + !amd_iommu_hd_support(iommu)) + break; + + if ((flags & IOMMU_HWPT_ALLOC_NEST_PARENT) && + !is_nest_parent_supported(flags)) break; + return amd_iommu_domain_alloc_paging_v1(dev, flags); case IOMMU_HWPT_ALLOC_PASID: /* Allocate domain with v2 page table if IOMMU supports PASID. */ --=20 2.34.1 From nobody Wed Dec 17 14:23:42 2025 Received: from BYAPR05CU005.outbound.protection.outlook.com (mail-westusazon11010033.outbound.protection.outlook.com [52.101.85.33]) (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 BDABE34B68A for ; Wed, 12 Nov 2025 18:26:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.85.33 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971986; cv=fail; b=PVenI5Zqm2H+7ilfDDYCfYcRbtsgMoMvMLZpVezq96pN5MyUH2hwwCV8AByBOO722dy9qqXWMHZf8qA5ef7FwX6PxnbkqA1onEIEm0ftirBYhy0O9p6OxRUn/soon+UJexF5DVafYa7MssvCXg3jAb/7jUdOMwylldoZ/aCK71I= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971986; c=relaxed/simple; bh=7oFwdt13O/qo0sOdzvODVXLttcoNse5K1A7UbIT6WnA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Jp5TQXKSZL6DYkh3falDmqojnYxoOWU048ga93SBiDFQHH2sXwXXAsDSQwekupwZ4FmXXuoxIduEYIqE1hfFT565pc8YX+/aBZvSAN3cY8AJ3pue0VVZ5hNEmdtCai7WvG1re3SWtrMZ64FFLCMeKLUly3wdcWcGj+FC4lX58Js= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=LIyCbjcv; arc=fail smtp.client-ip=52.101.85.33 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="LIyCbjcv" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LrBam4x7k2eDeaBxYM6qAt2XEYYI+obKWuIE85s6IpqAcPBV/RBqPsV4Ix4+XAvnjL0GSpXBNR/sI+S/11dXq3vK6tZNBvDiQtfiFewlV2v5Kc+n+JIas9blcgxSjdeI57+BZwsIb1doiPR6Jwrm6clWDwDtPSRz6JNf4cxxo4lcKMlVYU+cdERVwEUixT+kU7J5MivOfNn5GfNTuPZlbjwxVeFdCinYtQQi46/qWHpD7LhJRsIZBvFfY/RpeD0M5Vg+VQatrVXLpCWM2HlL4UrP6THfJZcSp3wMSTCIsDLKz7Khy43NXofQ+SWzudjKQsm6x+U0id0MLqMqE9iZAA== 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=4C2h3AT7oGZm5S1CgfTGl3UCWoSPW3OdWB2YVlFGx1E=; b=nR7yUZ3T0htKCF6g45NQV+OP8HNpJ+3AwuyJ3fU6YsYVwZqzUVScbZvVa9IZUF1vcAAhVbLA0LgZIx9eWMhqpQqw8x/5FM/unkOBTrAvvUY7Nl5u8t6wVzNIetfY34c9Qdyq0TFIwV/2Vul7i3qVwgZHgoKsx4pIFP41rtPm0SBmaW/K21MpQVhItCneFf4XWnwoxUgpVICrF0oMXfsTYh0eHu6xzi1RY2WpBe37s4KI5M/CP6pN+KuKo47VufihuxoxEaonyGLVWu/Rw5HrLkc9uCuuABb2mTbAyGwaItEg66bXNk5OtTkeSwH75fPv7i/W8KszfUSwx+GAuwrwKg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nvidia.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4C2h3AT7oGZm5S1CgfTGl3UCWoSPW3OdWB2YVlFGx1E=; b=LIyCbjcvh68O67OCbEgwteB7ZBubUIhDzlUgLhHJzrrXj4U/cy7Ajmkt+op7F+0QUu9Ts2WtEY1Fz+1AuWyYTbgnAQ2NlPnOq4A4DVx+l53VQrnOMCjnplWII3OQUmcYjpJONlQe53nEMNi8Jq0u7zFmMkNS7X0/vVoX3qjsqsw= Received: from BN9PR03CA0933.namprd03.prod.outlook.com (2603:10b6:408:108::8) by CY8PR12MB8241.namprd12.prod.outlook.com (2603:10b6:930:76::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.16; Wed, 12 Nov 2025 18:26:18 +0000 Received: from BL6PEPF0001AB56.namprd02.prod.outlook.com (2603:10b6:408:108:cafe::db) by BN9PR03CA0933.outlook.office365.com (2603:10b6:408:108::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.13 via Frontend Transport; Wed, 12 Nov 2025 18:26:02 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BL6PEPF0001AB56.mail.protection.outlook.com (10.167.241.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.13 via Frontend Transport; Wed, 12 Nov 2025 18:26:17 +0000 Received: from purico-ed03host.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 12 Nov 2025 10:26:12 -0800 From: Suravee Suthikulpanit To: , CC: , , , , , , , , , , , , , , , , , , Suravee Suthikulpanit Subject: [PATCH v5 09/14] iommu/amd: Introduce struct amd_iommu_viommu Date: Wed, 12 Nov 2025 18:25:01 +0000 Message-ID: <20251112182506.7165-10-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251112182506.7165-1-suravee.suthikulpanit@amd.com> References: <20251112182506.7165-1-suravee.suthikulpanit@amd.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-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB56:EE_|CY8PR12MB8241:EE_ X-MS-Office365-Filtering-Correlation-Id: 39cae984-558f-4cc6-43a2-08de2218f87e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|82310400026|7416014|36860700013|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?1pd1bSvkWNB9PgQ4hEbQsW2KWIE7k1v//0bNXIANA/tdrVju4sQWUM4WNW22?= =?us-ascii?Q?ZsATZzQ1ip97SAOWJ3JT+mY+BNr179sdGnThmND3gFboY1NLnIZxV1hZdr+h?= =?us-ascii?Q?6U34KqV7i9708IfKywixTyC9sYjbp1YDnt0BnMhMl2qVYt6MEsH2bGVHKMKn?= =?us-ascii?Q?hsEQB9/CgoEuYG5X7lfwk5JRAWwJqxmRPXsy5he06iU0LuECxGD6WdQYBHKX?= =?us-ascii?Q?AOKJ+9bheedrB+GRm3D05LTbrKlf6GCipfJD6dQBxei/HtUpujY/7avQuCBp?= =?us-ascii?Q?/W9umvtldoqvVBYHLBnCBiPpS9LxopkLUzq2xN5w0yu+0AatbfUs2B7r/qVn?= =?us-ascii?Q?WHlANVZRprwL94AvOoyMxiLHnBFzHvJNnwIpSeA09oyjgZGOO8/T9/hz3qyz?= =?us-ascii?Q?6icbqf+0SZz+3/QGCI8Z9lm2e1F6l5wlQl83oGtyw1bh7BaW7So5QPz2PwRB?= =?us-ascii?Q?2ayHGEiBZKluZhpZpcjyKpQIAMy4KxndGnzTGWDoKOoCS2cslnolWDEutiBO?= =?us-ascii?Q?DBpw38P9/a3vF0pGTHLfENCOyb44ASJ/shzUpAubqbx/QZG0cdYGvEo97BUA?= =?us-ascii?Q?NKgUNGZZ1TGs0oYgRhpPFjJukJQNiC3/SRF1zKMMGjxGKzbduxCY0HEjYOXj?= =?us-ascii?Q?J/UUr0q5lJi4peppjQt1gNZAFx43nHueeOtbh+qmJiNNoiLmBAo67V47KD8X?= =?us-ascii?Q?UCq0my6Ua/ODsHHumRLjXxccXSnD3qItHF/WxSyuvMUKzvTAXqFdrck9+gsL?= =?us-ascii?Q?RjFGyt2PhuN2N4HSR9DJVOcbrULjSTou4nw3MIBhsgSJh4JC6YQKWwdRAQTQ?= =?us-ascii?Q?06IwH0qMY18EGZJoEdJQ75rhMCDXxs9pMxjrj05hcFsC1MXkyh5KJaBa5A1q?= =?us-ascii?Q?vXhxGBeAkGbSGwUar6IowGOZqCuWUDBMmB5MsCp6dZeM2MpAzQkwC66LyUGO?= =?us-ascii?Q?haNxFo3Oj7UveN3ibNyu0CApQmqh2TbwdRV3H/UV4qyNTyuBFI57vPjMgxbo?= =?us-ascii?Q?kTmzA7GeQX33+acVJpn9XkCcajD4LDoyTB2V+gTfde+71mY/AHSKdGLzTmMa?= =?us-ascii?Q?IbvT7a5c3foLvV6UpE3Q5f+bIDNyjMFQQnClATsda9E8AYk68ikTwJ3RePpP?= =?us-ascii?Q?Vpgo8x99gDZW0icuZYIRsIgGYvD9te/0jVG/CCurOhpG68CgxMo6cRyymC8l?= =?us-ascii?Q?w/n6fveycRIDZJ7rPW9ckKQtVgE+aW/tnvkeOrR7TK5dYu73yl52HUqSE1Gy?= =?us-ascii?Q?IVo+Jd7LV2NhN5Q5AHUJa91C7H67yOPX/ZI9bztQJP1o6TNIM4DXeUzf06Fe?= =?us-ascii?Q?WuB//qDzXgIChVZXW6MsgM2uLhfkx9R7iRt3MPB2AcI3z4VznChLQk66nZnL?= =?us-ascii?Q?rLgTXxNp9N73AvDp06J324vOjJqXeuq4MPfp8JnOpjwizXC9CGIH47Mci8a1?= =?us-ascii?Q?TjJEF8QUTEZHhAlJ2T6VDxYTDmBrb4XtExCn/FJXto1KNIVdisVX7BJo6GON?= =?us-ascii?Q?jS6nWwRmNbpTkd2zD0irdHe9uT20TswJxckOZXaDAKZLhEEJ8zhtn5b161hO?= =?us-ascii?Q?tufeDHgMyUv5qixFTk0=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(1800799024)(82310400026)(7416014)(36860700013)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2025 18:26:17.6333 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 39cae984-558f-4cc6-43a2-08de2218f87e X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB56.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8241 Content-Type: text/plain; charset="utf-8" Which stores reference to nested parent domain assigned during the call to struct iommu_ops.viommu_init(). Information in the nest parent is needed when setting up the nested translation. Note that the viommu initialization will be introduced in subsequent commit. Reviewed-by: Jason Gunthorpe Signed-off-by: Suravee Suthikulpanit Reviewed-by: Nicolin Chen --- drivers/iommu/amd/amd_iommu_types.h | 6 ++++++ drivers/iommu/amd/iommu.c | 2 ++ drivers/iommu/amd/iommufd.c | 16 ++++++++++++++++ drivers/iommu/amd/iommufd.h | 5 +++++ 4 files changed, 29 insertions(+) diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_io= mmu_types.h index d13a50fc209b..446be08c88c8 100644 --- a/drivers/iommu/amd/amd_iommu_types.h +++ b/drivers/iommu/amd/amd_iommu_types.h @@ -17,6 +17,7 @@ #include #include #include +#include #include #include =20 @@ -490,6 +491,11 @@ struct pdom_iommu_info { u32 refcnt; /* Count of attached dev/pasid per domain/IOMMU */ }; =20 +struct amd_iommu_viommu { + struct iommufd_viommu core; + struct protection_domain *parent; /* nest parent domain for this viommu */ +}; + /* * This structure contains generic data for IOMMU protection domains * independent of their use. diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index e03aa8d946b3..724b8723b836 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -3078,6 +3078,8 @@ const struct iommu_ops amd_iommu_ops =3D { .is_attach_deferred =3D amd_iommu_is_attach_deferred, .def_domain_type =3D amd_iommu_def_domain_type, .page_response =3D amd_iommu_page_response, + .get_viommu_size =3D amd_iommufd_get_viommu_size, + .viommu_init =3D amd_iommufd_viommu_init, }; =20 #ifdef CONFIG_IRQ_REMAP diff --git a/drivers/iommu/amd/iommufd.c b/drivers/iommu/amd/iommufd.c index 72eaaa923d04..eb6119bdcf12 100644 --- a/drivers/iommu/amd/iommufd.c +++ b/drivers/iommu/amd/iommufd.c @@ -29,3 +29,19 @@ void *amd_iommufd_hw_info(struct device *dev, u32 *lengt= h, u32 *type) =20 return hwinfo; } + +size_t amd_iommufd_get_viommu_size(struct device *dev, enum iommu_viommu_t= ype viommu_type) +{ + return VIOMMU_STRUCT_SIZE(struct amd_iommu_viommu, core); +} + +int amd_iommufd_viommu_init(struct iommufd_viommu *viommu, struct iommu_do= main *parent, + const struct iommu_user_data *user_data) +{ + struct protection_domain *pdom =3D to_pdomain(parent); + struct amd_iommu_viommu *aviommu =3D container_of(viommu, struct amd_iomm= u_viommu, core); + + aviommu->parent =3D pdom; + + return 0; +} diff --git a/drivers/iommu/amd/iommufd.h b/drivers/iommu/amd/iommufd.h index f880be80a30d..f05aad495b5b 100644 --- a/drivers/iommu/amd/iommufd.h +++ b/drivers/iommu/amd/iommufd.h @@ -8,8 +8,13 @@ =20 #if IS_ENABLED(CONFIG_AMD_IOMMU_IOMMUFD) void *amd_iommufd_hw_info(struct device *dev, u32 *length, u32 *type); +size_t amd_iommufd_get_viommu_size(struct device *dev, enum iommu_viommu_t= ype viommu_type); +int amd_iommufd_viommu_init(struct iommufd_viommu *viommu, struct iommu_do= main *parent, + const struct iommu_user_data *user_data); #else #define amd_iommufd_hw_info NULL +#define amd_iommufd_viommu_init NULL +#define amd_iommufd_get_viommu_size NULL #endif /* CONFIG_AMD_IOMMU_IOMMUFD */ =20 #endif /* AMD_IOMMUFD_H */ --=20 2.34.1 From nobody Wed Dec 17 14:23:42 2025 Received: from PH8PR06CU001.outbound.protection.outlook.com (mail-westus3azon11012060.outbound.protection.outlook.com [40.107.209.60]) (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 C74F7358D0B for ; Wed, 12 Nov 2025 18:26:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.209.60 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971989; cv=fail; b=Ldsfl8ZM8kPZ0zUJ8GxkUGPeAmm+l7JKfdLj/SiZUIvrczep7K9HXrgjCmsxHXi0Yug8hmJ6yJpKWqzyAtNGSkOQeW4iX0P+yObNfiwEhhIQibPz2Zy/5XvFMFY8FsDVEAtI50rp/dhfg6sXKL2p6pWV/SQiO0QaKMx4Ne89NaU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971989; c=relaxed/simple; bh=uWPCyUilgD4TrlmDm4kG33cJskt7j7mmg8QB3AxtLvo=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=khyjBrXvEG+T+DJn67oWPfvo12Gcp530U5TfS6PMUxZaBDoh3AbA84grB98beyBmzpxWVcd/0baSaxFexO+MoDFFGuro/lOX/u4qeY5AugyKuR4WSaymyHtZ6X/w2gpgEgknEI0uFACFvSkACtSgQcuJCmgW+1WCuxAwUPIASP8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=TMiX4OuA; arc=fail smtp.client-ip=40.107.209.60 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="TMiX4OuA" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=D47oEH7Eu4r91JAZ/utkTMUn+pFLH10dhhh+N7xs2UUunhyGxnRSplI8P/cGT/CeF/4JTpePwLy8HH7sOv9LfUHHvMLqxE6QQM03ppVUYmOm6daxDmhug0C/8oHwBRg3cqrfBizbreGR6Y0qc6lVt34oDn53z2NIyq20hMgBiYbYHpL2ouSSp7nuM/y+uWugCeqv664Zb0cWdsbiPUd1MC4GsatHyKrPBqQopYJFb0hZtg8QmLPY97ojmOx0hfyd+Fvz5tDamR36dduoGw8zJRw0jM+RUwWsl9us6FqdSeNkUPCE923ljLLrOTGhHZ+ehWN5wQTY7HRGKxmlxhCBoA== 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=rdpq30fAEWQr9AZoNhaQurZ1m4IOAATur56wRwTaCp0=; b=LkgRkpPx6hv5+ymunL90YjlyEVoBsVmBD1Zthrr/P9KjxaP5jngnWPjiSKMiEgtEkqHrngOsAFElAs8z8ymnSkvpJd4qrJHaAbcfBeCGgjngBb506ViAzUg8FSDq0svBL9W3m0sONIhIcsNPZ12foJd1xoB1Jqy4dWrR10g8ln3dHEG8efP+DSHl8lLmovVyFVsYAqBtBqxu53XijMMBIhW3kdHbJeArkiMxWmj60lyYotzmr64AiqkoUnr/A9+VlDwN6W9gkFwkBoa+tsdPSTzC/GOBR2Gd4uDvL26xzZgNOjqBy0E1URVh3jEHaeTZN9kWLQ0x6YCsMUmKKFc/yg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nvidia.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rdpq30fAEWQr9AZoNhaQurZ1m4IOAATur56wRwTaCp0=; b=TMiX4OuAgJmopRDoW3oRAGTFVNcBuhVLg9fg6u1nJBnOuchhSV/ZEyU2fTuh5B993uZT+cloGTfl8cRlmqPOcXyCohXjM2Ar6LLQgfNHVl9CjXule5NFp2BBbzWL0yG05KeQZdsKbjULyU2Yr2ZsZqbYVITHa8wGcxzvCjsOaCQ= Received: from BL1PR13CA0092.namprd13.prod.outlook.com (2603:10b6:208:2b9::7) by IA1PR12MB7495.namprd12.prod.outlook.com (2603:10b6:208:419::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.17; Wed, 12 Nov 2025 18:26:23 +0000 Received: from BL6PEPF0001AB55.namprd02.prod.outlook.com (2603:10b6:208:2b9:cafe::83) by BL1PR13CA0092.outlook.office365.com (2603:10b6:208:2b9::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9320.16 via Frontend Transport; Wed, 12 Nov 2025 18:25:57 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BL6PEPF0001AB55.mail.protection.outlook.com (10.167.241.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.13 via Frontend Transport; Wed, 12 Nov 2025 18:26:23 +0000 Received: from purico-ed03host.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 12 Nov 2025 10:26:17 -0800 From: Suravee Suthikulpanit To: , CC: , , , , , , , , , , , , , , , , , , Suravee Suthikulpanit Subject: [PATCH v5 10/14] iommu/amd: Add support for nested domain allocation Date: Wed, 12 Nov 2025 18:25:02 +0000 Message-ID: <20251112182506.7165-11-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251112182506.7165-1-suravee.suthikulpanit@amd.com> References: <20251112182506.7165-1-suravee.suthikulpanit@amd.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-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB55:EE_|IA1PR12MB7495:EE_ X-MS-Office365-Filtering-Correlation-Id: 3be61e93-4d3e-46de-7d28-08de2218fbbc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700013|7416014|82310400026|376014|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?cXkVq3e1XSi2x8gScDb2UucAuomNRYxRltrDFYPyZN700wBZVALwql22lCdE?= =?us-ascii?Q?V/+m9/8ZirePUfILr+GruxwjnnEA7I0pog0rwvVX21caF63lKtBVITGg2ac4?= =?us-ascii?Q?MK8CW46OYTQXkVIqZbqh4ztObOAElnc1iUXAkRxpJmvONr5mXUz/yljmUx7a?= =?us-ascii?Q?Bs9NgR45JJgQAKwIzKlwKojOrawMudrF0P2QKmIo5SS92vvdrl0ZlRi8C9e3?= =?us-ascii?Q?QJvdTmqUpBnaN2uq344dg/fAFItcYsmCN3mCHhqDuc0NFdUgRemQQl39VY8k?= =?us-ascii?Q?SKWM5vgQjv83KbtF0Jjen1EkutIhF9ypdFmZxywwK7FfKX9ZBeUzuBmvdGBS?= =?us-ascii?Q?4diRzLNhJtYsyMHGpvmIfPV4AZbrUX5TJ8rthDM2qhwHjAQNsP0RGUxShj9L?= =?us-ascii?Q?OILzCoLBEeSxmZwCCsDXge7LvSi0Uzrxi04QbpalygBc+kqtglfJ/hZ/eoIB?= =?us-ascii?Q?Spasq6Go9XIMBeIRXxpGbawJlUUNHtRDEsTlX8ejRLaMxnw9yeVhWGkLLLXW?= =?us-ascii?Q?ELPrXsWUoBUTv1/vvMugtqZQX2LpZHBQHDSSfQMw2sfehrG99BZLi3jZsuIa?= =?us-ascii?Q?LMWHVtBgJnPoe2uV5fTzAU3FN+6olYdPfhau/WkiA3wHgkT16DuHRD7xL1Yg?= =?us-ascii?Q?9QogeIdkUHsA2RZDdFNB8nMx5qPqBcGTaCuriKvWpY9UYsxfen8cfdEQb9RF?= =?us-ascii?Q?F+gPTOvSpJ1N7BGDzjZesWix0fhgLxx3YBi501Q4lKcm7TtFqJmG7VTkWB5e?= =?us-ascii?Q?r8sK6yn2i4psEaLb9Yxgbt49pMSxcg4yHWh0r+6dPRYmAAFflSH85+o/dgHG?= =?us-ascii?Q?pT+AEHniOGbdsKt8NiCyBAsFJhNxX3A2v0ahvRXMrWBc9TBNc8g+3HRhyUUU?= =?us-ascii?Q?/NFBpTUOW8KAQnJA63arOC5mr7OGRtI1EdVHuBcfi19N83d5JAJG+FW8bFbk?= =?us-ascii?Q?tXEoK02+q0khxuiLvfnwWstJIM8NOGm4J0MSHMf1LjZcLRJe1Qwt8l0k9Hz9?= =?us-ascii?Q?w1PcShBOxW6CiniJX9ESGqv5hTgOiMuQ3reelQhbAcXb/tBrveHCZoa/+X7p?= =?us-ascii?Q?Y1/3mvmdlE4hkCC+cPrEmNWKA6Ngpt3cg0PrQQDbQb3sqWAio26SWwutlMTb?= =?us-ascii?Q?7Z/bnbsbXf4/MHJx5RdVwPK0vdR8rRsOr/3DoQc0plp2gqwIivtKnjz2zwcV?= =?us-ascii?Q?sHmmvOtgXkPKDM8FVHXWFYFP/Ukbu0qHbdDK+vuFUsIMq3g0b38Dx608Tlqj?= =?us-ascii?Q?8OJVGH6gFaxmSCBrSfDVAuy2ap9p1WaKnaWeiK48BnyfkB3D/g7rJSNzNGu2?= =?us-ascii?Q?+9qF/x7XZ8NEJnu+73volUWLmVNzpxocIYN2yLwpHyjv1hyGJfq2+zT+VKpq?= =?us-ascii?Q?/mKNlGgARQjG4Vq2fnobN6MTCGShGvpwG/3+L81sQj/0o6Y47FxU4I3I1/7V?= =?us-ascii?Q?j9eIU/2FoF/gTEvuXe49HLuCoVe8Kz19vwpyedgCY/9Q/QdO/5tHDbnZ/ND2?= =?us-ascii?Q?xAED+FHmxty1EhM72P3oTVVqGruAFZlVUivBEjO9c72YXdcNhupjyB7b0M/P?= =?us-ascii?Q?b6Lb1jpGwYcM4pUez1w=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(36860700013)(7416014)(82310400026)(376014)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2025 18:26:23.0734 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3be61e93-4d3e-46de-7d28-08de2218fbbc X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB55.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB7495 Content-Type: text/plain; charset="utf-8" The nested domain is allocated with IOMMU_DOMAIN_NESTED type to store stage-1 translation (i.e. GVA->GPA). This includes the GCR3 root pointer table along with guest page tables. The struct iommu_hwpt_amd_guest contains this information, and is passed from user-space as a parameter of the struct iommu_ops.domain_alloc_nested(). Reviewed-by: Nicolin Chen Reviewed-by: Jason Gunthorpe Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/Makefile | 2 +- drivers/iommu/amd/amd_iommu.h | 4 + drivers/iommu/amd/amd_iommu_types.h | 14 ++++ drivers/iommu/amd/nested.c | 110 ++++++++++++++++++++++++++++ 4 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 drivers/iommu/amd/nested.c diff --git a/drivers/iommu/amd/Makefile b/drivers/iommu/amd/Makefile index 41f053b49dce..94b8ef2acb18 100644 --- a/drivers/iommu/amd/Makefile +++ b/drivers/iommu/amd/Makefile @@ -1,4 +1,4 @@ # SPDX-License-Identifier: GPL-2.0-only obj-y +=3D iommu.o init.o quirks.o ppr.o pasid.o -obj-$(CONFIG_AMD_IOMMU_IOMMUFD) +=3D iommufd.o +obj-$(CONFIG_AMD_IOMMU_IOMMUFD) +=3D iommufd.o nested.o obj-$(CONFIG_AMD_IOMMU_DEBUGFS) +=3D debugfs.o diff --git a/drivers/iommu/amd/amd_iommu.h b/drivers/iommu/amd/amd_iommu.h index 3ad8b5e65a82..57f9f4fb8a4b 100644 --- a/drivers/iommu/amd/amd_iommu.h +++ b/drivers/iommu/amd/amd_iommu.h @@ -199,4 +199,8 @@ amd_iommu_make_clear_dte(struct iommu_dev_data *dev_dat= a, struct dev_table_entry new->data128[1] =3D 0; } =20 +/* NESTED */ +struct iommu_domain * +amd_iommu_alloc_domain_nested(struct iommufd_viommu *viommu, u32 flags, + const struct iommu_user_data *user_data); #endif /* AMD_IOMMU_H */ diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_io= mmu_types.h index 446be08c88c8..e46f346fd6c5 100644 --- a/drivers/iommu/amd/amd_iommu_types.h +++ b/drivers/iommu/amd/amd_iommu_types.h @@ -21,6 +21,8 @@ #include #include =20 +#include + /* * Maximum number of IOMMUs supported */ @@ -348,6 +350,8 @@ #define DTE_FLAG_V BIT_ULL(0) #define DTE_FLAG_TV BIT_ULL(1) #define DTE_FLAG_HAD (3ULL << 7) +#define DTE_MODE_MASK GENMASK_ULL(11, 9) +#define DTE_HOST_TRP GENMASK_ULL(51, 12) #define DTE_FLAG_GIOV BIT_ULL(54) #define DTE_FLAG_GV BIT_ULL(55) #define DTE_GLX GENMASK_ULL(57, 56) @@ -496,6 +500,16 @@ struct amd_iommu_viommu { struct protection_domain *parent; /* nest parent domain for this viommu */ }; =20 +/* + * Nested domain is specifically used for nested translation + */ +struct nested_domain { + struct iommu_domain domain; /* generic domain handle used by iommu core c= ode */ + u16 gdom_id; /* domain ID from gDTE */ + struct iommu_hwpt_amd_guest gdte; /* Guest vIOMMU DTE */ + struct amd_iommu_viommu *viommu; /* AMD hw-viommu this nested domain bel= ong to */ +}; + /* * This structure contains generic data for IOMMU protection domains * independent of their use. diff --git a/drivers/iommu/amd/nested.c b/drivers/iommu/amd/nested.c new file mode 100644 index 000000000000..dd3e53dd16ea --- /dev/null +++ b/drivers/iommu/amd/nested.c @@ -0,0 +1,110 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (C) 2025 Advanced Micro Devices, Inc. + */ + +#define dev_fmt(fmt) "AMD-Vi: " fmt + +#include +#include + +#include "amd_iommu.h" + +static const struct iommu_domain_ops nested_domain_ops; + +static inline struct nested_domain *to_ndomain(struct iommu_domain *dom) +{ + return container_of(dom, struct nested_domain, domain); +} + +/* + * Validate guest DTE to make sure that configuration for host (v1) + * and guest (v2) page tables are valid when allocating nested domain. + */ +static int validate_gdte_nested(struct iommu_hwpt_amd_guest *gdte) +{ + u32 gpt_level =3D FIELD_GET(DTE_GPT_LEVEL_MASK, gdte->dte[2]); + + /* Must be zero: Mode, Host-TPR */ + if (FIELD_GET(DTE_MODE_MASK, gdte->dte[0]) !=3D 0 || + FIELD_GET(DTE_HOST_TRP, gdte->dte[0]) !=3D 0) + return -EINVAL; + + /* Must be non-zero: V, GIOV, GV, GCR3 TRP */ + if (FIELD_GET(DTE_FLAG_V, gdte->dte[0]) =3D=3D 0 || + FIELD_GET(DTE_FLAG_GV, gdte->dte[0]) =3D=3D 0 || + (FIELD_GET(DTE_GCR3_14_12, gdte->dte[0]) =3D=3D 0 && + FIELD_GET(DTE_GCR3_30_15, gdte->dte[1]) =3D=3D 0 && + FIELD_GET(DTE_GCR3_51_31, gdte->dte[1]) =3D=3D 0)) + return -EINVAL; + + /* Valid Guest Paging Mode values are 0 and 1 */ + if (gpt_level !=3D GUEST_PGTABLE_4_LEVEL && + gpt_level !=3D GUEST_PGTABLE_5_LEVEL) + return -EINVAL; + + /* GLX =3D 3 is reserved */ + if (FIELD_GET(DTE_GLX, gdte->dte[0]) =3D=3D 3) + return -EINVAL; + + /* + * We need to check host capability before setting + * the Guest Paging Mode + */ + if (gpt_level =3D=3D GUEST_PGTABLE_5_LEVEL && + amd_iommu_gpt_level < PAGE_MODE_5_LEVEL) + return -EOPNOTSUPP; + + return 0; +} + +/* + * This function is assigned to struct iommufd_viommu_ops.alloc_domain_nes= ted() + * during the call to struct iommu_ops.viommu_init(). + */ +struct iommu_domain * +amd_iommu_alloc_domain_nested(struct iommufd_viommu *viommu, u32 flags, + const struct iommu_user_data *user_data) +{ + int ret; + struct nested_domain *ndom; + struct amd_iommu_viommu *aviommu =3D container_of(viommu, struct amd_iomm= u_viommu, core); + + if (user_data->type !=3D IOMMU_HWPT_DATA_AMD_GUEST) + return ERR_PTR(-EOPNOTSUPP); + + ndom =3D kzalloc(sizeof(*ndom), GFP_KERNEL); + if (!ndom) + return ERR_PTR(-ENOMEM); + + ret =3D iommu_copy_struct_from_user(&ndom->gdte, user_data, + IOMMU_HWPT_DATA_AMD_GUEST, + dte); + if (ret) + goto out_err; + + ret =3D validate_gdte_nested(&ndom->gdte); + if (ret) + goto out_err; + + ndom->gdom_id =3D FIELD_GET(DTE_DOMID_MASK, ndom->gdte.dte[1]); + ndom->domain.ops =3D &nested_domain_ops; + ndom->domain.type =3D IOMMU_DOMAIN_NESTED; + ndom->viommu =3D aviommu; + + return &ndom->domain; +out_err: + kfree(ndom); + return ERR_PTR(ret); +} + +static void nested_domain_free(struct iommu_domain *dom) +{ + struct nested_domain *ndom =3D to_ndomain(dom); + + kfree(ndom); +} + +static const struct iommu_domain_ops nested_domain_ops =3D { + .free =3D nested_domain_free, +}; --=20 2.34.1 From nobody Wed Dec 17 14:23:42 2025 Received: from DM5PR21CU001.outbound.protection.outlook.com (mail-centralusazon11011045.outbound.protection.outlook.com [52.101.62.45]) (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 7C6CD358D2D for ; Wed, 12 Nov 2025 18:26:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.62.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971996; cv=fail; b=IGEcEcKvGDK4f/AicgYHS1ST6LrNv2076A0yNpSB6ckfgctDWQwr2Yh+iNJP7agaDJ5J9uYcaLkazmFr1i+dMdWZEOW9pbJCMmHq3NJMZnExO0hoyaiyDR1PwwXMQTq7og3V5q8MPMFo7pD+pQp4EOd5O/nv1kdEbHgbr5fTrlM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971996; c=relaxed/simple; bh=8tgaHaKnUwf0uVu/1UWpmG6rP27yB/B3m4eo/IjU1Ls=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=mj0a/71LltaVyNF8mlLEIV/ZkpumQdtaCxsKehWN0JWmWccYBMHqnX3yJYyTy2xtwWBpOCW8bg7tlN5BhNYRGJchaVFqF4lXxqxJ0qppeZ1tLJPFsWVLR8mD2BuSZYip7EeCJ0H5dOWlcE6nuRE6HoVivmEdqm4ZdgDsQYP5pRI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=4v6S7u+9; arc=fail smtp.client-ip=52.101.62.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="4v6S7u+9" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SqQa8Pwyn6Rg/FOpRu6xd2G/V+iCh7p8bewmMd0w4RYK+jiRSqpuyiXW+mNVlXq6hVOHdmzX/bA9XOtg0orBPg+pTv77NoVM9bsC5hkCSGRNIkeQH5SeCUEohCR8KodqPWlgu2HDstoZBw157phE84slBLJt45OWwtvsPkPGT12STDmqOkwhmKFtecTtjp6nx7Zhrx7x2kibFnkWS0KtrA9vV7pPSye+7iEM8ubsCXfsGp8l5w4Jdrgqc0Zz3kXctAHEqj5gGFv6aGBRrq+pNsDLCZ98CPBCGXjXes2k7nsfy9eG+b1Z9a5kV27F1mbmdmNi1Tq7d7bMfWMLjcJWcw== 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=VsjfAULtnAx2M+fmVyzjBc6+Q00Sz9PnLE2jB8bk6BY=; b=BBg3KXfyJniaxEsUIYXe1VxHFjprCuJPjPQQi40e41iVHfkNSBlCRMH7dxh1AU73xk23rYPuYDfVatGyvEq+Epdf/7lJppNr7JbypYqOExNzoTJl+bH/3yLAlhZYus+CrCfH/TABd8JHMxZDiW5YLrre+Vi/OKsJpGyPlbHzmGXmhDE1e/ClCZZIM+ys4UtfIP+9RSthwSrnZ4v2mOn7AQx93dlvfpAlekiAzDsi+MKBKLjqqU6TdeTG2mReIiu31iodG9u6bWW4Zgoiy+MgdeHapvHoNWhrxOvsUw8YPy4PM5ibG9WUAlwhCy4jag+L+dmCZfRDX+yxzMMGQcEndg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nvidia.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VsjfAULtnAx2M+fmVyzjBc6+Q00Sz9PnLE2jB8bk6BY=; b=4v6S7u+9mZi08C3EpC35JTEcMNll7lj2g+TMElO0myUz8/iCfrcmoMRqI4SnbsSu/MaKwekU71DCnugvR6GiWEbf4H6CQQugJqzjAsmzr+xmt/zPeHlP05KFiPiusN8gnHfVmngPzpupPxdjbThPKQ8qn5idBbONB0TBPa2Pb8U= Received: from BN9PR03CA0957.namprd03.prod.outlook.com (2603:10b6:408:108::32) by CH3PR12MB7546.namprd12.prod.outlook.com (2603:10b6:610:149::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.16; Wed, 12 Nov 2025 18:26:29 +0000 Received: from BL6PEPF0001AB56.namprd02.prod.outlook.com (2603:10b6:408:108:cafe::c9) by BN9PR03CA0957.outlook.office365.com (2603:10b6:408:108::32) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.10 via Frontend Transport; Wed, 12 Nov 2025 18:26:29 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BL6PEPF0001AB56.mail.protection.outlook.com (10.167.241.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.13 via Frontend Transport; Wed, 12 Nov 2025 18:26:28 +0000 Received: from purico-ed03host.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 12 Nov 2025 10:26:23 -0800 From: Suravee Suthikulpanit To: , CC: , , , , , , , , , , , , , , , , , , Suravee Suthikulpanit Subject: [PATCH v5 11/14] iommu/amd: Introduce gDomID-to-hDomID Mapping and handle parent domain invalidation Date: Wed, 12 Nov 2025 18:25:03 +0000 Message-ID: <20251112182506.7165-12-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251112182506.7165-1-suravee.suthikulpanit@amd.com> References: <20251112182506.7165-1-suravee.suthikulpanit@amd.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-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB56:EE_|CH3PR12MB7546:EE_ X-MS-Office365-Filtering-Correlation-Id: a6f9de5b-cf66-4ca8-7dee-08de2218ff42 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|82310400026|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?DX/2FaDExzMnZM/ZUMr3u9lW4NBHQyK7Yj+qblfdenuA4bmyRlS1NPi6vqgt?= =?us-ascii?Q?evkO2+bxDnwwMjcabT62srjT92ykfeWCtjlVLTKWJzwHW/Zziegif7QraI2L?= =?us-ascii?Q?75ALzjc4C3HPRvrNXIqRXkybRPaCPopv/m1iERd9CVGhkzCBUXeswshHhmqi?= =?us-ascii?Q?9aS75+r9cad8iUFbDJRIyt8TU4r1hM6RxhRLqIQPSLFvwk2o1/Fb44qetSd5?= =?us-ascii?Q?m/W7hJRp4uYcFLXAKvHh8SnzjcOke3e3apQ4HMBDmRlXgRQ5wTHSIPDnzMWS?= =?us-ascii?Q?rCLuwc5rDta73RXM08F+y0NKeOKebJh4a5xNH4Wvec/Xvf8oonyEFpDSiqp2?= =?us-ascii?Q?N51KJJz9ZaLNE/pZGtanBz6wBwsNZROMt2AJ//7X6uC1OYDIEwofDhYY1xrQ?= =?us-ascii?Q?XnsdIpqijIIfE63n3R+8VJ3oBAY5de94ZsD6ISUSoagFT59/1ccolVl56g09?= =?us-ascii?Q?CS2XPmc5mOBR2NsbzL5YTy//WXZq5RxxnpUzaVvDv+PClbMIP+H1dLltc9Gp?= =?us-ascii?Q?mt6+NMsDmcHkeQHz5ISkj6oC/XPfHdBGfwpJw6jB77WHaNTTQ4Va9YDSN0TS?= =?us-ascii?Q?bJ7NfUzH2j0w+6bXTQdiSfyORN+NKlQ3HzOVT/Vox1AAsao3VszT53n3vMFc?= =?us-ascii?Q?cxb9Q2qa5j591XQBgu1d63kJy4oP3edUQ26WLKWJ1iaRp54db70pyUi+tC8E?= =?us-ascii?Q?k64VIv4sDrHaCHx4tmNt+thCr34HinPS58fiGEJH0w5wN2A3K4vmq7Al5trk?= =?us-ascii?Q?vXay7T3crNajt0VBA/T9uxuDaAsGHvYmDHPiPSxvwFv935KVy3MSgMlO7yWE?= =?us-ascii?Q?ElbpNrw+k1Ym3x+2JVrtKnBw6SuHHr1zXE/fqhBv/HTaja+0HNKJ4GUAwP6N?= =?us-ascii?Q?U2ugvi0J423WlYPUD1WjwN9iJC6aOo2Iigox12ysu59zcDcFSDZZkXYCvgrS?= =?us-ascii?Q?rdWFtotUhLSwJxkyo7Brqpa4gZJCUfBdlnDwNtidf7ljjU6LAQw91+sr0bDQ?= =?us-ascii?Q?PHZVw06tc9feuXnZlSNQ7QL7kVxud8zus4vfYVzVOOXonHaQrClKajCl11Vq?= =?us-ascii?Q?MNuVsdb/PEkSmKiuNVz3KgUsTKJYuAXav3TX6OTSnTuxDJCoUyTae8C6L2Vm?= =?us-ascii?Q?8cl/sA1e/LGN9n1br4agQHfRK0Wix5UB+THWjowgG4SJwYclmo/eOacSaGLn?= =?us-ascii?Q?yJfvasokDw5VQYdCWfszLEKjMTDEGc415+q9bHNuTmS+UMQgUWWbXI1mCY5X?= =?us-ascii?Q?+BbVx7gr6gnNTEKUYi2Kw6m1AauH5qPATq124rpnyyBpRuxmVX8vWAyqopFJ?= =?us-ascii?Q?FPg+Iahe+B+9UVtheag+wKUNz/RkWnRaHrlUHNU8yFpSgwWzzTDvChu+TdTY?= =?us-ascii?Q?aemHUk79MqnUx34PGELAcesgxqLNs8cljiTA5D621UTJ4gfyISOHzlnRuBEE?= =?us-ascii?Q?OeYUbAtXGidb1G0EkMeQEL43pDHy94SJ7yjLebsCXhmgo54TgDu8V8UY1Ccb?= =?us-ascii?Q?NBtuGeIiHg43D9IKRYvGAEfhl81RlElXhaUU+VpbqlipluDMN9PdDwAEa1Gx?= =?us-ascii?Q?hKuezVmv0ct9kURfeQc=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(82310400026)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2025 18:26:28.8268 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a6f9de5b-cf66-4ca8-7dee-08de2218ff42 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB56.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7546 Content-Type: text/plain; charset="utf-8" Each nested domain is assigned guest domain ID (gDomID), which guest OS programs into guest Device Table Entry (gDTE). For each gDomID, the driver assigns a corresponding host domain ID (hDomID), which will be programmed into the host Device Table Entry (hDTE). The hDomID is allocated during amd_iommu_alloc_domain_nested(), and free during nested_domain_free(). The gDomID-to-hDomID mapping info (struct guest_domain_mapping_info) is stored in a per-viommu xarray (struct amd_iommu_viommu.gdomid_array), which is indexed by gDomID. Note also that parent domain can be shared among struct iommufd_viommu. Therefore, when hypervisor invalidates the nest parent domain, the AMD IOMMU command INVALIDATE_IOMMU_PAGES must be issued for each hDomID in the gdomid_array. This is handled by the iommu_flush_pages_v1_hdom_ids(), where it iterates through struct protection_domain.viommu_list. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu_types.h | 23 +++++++++ drivers/iommu/amd/iommu.c | 35 +++++++++++++ drivers/iommu/amd/iommufd.c | 34 ++++++++++++ drivers/iommu/amd/nested.c | 80 +++++++++++++++++++++++++++++ 4 files changed, 172 insertions(+) diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_io= mmu_types.h index e46f346fd6c5..734f6a753b3a 100644 --- a/drivers/iommu/amd/amd_iommu_types.h +++ b/drivers/iommu/amd/amd_iommu_types.h @@ -498,6 +498,22 @@ struct pdom_iommu_info { struct amd_iommu_viommu { struct iommufd_viommu core; struct protection_domain *parent; /* nest parent domain for this viommu */ + struct list_head pdom_list; /* For protection_domain->viommu_list */ + + /* + * Per-vIOMMU guest domain ID to host domain ID mapping. + * Indexed by guest domain ID. + */ + struct xarray gdomid_array; +}; + +/* + * Contains guest domain ID mapping info, + * which is stored in the struct xarray gdomid_array. + */ +struct guest_domain_mapping_info { + refcount_t users; + u32 hdom_id; /* Host domain ID */ }; =20 /* @@ -506,6 +522,7 @@ struct amd_iommu_viommu { struct nested_domain { struct iommu_domain domain; /* generic domain handle used by iommu core c= ode */ u16 gdom_id; /* domain ID from gDTE */ + struct guest_domain_mapping_info *gdom_info; struct iommu_hwpt_amd_guest gdte; /* Guest vIOMMU DTE */ struct amd_iommu_viommu *viommu; /* AMD hw-viommu this nested domain bel= ong to */ }; @@ -530,6 +547,12 @@ struct protection_domain { =20 struct mmu_notifier mn; /* mmu notifier for the SVA domain */ struct list_head dev_data_list; /* List of pdom_dev_data */ + + /* + * Store reference to list of vIOMMUs, which use this protection domain. + * This will be used to look up host domain ID when flushing this domain. + */ + struct list_head viommu_list; }; PT_IOMMU_CHECK_DOMAIN(struct protection_domain, iommu, domain); PT_IOMMU_CHECK_DOMAIN(struct protection_domain, amdv1.iommu, domain); diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 724b8723b836..6a26e7a28141 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -1513,6 +1513,29 @@ static void amd_iommu_flush_tlb_domid(struct amd_iom= mu *iommu, u32 dom_id) iommu_completion_wait(iommu); } =20 +static int iommu_flush_pages_v1_hdom_ids(struct protection_domain *pdom, u= 64 address, size_t size) +{ + int ret =3D 0; + struct amd_iommu_viommu *aviommu; + + list_for_each_entry(aviommu, &pdom->viommu_list, pdom_list) { + unsigned long i; + struct guest_domain_mapping_info *gdom_info; + struct amd_iommu *iommu =3D container_of(aviommu->core.iommu_dev, struct= amd_iommu, iommu); + + xa_for_each(&aviommu->gdomid_array, i, gdom_info) { + struct iommu_cmd cmd; + + pr_debug("%s: iommu=3D%#x, hdom_id=3D%#x\n", __func__, + iommu->devid, gdom_info->hdom_id); + build_inv_iommu_pages(&cmd, address, size, gdom_info->hdom_id, + IOMMU_NO_PASID, false); + ret |=3D iommu_queue_command(iommu, &cmd); + } + } + return ret; +} + static void amd_iommu_flush_all(struct amd_iommu *iommu) { struct iommu_cmd cmd; @@ -1661,6 +1684,17 @@ static int domain_flush_pages_v1(struct protection_d= omain *pdom, ret |=3D iommu_queue_command(pdom_iommu_info->iommu, &cmd); } =20 + /* + * A domain w/ v1 table can be a nest parent, which can have + * multiple nested domains. Each nested domain has 1:1 mapping + * between gDomID and hDomID. Therefore, flush every hDomID + * associated to this nest parent domain. + * + * See drivers/iommu/amd/nested.c: amd_iommu_alloc_domain_nested() + */ + if (!list_empty(&pdom->viommu_list)) + ret |=3D iommu_flush_pages_v1_hdom_ids(pdom, address, size); + return ret; } =20 @@ -2469,6 +2503,7 @@ static void protection_domain_init(struct protection_= domain *domain) spin_lock_init(&domain->lock); INIT_LIST_HEAD(&domain->dev_list); INIT_LIST_HEAD(&domain->dev_data_list); + INIT_LIST_HEAD(&domain->viommu_list); xa_init(&domain->iommu_array); } =20 diff --git a/drivers/iommu/amd/iommufd.c b/drivers/iommu/amd/iommufd.c index eb6119bdcf12..bb53475f9171 100644 --- a/drivers/iommu/amd/iommufd.c +++ b/drivers/iommu/amd/iommufd.c @@ -9,6 +9,8 @@ #include "amd_iommu.h" #include "amd_iommu_types.h" =20 +static const struct iommufd_viommu_ops amd_viommu_ops; + void *amd_iommufd_hw_info(struct device *dev, u32 *length, u32 *type) { struct iommu_hw_info_amd *hwinfo; @@ -38,10 +40,42 @@ size_t amd_iommufd_get_viommu_size(struct device *dev, = enum iommu_viommu_type vi int amd_iommufd_viommu_init(struct iommufd_viommu *viommu, struct iommu_do= main *parent, const struct iommu_user_data *user_data) { + unsigned long flags; struct protection_domain *pdom =3D to_pdomain(parent); struct amd_iommu_viommu *aviommu =3D container_of(viommu, struct amd_iomm= u_viommu, core); =20 + xa_init(&aviommu->gdomid_array); aviommu->parent =3D pdom; =20 + viommu->ops =3D &amd_viommu_ops; + + spin_lock_irqsave(&pdom->lock, flags); + list_add(&aviommu->pdom_list, &pdom->viommu_list); + spin_unlock_irqrestore(&pdom->lock, flags); + return 0; } + +static void amd_iommufd_viommu_destroy(struct iommufd_viommu *viommu) +{ + unsigned long flags; + struct amd_iommu_viommu *entry, *next; + struct amd_iommu_viommu *aviommu =3D container_of(viommu, struct amd_iomm= u_viommu, core); + struct protection_domain *pdom =3D aviommu->parent; + + spin_lock_irqsave(&pdom->lock, flags); + list_for_each_entry_safe(entry, next, &pdom->viommu_list, pdom_list) { + if (entry =3D=3D aviommu) + list_del(&entry->pdom_list); + } + spin_unlock_irqrestore(&pdom->lock, flags); + +} + +/* + * See include/linux/iommufd.h + * struct iommufd_viommu_ops - vIOMMU specific operations + */ +static const struct iommufd_viommu_ops amd_viommu_ops =3D { + .destroy =3D amd_iommufd_viommu_destroy, +}; diff --git a/drivers/iommu/amd/nested.c b/drivers/iommu/amd/nested.c index dd3e53dd16ea..1bbcb16abecc 100644 --- a/drivers/iommu/amd/nested.c +++ b/drivers/iommu/amd/nested.c @@ -6,6 +6,7 @@ #define dev_fmt(fmt) "AMD-Vi: " fmt =20 #include +#include #include =20 #include "amd_iommu.h" @@ -68,6 +69,7 @@ amd_iommu_alloc_domain_nested(struct iommufd_viommu *viom= mu, u32 flags, { int ret; struct nested_domain *ndom; + struct guest_domain_mapping_info *gdom_info, *curr; struct amd_iommu_viommu *aviommu =3D container_of(viommu, struct amd_iomm= u_viommu, core); =20 if (user_data->type !=3D IOMMU_HWPT_DATA_AMD_GUEST) @@ -92,7 +94,60 @@ amd_iommu_alloc_domain_nested(struct iommufd_viommu *vio= mmu, u32 flags, ndom->domain.type =3D IOMMU_DOMAIN_NESTED; ndom->viommu =3D aviommu; =20 + gdom_info =3D kzalloc(sizeof(*gdom_info), GFP_KERNEL); + if (!gdom_info) + goto out_err; + + /* + * Normally, when a guest has multiple pass-through devices, + * the IOMMU driver setup DTEs with the same stage-2 table and + * use the same host domain ID (hDomId). In case of nested translation, + * if the guest setup different stage-1 tables with same PASID, + * IOMMU would use the same TLB tag. This will results in TLB + * aliasing issue. + * + * The guest is assigning gDomIDs based on its own algorithm for managing + * cache tags of (DomID, PASID). Within a single viommu, the nest parent = domain + * (w/ S2 table) is used by all DTEs. But we need to consistently map the= gDomID + * to a single hDomID. This is done using an xarray in the vIOMMU to + * keep track of the gDomID mapping. When the S2 is changed, the INVALIDA= TE_IOMMU_PAGES + * command must be issued for each hDomID in the xarray. + */ + curr =3D xa_cmpxchg(&aviommu->gdomid_array, + ndom->gdom_id, NULL, gdom_info, GFP_ATOMIC); + if (curr) { + if (xa_err(curr)) { + ret =3D -EINVAL; + goto out_err_gdom_info; + } else { + /* The gDomID already exist */ + pr_debug("%s: Found gdom_id=3D%#x, hdom_id=3D%#x\n", + __func__, ndom->gdom_id, curr->hdom_id); + refcount_inc(&curr->users); + ndom->gdom_info =3D curr; + kfree(gdom_info); + return &ndom->domain; + } + } + + /* The gDomID does not exist. We allocate new hdom_id */ + gdom_info->hdom_id =3D amd_iommu_pdom_id_alloc(); + if (gdom_info->hdom_id <=3D 0) { + xa_cmpxchg(&aviommu->gdomid_array, + ndom->gdom_id, gdom_info, NULL, GFP_ATOMIC); + ret =3D -ENOSPC; + goto out_err_gdom_info; + } + + refcount_set(&gdom_info->users, 1); + ndom->gdom_info =3D gdom_info; + pr_debug("%s: Allocate gdom_id=3D%#x, hdom_id=3D%#x\n", + __func__, ndom->gdom_id, gdom_info->hdom_id); + return &ndom->domain; + +out_err_gdom_info: + kfree(gdom_info); out_err: kfree(ndom); return ERR_PTR(ret); @@ -100,8 +155,33 @@ amd_iommu_alloc_domain_nested(struct iommufd_viommu *v= iommu, u32 flags, =20 static void nested_domain_free(struct iommu_domain *dom) { + struct guest_domain_mapping_info *curr; struct nested_domain *ndom =3D to_ndomain(dom); + struct amd_iommu_viommu *aviommu =3D ndom->viommu; + + if (!refcount_dec_and_test(&ndom->gdom_info->users)) + return; =20 + /* + * The refcount for the gdom_id to hdom_id mapping is zero. + * It is now safe to remove the mapping. + */ + curr =3D xa_cmpxchg(&aviommu->gdomid_array, ndom->gdom_id, + ndom->gdom_info, NULL, GFP_ATOMIC); + if (curr) { + if (xa_err(curr)) { + pr_err("%s: Failed to free nested domain gdom_id=3D%#x\n", + __func__, ndom->gdom_id); + return; + } + + /* success */ + pr_debug("%s: Free gdom_id=3D%#x, hdom_id=3D%#x\n", + __func__, ndom->gdom_id, curr->hdom_id); + kfree(curr); + } + + amd_iommu_pdom_id_free(ndom->gdom_info->hdom_id); kfree(ndom); } =20 --=20 2.34.1 From nobody Wed Dec 17 14:23:42 2025 Received: from SA9PR02CU001.outbound.protection.outlook.com (mail-southcentralusazon11013045.outbound.protection.outlook.com [40.93.196.45]) (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 28CD43590D5 for ; Wed, 12 Nov 2025 18:26:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.196.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971998; cv=fail; b=BxTOicGNteJUZiZG+XHaUi26OOmxhAOn1tMhDLos1luTxCO7Q0obCYJEAfpqZF52ecPHip3qCHC0fZZrvOXQbYI6ZwRABkMt0RSG1khoXISA+Ij3uxCRwKBePJnsBzPdVVL5UWwwB6/IzUi5/tblXw9Bv2EOdIZjr2he8LISsuw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971998; c=relaxed/simple; bh=oKB7cp8+pVcbnn+7Xd255wxmz0ERPoqaRgN8Bw9p2Vk=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=rUKq8cT8yTxHxzmPAMd2rLTRAPfGbC271S7E+g2+ZXpfEHzhy2tH9RdvTUai9swKUqU2AhtmJlTeVeoz4PCcJ6pJgLFIXWoFBLQ/CfScMOmHvcLsIyMDI0OAbbCwWBkpJW1nv1Yud0C6SgVFG16Fzjhfrd6LGpjhJwer5ny+pGs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=zcAMbunW; arc=fail smtp.client-ip=40.93.196.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="zcAMbunW" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pFmDtQWt6jihuv/vEcvXIu6BLD5nyqw7tr0Sl3q1ma1sQTUyw4FmqOilD+M4/qudaV85AGOf0ZFvL+a8AzLjxZQ2H4uM7D4TYWD2JiNoejzeoUMmQX6TB8J84pMBYkSlXjEodA5AshxMiP2Hj5VSieU7AGi7q17cFmH8jUTkft9xF3R6YIu+LlzaO+Jav/Aqfseeg3WEsLSPIJ9lKuG+wlSLGPw1Qkk/6dpXP3y/dTQpno5+e3VWRRotK3/Xo8mn0YL4BhveIAAI2KuBNuInpDM3qcjdnm5mVG+gFD9ai4zcLeAizXI9tp5O1Mhki14cR46u0mN+Ifkjg+XS6iRQjQ== 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=QGs5e6E+F4WWAJnWrKJNsTB9azdd4mKeWBuPvV17XCI=; b=elWPRa2labyauOp5wktffLD3gvag2LLIcs9bRxgh4hKd22AnHr5rPbk+DcSbQJoNSojZs/2us4OwaLuVgBmmRwx1GejCpN12K36qTJz1QJjmHeP3BGg2TsAZmOgktMAi2fiJ+OPCHSR/jRj3AN4qXMd8+Egae142ro6pknYV9HAW78rsYi1X4JI7ykJp2VF7un6IpHUZpJwoeHrkv3jzBDwzQrwMyPf3ZKyvD4tuIEkwL00ovq4Rw6dJN9xrrgRlbltYAN0LfOw0q7b+6BYhrkMbkc0GcAt6dE2NGs8EkC0Gm8RZycCXVivwXR3mPAJ6TjTYqJf8f42TmR+u5vhtIg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nvidia.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QGs5e6E+F4WWAJnWrKJNsTB9azdd4mKeWBuPvV17XCI=; b=zcAMbunW29IebMvx2kT9Y0K5764DyoQZVOU8xkH6Ndio0ZU8A8iPfaXSjyUYflgLrbVhipTwnF85NK3fgWZWMICiDdk0ncGLi3tAfeEjwFMR0avUf3EIe2j5t2Flcw7/G89tT3pyy7v53qSphnGNRbYOFLUxRzzGGKRfjxjc/co= Received: from BN9PR03CA0933.namprd03.prod.outlook.com (2603:10b6:408:108::8) by IA1PR12MB9521.namprd12.prod.outlook.com (2603:10b6:208:593::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.16; Wed, 12 Nov 2025 18:26:34 +0000 Received: from BL6PEPF0001AB56.namprd02.prod.outlook.com (2603:10b6:408:108:cafe::db) by BN9PR03CA0933.outlook.office365.com (2603:10b6:408:108::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.13 via Frontend Transport; Wed, 12 Nov 2025 18:26:19 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BL6PEPF0001AB56.mail.protection.outlook.com (10.167.241.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.13 via Frontend Transport; Wed, 12 Nov 2025 18:26:34 +0000 Received: from purico-ed03host.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 12 Nov 2025 10:26:28 -0800 From: Suravee Suthikulpanit To: , CC: , , , , , , , , , , , , , , , , , , Suravee Suthikulpanit Subject: [PATCH v5 12/14] iommu/amd: Refactor persistent DTE bits programming into amd_iommu_make_clear_dte() Date: Wed, 12 Nov 2025 18:25:04 +0000 Message-ID: <20251112182506.7165-13-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251112182506.7165-1-suravee.suthikulpanit@amd.com> References: <20251112182506.7165-1-suravee.suthikulpanit@amd.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-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB56:EE_|IA1PR12MB9521:EE_ X-MS-Office365-Filtering-Correlation-Id: 66524d80-cb06-4356-b383-08de22190271 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|82310400026|36860700013|1800799024|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?6GQtg52BkADGYCl+AEpbpRjR47CTZy1v5k2RinTZ9YDcUU5egiRagH508dSx?= =?us-ascii?Q?+q7cFwPzmsz1xdnjxs4hcPl9FgOQRmMsEkkCF07sabcU890x+hBtlnayOc5v?= =?us-ascii?Q?wRPHdYCAlQUzCnTKfpFAlFb6l5BPZKYO+Y3ln5pmIGXQN+Kyrt7TtlcJoUPa?= =?us-ascii?Q?nX8ZEE3pw/z7HM2HK1Sm+6UW+29xRq4OZ1GtKf/V8K21LV8VfnYGL5+v0ERa?= =?us-ascii?Q?02eIL03fFDXXfzvI6HOlU09YxjviBTlPVo5oQVwRbNcdxaTQBVOu1rU9OAs4?= =?us-ascii?Q?xVRPxx+EBrveMLGpkhy4BuAAwcp2Xrb1EknVXwl4cNSORbzyFtoA+zhwcb2J?= =?us-ascii?Q?xHDQrx+XE1Q+hRIJ3EhfezbICy+AICXzglHlXnrUU7L+L5pbkcpDuLqlk+PQ?= =?us-ascii?Q?CmoZb50BTY3hQYcnFLmM8qzM3WJsmOm2DnPrYHRlXa5AEyURxZbtbfYAaRng?= =?us-ascii?Q?cbn/wofSpMX3fiWN0scOaMDH9GkmggQyRHmNnItQLwZXiSG1s97h1kby7wnN?= =?us-ascii?Q?nM5M9Yt9PlZBpbvTp760JBDWgzHmfAxs6bc5OolQ3k29sxrIzF5k0xD+q2UB?= =?us-ascii?Q?soVYECxEioKmBV6bSM1Wp2AKFN75q1yZ1KoXRQKo60lidcMSHXQMgJN0h+Zu?= =?us-ascii?Q?Lw+zPRwEzAZSonZRDmVcpVLwoT2GHYrjCQp42d7AK7zWs4FHXKgE8B0E99EI?= =?us-ascii?Q?74Bvq9xcoF5bves37pmGk+wFuTg+YaYrmQlkFaZWGLYcypxNUZC0/XbfvdPU?= =?us-ascii?Q?6ePnZU999a886KmXF7OzYeTCTdzNYAC47PpZw56vKX9D3DJncZS6eS+S2PVx?= =?us-ascii?Q?lVAcl8I61eA7n0O9QT0XUKKK7h7oqqCR0bPlnlnuBIxs7mK2pTJYiOwBLtOW?= =?us-ascii?Q?WqXG8xnmstMa4HnJ2QDjTm3b1r0fOSTSnSTg9SCUL1UObtS7/SUUY87AIEBJ?= =?us-ascii?Q?vHqDkHFWur4qsbOvQKcPnmtNhs32xrCERax2h2ipUMesfpUDxeOdsmTJpjnq?= =?us-ascii?Q?4BkzO2faRv4eNvSVLNujaLn2YrPZAsvaFiSbuNa6cB//bDeNjys3JhYWDnox?= =?us-ascii?Q?4bIwFqr1FhnmRMrrvb2J0cC3pkX/lcTbMJzN61FoXq1yOJrLntusgqiuFlDQ?= =?us-ascii?Q?6MCKvhMAIHpUCttRJfXKUHowOLkC0sw+9IHYqGCWp9k3B9fLodC6oiO8OOho?= =?us-ascii?Q?TXwmqiSvE7QCqQY1kI2Boh0zsUQ/tw1zqZil+ky8haM6db4ojPmzWviBeQdT?= =?us-ascii?Q?WbrFMBzSP/rzPyJiJlMhoLv7qyW9g8ZUqqauY61X5zoVS+1sfU8p3o5H/V2W?= =?us-ascii?Q?ikhy0aXPF7P6qN/gXP1ezsgKwWKnAxUl9grUVQ8jtAyx0e7rnU9U9KiAHdmI?= =?us-ascii?Q?boj4vUCG4VKNzeXLdTBirjb8N/8HBShwXdYExMXBpgz6vl2W5zSqhJ9I3YCB?= =?us-ascii?Q?9LpV7r/uHdCSwzvRJ+6jaThDjueB1CBweboPwV1V2JDHiLRy5ASQzFYY3V5b?= =?us-ascii?Q?i+2y02S5XI4EwZF7nJkC2sTHBGdZ64xr4+Xal53XBxImVdeRfvdDXgp79qMp?= =?us-ascii?Q?ZJNmfi7w6exx2q0Wdjg=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(7416014)(376014)(82310400026)(36860700013)(1800799024)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2025 18:26:34.3285 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 66524d80-cb06-4356-b383-08de22190271 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB56.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB9521 Content-Type: text/plain; charset="utf-8" To help avoid duplicate logic when programing DTE for nested translation. Note that this commit changes behavior of when the IOMMU driver is switching domain during attach and the blocking domain, where DTE bit fields for interrupt pass-through (i.e. Lint0, Lint1, NMI, INIT, ExtInt) and System management message could be affected. These DTE bits are specified in the IVRS table for specific devices, and should be persistent. Suggested-by: Jason Gunthorpe Reviewed-by: Jason Gunthorpe Signed-off-by: Suravee Suthikulpanit Reviewed-by: Nicolin Chen --- drivers/iommu/amd/amd_iommu.h | 13 +++++++++++++ drivers/iommu/amd/iommu.c | 11 ----------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/drivers/iommu/amd/amd_iommu.h b/drivers/iommu/amd/amd_iommu.h index 57f9f4fb8a4b..ebedb49c28cf 100644 --- a/drivers/iommu/amd/amd_iommu.h +++ b/drivers/iommu/amd/amd_iommu.h @@ -194,9 +194,22 @@ void amd_iommu_update_dte(struct amd_iommu *iommu, static inline void amd_iommu_make_clear_dte(struct iommu_dev_data *dev_data, struct dev_table= _entry *new) { + struct dev_table_entry *initial_dte; + struct amd_iommu *iommu =3D get_amd_iommu_from_dev(dev_data->dev); + /* All existing DTE must have V bit set */ new->data128[0] =3D DTE_FLAG_V; new->data128[1] =3D 0; + + /* + * Restore cached persistent DTE bits, which can be set by information + * in IVRS table. See set_dev_entry_from_acpi(). + */ + initial_dte =3D amd_iommu_get_ivhd_dte_flags(iommu->pci_seg->id, dev_data= ->devid); + if (initial_dte) { + new->data128[0] |=3D initial_dte->data128[0]; + new->data128[1] |=3D initial_dte->data128[1]; + } } =20 /* NESTED */ diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 6a26e7a28141..24bab275e8c0 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -2068,7 +2068,6 @@ static void set_dte_entry(struct amd_iommu *iommu, { u16 domid; u32 old_domid; - struct dev_table_entry *initial_dte; struct dev_table_entry new =3D {}; struct protection_domain *domain =3D dev_data->domain; struct gcr3_tbl_info *gcr3_info =3D &dev_data->gcr3_info; @@ -2126,16 +2125,6 @@ static void set_dte_entry(struct amd_iommu *iommu, old_domid =3D READ_ONCE(dte->data[1]) & DTE_DOMID_MASK; new.data[1] |=3D domid; =20 - /* - * Restore cached persistent DTE bits, which can be set by information - * in IVRS table. See set_dev_entry_from_acpi(). - */ - initial_dte =3D amd_iommu_get_ivhd_dte_flags(iommu->pci_seg->id, dev_data= ->devid); - if (initial_dte) { - new.data128[0] |=3D initial_dte->data128[0]; - new.data128[1] |=3D initial_dte->data128[1]; - } - set_dte_gcr3_table(iommu, dev_data, &new); =20 amd_iommu_update_dte(iommu, dev_data, &new); --=20 2.34.1 From nobody Wed Dec 17 14:23:42 2025 Received: from CY7PR03CU001.outbound.protection.outlook.com (mail-westcentralusazon11010053.outbound.protection.outlook.com [40.93.198.53]) (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 2EECB34D39F for ; Wed, 12 Nov 2025 18:26:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.198.53 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762972004; cv=fail; b=agN1IhO1IOlxKTHcCP6upFCTr+8iN9RuHXh/DmSP2vxtGzQGV6L9kTt99MRWoARjyt0PrN45mo8v+hpshE2yKiI+SghiTOoKYCMhVG57FEboUqqPUqsARCKz4n0Enlo+T0psuMjjyXPLYG7M8Bp/CfOXSG2EaChxwDl+WZkl7Eg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762972004; c=relaxed/simple; bh=c/sTDbM4CUJPlXwEacf5R8qh5WDKbOi7E1jiDV06geg=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=E+wph4RPJQySxWkddVBaLP8sZCZtufHg69hLdHxl6APOs26BB9g33HX+snZ9pTdTI060R+iK9AkRZgA0Ftj8zpAg5wvzCothA0Gcao2mk5RU0bxk2ttECN3hfNdMYutgYCkI8V3Xf6EkOBTY1vpT3MmnlgNMo0skczWj1B9+/3c= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=xDSXqeeS; arc=fail smtp.client-ip=40.93.198.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="xDSXqeeS" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UQVYVpsvnoZ6opoesizWfL98kktg7i8/Y8YI92nrOQkAw3JN1zrI/2wFR7KgwO72gDVP1wH8MPcxmxmYWi+btQ3ykQwT+z89wkrXH6Igb1migmQmqddF6vGgM9OL+PLckscDx6zruQY5MyyQ98hwlYz127hhhu0TfyxXjP0wENGhXutgLen2U/EfjoxF3ufiklFR2WqVYGT9MFy9fMyeR+/gcpcBMBqKnEvgWLzg+4vQPYGxi06PjFk9GSGseX6shMywVcPMr7rRxChS5jbiPgHvkjZkwH9aTRe8nhxE3349Gp71qtX6NvLRUNTz6D2q0FpZdtjCEc54GilPKRZU+g== 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=O+4vEhRU038R80vs/NljpViMCdlAAIlIxNi6LXSYqps=; b=jdV+0ZPR9QRQjvLVpuK7IEcQhbNq4vJ9yoKjDUfUVUzunpYioYasWbsoujBghNLxlUVt9DNiYWdysW4I4aE1DIKtDFqzG406kaVplwTXY+5TO16W4tFjxKq5+D4oyghuC6cAFuVKyrTkyLxtGEiN7PtLuyy4zxRyLdVm4yeueQlSu5zPS9re3g2Qtd+GU6mK+UnX7PZqVMsFWs72a8OL62+N6bzoe+mlsGrsigx6OEN583dYqEMaC/QCs/RTsFTUUoEHZyaDN8O+JkSfQukxjtPBdGKbJLr0H3H9nWle/hCOmPXMUmEbWXrTZcoFCoXfJRgcYp9vp2MVYSJWDy4AnQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nvidia.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=O+4vEhRU038R80vs/NljpViMCdlAAIlIxNi6LXSYqps=; b=xDSXqeeSIP4BDtZ3gB+UaeGuSGKwLcTMHG+83xZvySTqroaZKWxmh1J7NnF71AhwttjdHJy1nVztvNFkui+0CQL89EK8udjC6zW/wDmMIGZauAs2YeLiHiMlPgPSw8fjhtzOKDe4K7kjjkQDQu82Sbjm2HttUS/UF4wW2GX+qSY= Received: from SA9PR03CA0011.namprd03.prod.outlook.com (2603:10b6:806:20::16) by SA1PR12MB7127.namprd12.prod.outlook.com (2603:10b6:806:29e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.16; Wed, 12 Nov 2025 18:26:39 +0000 Received: from SA2PEPF00003F62.namprd04.prod.outlook.com (2603:10b6:806:20:cafe::85) by SA9PR03CA0011.outlook.office365.com (2603:10b6:806:20::16) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9320.15 via Frontend Transport; Wed, 12 Nov 2025 18:26:35 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by SA2PEPF00003F62.mail.protection.outlook.com (10.167.248.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.13 via Frontend Transport; Wed, 12 Nov 2025 18:26:39 +0000 Received: from purico-ed03host.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 12 Nov 2025 10:26:34 -0800 From: Suravee Suthikulpanit To: , CC: , , , , , , , , , , , , , , , , , , Suravee Suthikulpanit Subject: [PATCH v5 13/14] iommu/amd: Refactor logic to program the host page table in DTE Date: Wed, 12 Nov 2025 18:25:05 +0000 Message-ID: <20251112182506.7165-14-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251112182506.7165-1-suravee.suthikulpanit@amd.com> References: <20251112182506.7165-1-suravee.suthikulpanit@amd.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-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003F62:EE_|SA1PR12MB7127:EE_ X-MS-Office365-Filtering-Correlation-Id: 8c5bafc5-3767-4fc8-9085-08de221905ae X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|82310400026|7416014|376014|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?+kiWZ0GeJPh1WfqcPe2VVwm7P8LwrCxi7Wj6wrgo+aTC3UFdWyBYLSXv4LYn?= =?us-ascii?Q?ngAviAd07YV+EMzxFBPYqMrv4jP+Bcxf8EI/kbmG+AxP0uD76xZ8ZFVz9dT1?= =?us-ascii?Q?8+6/6SxXbTQ6ZuYEYhgzuBgdeeBFnjj2+lfB5OPMl0GwTTDISqD0rAIJcm60?= =?us-ascii?Q?noJWCyUgvE6Kb/BdCf0l8ICSvDj9+fjZv/RXuxTSJnSsopMBs9jR9vuHBS+4?= =?us-ascii?Q?0noIGsWi+Jd1hSNFIvlbwbcY/NExm676Ququekr3/DzEWF8NzRJG74VkUUSX?= =?us-ascii?Q?Gj9v6qoEKgZH7XhFsPzjoiVRHgM5A2lbXIKmMOMgBC5ZHu7nkImcc99iwC7y?= =?us-ascii?Q?5560WfwRhCxLt1QJfHK1bEKr15SSykY5RC7npLsFFT8d8TVwUiKOb4prrlw6?= =?us-ascii?Q?YbVvU/0bdeutBXs3PzCkC77r697j3c+Q2IjrEmVsAi/ZbahYCjkWS/4lj1Nk?= =?us-ascii?Q?XeLYY1D6wQ2QVBuxnhFUXZnsGAw0RycKeiJEFU+Zg9XUPnw0q7kl99J+TBGJ?= =?us-ascii?Q?UADN7ZRCS9u+llA6vs7OGpK5atHoFn/BAvS8kjLtbC4gEfoZQe6cdBXit5Q8?= =?us-ascii?Q?Kr9VblHJ8mkp+Iy6doScrRWfcdAJGHK03KEcvSREdZX3rYB9wIHiBeAIMoCt?= =?us-ascii?Q?4KBXeQIoxnRbQFC8pAtPLl5tbsy2i4bURQQbrx9i+ZoZvxb/1phbx7PtVbI+?= =?us-ascii?Q?B5y0nNEmLSvin1++WslPeRayn+km+8eHZl3lY4lwlr/caTBejyUuWs3/d7DF?= =?us-ascii?Q?NklTZTnc/FOEs8bZ9O4ZfjZTDagMWIZzr5lQC/5gHJCaMtkV8XdJuh7pIYy6?= =?us-ascii?Q?qEw0AS2H8+R+juo4QpWN1VwbA7h/0N3bpvSnzJtWTULtN9wxeAZwyInf6Dr0?= =?us-ascii?Q?Pfc2E4p9muIbZVGMWH6hPjxMEXyZEQ43YmLCXJQ+cgdEw49XNnukMzLbd1+T?= =?us-ascii?Q?N9vYTsCPBODY1APc+PhCjNqYkJNE7gVldZ6lkA6BB/Vq7LB+TdiUbzSoWfkn?= =?us-ascii?Q?AYunRK+8myO80Ge3hO3iBpHOesqUDYblM2/DBnXWBQXC0Dei8Pc9VOStv1B3?= =?us-ascii?Q?cXbU1O8x0WElxPstzJPXnEToD3vefwHYxzBfqUyKUl1Q000vkS2ntPoyxnij?= =?us-ascii?Q?5vWTXZUwFqgOnAW0Z+1l5y2JVtprFvjcRxh9iHivahCk64ZLXadYd3aha29d?= =?us-ascii?Q?IeEfbBCg2NC0N0W/jXE+rauFMqxM/+7xdvikUSQMYQwU0d6uoIYUOs5afKhe?= =?us-ascii?Q?IYYotts8EfnSfaoJ7M4ymLoBAaJTnf9YEENrx5rvbohgNWFFcMoNU6WQozsE?= =?us-ascii?Q?MafP7iH07ZlCRfN0+nG+eGesa/WMDjGlMdpEN+ioLjSvwhDqpr7b5p5Hae86?= =?us-ascii?Q?woYu/BCG/7oyDZ0UJmIL+wmRAzxph7Ptc9LRQPeCpfOwnQBJoYWvxv//FiGQ?= =?us-ascii?Q?zvgwbsrfKJmuvKn+PafLD2beOCm7H68JVJUYkz6uttI0a5F7+kgnA5wNVWfD?= =?us-ascii?Q?5pFeTL/5cxpZouanCWX6V4iexROEaSI3UgH5bnIkoRLHds0nzEB9nFdZQjzW?= =?us-ascii?Q?5DijJwVvKR6ivbz4yCU=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(1800799024)(82310400026)(7416014)(376014)(7053199007);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2025 18:26:39.7370 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8c5bafc5-3767-4fc8-9085-08de221905ae X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003F62.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB7127 Content-Type: text/plain; charset="utf-8" Introduce the amd_iommu_set_dte_v1() helper function to configure IOMMU host (v1) page table into DTE. Suggested-by: Jason Gunthorpe Signed-off-by: Suravee Suthikulpanit Reviewed-by: Jason Gunthorpe --- drivers/iommu/amd/amd_iommu.h | 5 ++ drivers/iommu/amd/amd_iommu_types.h | 1 + drivers/iommu/amd/iommu.c | 94 ++++++++++++++++------------- 3 files changed, 59 insertions(+), 41 deletions(-) diff --git a/drivers/iommu/amd/amd_iommu.h b/drivers/iommu/amd/amd_iommu.h index ebedb49c28cf..df167ae9e4aa 100644 --- a/drivers/iommu/amd/amd_iommu.h +++ b/drivers/iommu/amd/amd_iommu.h @@ -187,6 +187,11 @@ void amd_iommu_domain_set_pgtable(struct protection_do= main *domain, struct dev_table_entry *get_dev_table(struct amd_iommu *iommu); struct iommu_dev_data *search_dev_data(struct amd_iommu *iommu, u16 devid); =20 +void amd_iommu_set_dte_v1(struct iommu_dev_data *dev_data, + struct protection_domain *domain, + u16 domid, struct pt_iommu_amdv1_hw_info *pt_info, + struct dev_table_entry *new); + void amd_iommu_update_dte(struct amd_iommu *iommu, struct iommu_dev_data *dev_data, struct dev_table_entry *new); diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_io= mmu_types.h index 734f6a753b3a..19a98c6490cb 100644 --- a/drivers/iommu/amd/amd_iommu_types.h +++ b/drivers/iommu/amd/amd_iommu_types.h @@ -352,6 +352,7 @@ #define DTE_FLAG_HAD (3ULL << 7) #define DTE_MODE_MASK GENMASK_ULL(11, 9) #define DTE_HOST_TRP GENMASK_ULL(51, 12) +#define DTE_FLAG_PPR BIT_ULL(52) #define DTE_FLAG_GIOV BIT_ULL(54) #define DTE_FLAG_GV BIT_ULL(55) #define DTE_GLX GENMASK_ULL(57, 56) diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 24bab275e8c0..d392b6757f2a 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -2030,36 +2030,56 @@ int amd_iommu_clear_gcr3(struct iommu_dev_data *dev= _data, ioasid_t pasid) * Note: * The old value for GCR3 table and GPT have been cleared from caller. */ -static void set_dte_gcr3_table(struct amd_iommu *iommu, - struct iommu_dev_data *dev_data, - struct dev_table_entry *target) +static void set_dte_gcr3_table(struct iommu_dev_data *dev_data, + struct dev_table_entry *new) { struct gcr3_tbl_info *gcr3_info =3D &dev_data->gcr3_info; - u64 gcr3; + u64 gcr3 =3D iommu_virt_to_phys(gcr3_info->gcr3_tbl); =20 - if (!gcr3_info->gcr3_tbl) - return; - - pr_debug("%s: devid=3D%#x, glx=3D%#x, gcr3_tbl=3D%#llx\n", - __func__, dev_data->devid, gcr3_info->glx, - (unsigned long long)gcr3_info->gcr3_tbl); - - gcr3 =3D iommu_virt_to_phys(gcr3_info->gcr3_tbl); + new->data[0] |=3D DTE_FLAG_TV | + (dev_data->ppr ? DTE_FLAG_PPR : 0) | + (pdom_is_v2_pgtbl_mode(dev_data->domain) ? DTE_FLAG_GIOV : 0) | + DTE_FLAG_GV | + FIELD_PREP(DTE_GLX, gcr3_info->glx) | + FIELD_PREP(DTE_GCR3_14_12, gcr3 >> 12) | + DTE_FLAG_IR | DTE_FLAG_IW; =20 - target->data[0] |=3D DTE_FLAG_GV | - FIELD_PREP(DTE_GLX, gcr3_info->glx) | - FIELD_PREP(DTE_GCR3_14_12, gcr3 >> 12); - if (pdom_is_v2_pgtbl_mode(dev_data->domain)) - target->data[0] |=3D DTE_FLAG_GIOV; - - target->data[1] |=3D FIELD_PREP(DTE_GCR3_30_15, gcr3 >> 15) | - FIELD_PREP(DTE_GCR3_51_31, gcr3 >> 31); + new->data[1] |=3D FIELD_PREP(DTE_DOMID_MASK, dev_data->gcr3_info.domid) | + FIELD_PREP(DTE_GCR3_30_15, gcr3 >> 15) | + (dev_data->ats_enabled ? DTE_FLAG_IOTLB : 0) | + FIELD_PREP(DTE_GCR3_51_31, gcr3 >> 31); =20 /* Guest page table can only support 4 and 5 levels */ if (amd_iommu_gpt_level =3D=3D PAGE_MODE_5_LEVEL) - target->data[2] |=3D FIELD_PREP(DTE_GPT_LEVEL_MASK, GUEST_PGTABLE_5_LEVE= L); + new->data[2] |=3D FIELD_PREP(DTE_GPT_LEVEL_MASK, GUEST_PGTABLE_5_LEVEL); else - target->data[2] |=3D FIELD_PREP(DTE_GPT_LEVEL_MASK, GUEST_PGTABLE_4_LEVE= L); + new->data[2] |=3D FIELD_PREP(DTE_GPT_LEVEL_MASK, GUEST_PGTABLE_4_LEVEL); +} + +void amd_iommu_set_dte_v1(struct iommu_dev_data *dev_data, + struct protection_domain *domain, + u16 domid, struct pt_iommu_amdv1_hw_info *pt_info, + struct dev_table_entry *new) +{ + /* Note Dirty tracking is used for v1 table only for now */ + new->data[0] |=3D DTE_FLAG_TV | + FIELD_PREP(DTE_MODE_MASK, pt_info->mode) | + (domain->dirty_tracking ? DTE_FLAG_HAD : 0) | + FIELD_PREP(DTE_HOST_TRP, pt_info->host_pt_root >> 12) | + DTE_FLAG_IR | DTE_FLAG_IW; + + new->data[1] |=3D FIELD_PREP(DTE_DOMID_MASK, domid) | + (dev_data->ats_enabled ? DTE_FLAG_IOTLB : 0); +} + +static void set_dte_passthrough(struct iommu_dev_data *dev_data, + struct protection_domain *domain, + struct dev_table_entry *new) +{ + new->data[0] |=3D DTE_FLAG_TV | DTE_FLAG_IR | DTE_FLAG_IW; + + new->data[1] |=3D FIELD_PREP(DTE_DOMID_MASK, domain->id) | + (dev_data->ats_enabled) ? DTE_FLAG_IOTLB : 0; } =20 static void set_dte_entry(struct amd_iommu *iommu, @@ -2074,8 +2094,6 @@ static void set_dte_entry(struct amd_iommu *iommu, struct dev_table_entry *dte =3D &get_dev_table(iommu)[dev_data->devid]; struct pt_iommu_amdv1_hw_info pt_info; =20 - amd_iommu_make_clear_dte(dev_data, &new); - if (gcr3_info && gcr3_info->gcr3_tbl) domid =3D dev_data->gcr3_info.domid; else { @@ -2097,35 +2115,29 @@ static void set_dte_entry(struct amd_iommu *iommu, &pt_info); } =20 - new.data[0] |=3D __sme_set(pt_info.host_pt_root) | - (pt_info.mode & DEV_ENTRY_MODE_MASK) - << DEV_ENTRY_MODE_SHIFT; + pt_info.host_pt_root =3D __sme_set(pt_info.host_pt_root); } } =20 - new.data[0] |=3D DTE_FLAG_IR | DTE_FLAG_IW; - /* * When SNP is enabled, we can only support TV=3D1 with non-zero domain I= D. * This is prevented by the SNP-enable and IOMMU_DOMAIN_IDENTITY check in * do_iommu_domain_alloc(). */ WARN_ON(amd_iommu_snp_en && (domid =3D=3D 0)); - new.data[0] |=3D DTE_FLAG_TV; - - if (dev_data->ppr) - new.data[0] |=3D 1ULL << DEV_ENTRY_PPR; - - if (domain->dirty_tracking) - new.data[0] |=3D DTE_FLAG_HAD; =20 - if (dev_data->ats_enabled) - new.data[1] |=3D DTE_FLAG_IOTLB; + amd_iommu_make_clear_dte(dev_data, &new); =20 old_domid =3D READ_ONCE(dte->data[1]) & DTE_DOMID_MASK; - new.data[1] |=3D domid; - - set_dte_gcr3_table(iommu, dev_data, &new); + if (gcr3_info && gcr3_info->gcr3_tbl) + set_dte_gcr3_table(dev_data, &new); + else if (domain->domain.type =3D=3D IOMMU_DOMAIN_IDENTITY) + set_dte_passthrough(dev_data, domain, &new); + else if (domain->domain.type & __IOMMU_DOMAIN_PAGING && + domain->pd_mode =3D=3D PD_MODE_V1) + amd_iommu_set_dte_v1(dev_data, domain, domid, &pt_info, &new); + else + WARN_ON(true); =20 amd_iommu_update_dte(iommu, dev_data, &new); =20 --=20 2.34.1 From nobody Wed Dec 17 14:23:42 2025 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012051.outbound.protection.outlook.com [52.101.43.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 92AB2347BB6 for ; Wed, 12 Nov 2025 18:26:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.51 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762972015; cv=fail; b=ricpb+5s6INcKAT60HzFy12WGQGaJGQwp8yf9lLYq7T2Va1bS3yw2h3QThVIYcAe8hTDc5vqMURPUJq3jkNYc8UOS/kgT5CFTJbU9zk9QG348LfA4kUk0u2RqQxgLzS8TsGJ1fkI/IrlUAkchzNUpj1oN38Il9pU+U7R7zhOwWg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762972015; c=relaxed/simple; bh=C4dh9sapLcnydNhLXH3XEjk3ChNrib2GUXr23XN9O04=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=mX7JfnV4XyzGlW8ejnNBh9YnelnIh2A83EdGIa2sDvufXEvRPB+pmnJri7NQ57MexcLG/LKZZYox4If3l9j4Zlh0Z73yIvX3sQlU7wzozZt8uNG4DXhPezs3MCdbhitBh0H3KMw6SeOPE5Dp2QflwpU3B5ek3WSkvVr2eh3naZM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=P49I+GV0; arc=fail smtp.client-ip=52.101.43.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="P49I+GV0" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZDGlmpzYj56OaZlQkIVEBp9b/xFQ+0lgPd9pVPlqVPbxXQjcYcd7OZpCjupnq0LPATBhyiMou9wSYaNhLxW3ffrUplLr2PDsN0xrvH+iHhrfK6a86oP7O3k7F25oK5jjr8R25ilziR3KY4o60DAXk28GyzUPEXZ8dQgZsItzVHmgPiX6vWqLfbpSEJyqXWWx2KcyMMjJg1nlpAQp+MGVSV6OddP0a0cQ9pWzCnUCsmUQ/1bM2HZ45W2KMS+E0AuBx9+t2CUnkfJHwAwRONGukAmrkm4ov/1co9AFFWuMqkhTGHoI0KgoSERAu57gaJQqLqEjWKs29vQijZp5e7Qctw== 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=aQECgF21SzkvOm/HNCznkTxuoIMAHiPBetTO+KGLfwM=; b=SPKttbUNn5DknyMxgd5Kla8KRSUgZqkXiSr6OBHj8Zg4T3Xzqmaod0kesnT/Kf6Xhjas9nEn4q1TlzMTRDAkABPkFbF5mmFmkyVxOVqx/rva071t3MdaR9PmalrBH8yUmw3YGeGZ4bEE8Cm01EB7xMV27u1DEyisXVu6uJGz8Qh0a3SLQuCb8UXTbuEiI5mwQ7oIZDP1oBDeBZ5sHa8cUEhMGpfJckY4EBvYWcDOoCvzFkUq9ZszzNDx4J2v/nds97T67u+Fq8J2q4I7e+Se9Q6cQ2wIFVRMtge2CbvJ4fTwua6UexEmGp46aedj9qwxBqFbNPpu1F5qYqTTAUZBZQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nvidia.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aQECgF21SzkvOm/HNCznkTxuoIMAHiPBetTO+KGLfwM=; b=P49I+GV02bVkmesKlPyCO4LI/gvSH9h5qgyRQVWuyTCf6HVkwkET+RxUkW05X/rqsz/rT9GQDHn5ODgBKXbAtU2sqGwLqOGMC0udhfmc5Q8+mO1gNz6NNM+8v7VfVbHPVniTYgvoZKCEw85rVjlnC5OcgFJuzsVY0w4ay4Am2Kc= Received: from SA9P221CA0027.NAMP221.PROD.OUTLOOK.COM (2603:10b6:806:25::32) by SA1PR12MB6725.namprd12.prod.outlook.com (2603:10b6:806:254::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.15; Wed, 12 Nov 2025 18:26:48 +0000 Received: from SA2PEPF00003F63.namprd04.prod.outlook.com (2603:10b6:806:25:cafe::8b) by SA9P221CA0027.outlook.office365.com (2603:10b6:806:25::32) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9320.16 via Frontend Transport; Wed, 12 Nov 2025 18:26:48 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by SA2PEPF00003F63.mail.protection.outlook.com (10.167.248.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.13 via Frontend Transport; Wed, 12 Nov 2025 18:26:47 +0000 Received: from purico-ed03host.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 12 Nov 2025 10:26:39 -0800 From: Suravee Suthikulpanit To: , CC: , , , , , , , , , , , , , , , , , , Suravee Suthikulpanit Subject: [PATCH v5 14/14] iommu/amd: Add support for nested domain attach/detach Date: Wed, 12 Nov 2025 18:25:06 +0000 Message-ID: <20251112182506.7165-15-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251112182506.7165-1-suravee.suthikulpanit@amd.com> References: <20251112182506.7165-1-suravee.suthikulpanit@amd.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-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003F63:EE_|SA1PR12MB6725:EE_ X-MS-Office365-Filtering-Correlation-Id: 5fec37b5-58b2-454c-276e-08de22190a69 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|376014|1800799024|7416014|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?bAWz6tBASM77cNScf3X625E6iorbLY5hSDpyZjbTj01zHorecF2+bk3WVE/3?= =?us-ascii?Q?xTiVGoBRqgSGkb/4xi4bbM/BC4JMhVSP7LSeuHQLWpekOWstm0lK+lXD+Klf?= =?us-ascii?Q?pDsWPEH/vbNwXuSic/aeQwjqhKOrLkslHZiq9DiCVhQYYiuiS+m4xGQK35qJ?= =?us-ascii?Q?eA3CzpaXhJmH72pYZFd9lprOxOlA1qgobTEfRRmil9VjrfutuTvv+yx1WEyF?= =?us-ascii?Q?LTFxqUCx5SxB1tdc10WZlgykoK/MtUWUDOpeWNsu8oevl33xPfAenMc2l93l?= =?us-ascii?Q?f8eTkBBvUbi6bpNqGZgFxSxd8t77Uq1Zol8hzIt6HaCgeYHcHQQyYgy0ypTi?= =?us-ascii?Q?YoEmRsYONVyjYEWeKh8db6YtNlOh95KsqXThjdamD8VCPiu2PIPSRlG4fCB8?= =?us-ascii?Q?JXk46fqJKicVKi0Kgy0izXLOwUEVqNBMqaT/KHnwJ47JnBCkuRmscxhKtLDD?= =?us-ascii?Q?chKo9dPeg8LRVtWo+v6CRI/5d00iosW2hX1FQ/Xp5WAzpbir4cIpR/QSg44n?= =?us-ascii?Q?bMFe4cCAbvroP0qm2t1Sf0on/YMnWV/pN77+U34rb69GKMhvFgUQpxW3Davb?= =?us-ascii?Q?71td7ldaN/8HYEo1hi74b0AWbwlVn2RO/p0l5YDxtTMt3PWh9Db+Y1X/AZ1p?= =?us-ascii?Q?qK2qzqpB9JukKHB4UNumLUjLk0pTRnzR7AA0OtZZDvhJisBcjdN3DvnutiH+?= =?us-ascii?Q?BzwoJk1uZw1y0WcWLiqIDjY8+Gee3AY8fIDdifPqJBeBimV5QbGJY9uBzRpE?= =?us-ascii?Q?a3i90nG8MTuanwt7fA9MImu1w+wsY7IeyPTKzIPqgfAt1BUQcTYM9XG1+hfm?= =?us-ascii?Q?h2NPh1qoTh9PE/jMOdkzgiTBKaTptHoK+1NfUUKarv355gg/5GghATokhYVX?= =?us-ascii?Q?m1TSU+ZKvwqY8/uXe2pDU8Mb9ie+0R1uus58I3Z0XUohpSCXxQ5BE1Od0IP3?= =?us-ascii?Q?4drxRFvsevLkjrD1355+RASY9W7K6BeccTwxdeutjATL6d4OR9ef/w4yt+xb?= =?us-ascii?Q?CoLM9vUAxhHyRhCHFcVvqk5V2ZIXActCaqTbrJK+WpaKbHYxfsINqn7e2knV?= =?us-ascii?Q?Et/icrpRhg34Huref1fq3Su8HbHxaE6rza7jMQeYI9WLsx5pwKeiRrzXF4yA?= =?us-ascii?Q?p9mX/9uJnycYgrThnzR9EUEBv9Yxxb6ur5WYSyRq2sb9+vMvB5P91KTYkGCq?= =?us-ascii?Q?Hj6uhFEla/y2GDwUuxU3iv8fYLuEfB1wgOJKLJChCqfDbt9CVRMNAh+nt6eu?= =?us-ascii?Q?0AZrwS/eQ47UFly7H4cj2GoEpubtYPF9MnV1tNQi9t/7yKVBNpE9Sk0y4tlR?= =?us-ascii?Q?DB6OQT09v2b3kmMI3dqX9kEI8knwpXX3ZTlDQn6FuljKR3em9vbtU58/dXdO?= =?us-ascii?Q?D6rFWHhf3L9y6qPCZuabZJitz735NqlG/Fv/q3hjchcUjWy0zguLMCKOYAWT?= =?us-ascii?Q?MeKKITxtKccWCpGZYSaM6oSguPAPmpJrRJkYp6GLZJ7TKwZeYclHi50H06XO?= =?us-ascii?Q?wdPes3b0Zyv1hgl5f91FcYj32fcqi5xtX4dawSpDa7G1rQf0h/GZwggqcBxa?= =?us-ascii?Q?AeMXUQVlxKV+LPopWZM=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(376014)(1800799024)(7416014)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2025 18:26:47.6723 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5fec37b5-58b2-454c-276e-08de22190a69 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003F63.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB6725 Content-Type: text/plain; charset="utf-8" Introduce set_dte_nested() to program guest translation settings in the host DTE when attaches the nested domain to a device. Signed-off-by: Suravee Suthikulpanit Reviewed-by: Nicolin Chen --- drivers/iommu/amd/nested.c | 69 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/drivers/iommu/amd/nested.c b/drivers/iommu/amd/nested.c index 1bbcb16abecc..eeb5d9b3a58f 100644 --- a/drivers/iommu/amd/nested.c +++ b/drivers/iommu/amd/nested.c @@ -153,6 +153,74 @@ amd_iommu_alloc_domain_nested(struct iommufd_viommu *v= iommu, u32 flags, return ERR_PTR(ret); } =20 +static void set_dte_nested(struct amd_iommu *iommu, + struct iommu_domain *dom, + struct iommu_dev_data *dev_data) +{ + struct protection_domain *parent; + struct dev_table_entry new =3D {0}; + struct nested_domain *ndom =3D to_ndomain(dom); + struct iommu_hwpt_amd_guest *gdte =3D &ndom->gdte; + struct pt_iommu_amdv1_hw_info pt_info; + + /* + * The nest parent domain is attached during the call to the + * struct iommu_ops.viommu_init(), which will be stored as part + * of the struct amd_iommu_viommu.parent. + */ + if (WARN_ON(!ndom->viommu || !ndom->viommu->parent)) + return; + + parent =3D ndom->viommu->parent; + amd_iommu_make_clear_dte(dev_data, &new); + + /* Retrieve the current pagetable info via the IOMMU PT API. */ + pt_iommu_amdv1_hw_info(&parent->amdv1, &pt_info); + + /* + * Use nested domain ID to program DTE. + * See amd_iommu_alloc_domain_nested(). + */ + amd_iommu_set_dte_v1(dev_data, parent, ndom->gdom_info->hdom_id, &pt_info= , &new); + + /* Guest PPR */ + new.data[0] |=3D gdte->dte[0] & DTE_FLAG_PPR; + + /* Guest translation stuff */ + new.data[0] |=3D gdte->dte[0] & (DTE_GLX | DTE_FLAG_GV | DTE_FLAG_GIOV); + + /* GCR3 table */ + new.data[0] |=3D gdte->dte[0] & DTE_GCR3_14_12; + new.data[1] |=3D gdte->dte[1] & (DTE_GCR3_30_15 | DTE_GCR3_51_31); + + /* Guest paging mode */ + new.data[2] |=3D gdte->dte[2] & DTE_GPT_LEVEL_MASK; + + amd_iommu_update_dte(iommu, dev_data, &new); +} + +static int nested_attach_device(struct iommu_domain *dom, struct device *d= ev, + struct iommu_domain *old) +{ + struct iommu_dev_data *dev_data =3D dev_iommu_priv_get(dev); + struct amd_iommu *iommu =3D get_amd_iommu_from_dev_data(dev_data); + int ret =3D 0; + + if (WARN_ON(dom->type !=3D IOMMU_DOMAIN_NESTED)) + return -EINVAL; + + mutex_lock(&dev_data->mutex); + + /* Setup DTE for nested translation and + * update the device table + */ + set_dte_nested(iommu, dom, dev_data); + + mutex_unlock(&dev_data->mutex); + + return ret; +} + static void nested_domain_free(struct iommu_domain *dom) { struct guest_domain_mapping_info *curr; @@ -186,5 +254,6 @@ static void nested_domain_free(struct iommu_domain *dom) } =20 static const struct iommu_domain_ops nested_domain_ops =3D { + .attach_dev =3D nested_attach_device, .free =3D nested_domain_free, }; --=20 2.34.1