From nobody Mon Sep 15 19:39:10 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 87E1EC46467 for ; Tue, 10 Jan 2023 14:32:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238515AbjAJOcX (ORCPT ); Tue, 10 Jan 2023 09:32:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49094 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238611AbjAJOcH (ORCPT ); Tue, 10 Jan 2023 09:32:07 -0500 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on2069.outbound.protection.outlook.com [40.107.96.69]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7C59C37277 for ; Tue, 10 Jan 2023 06:31:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q/JmObhkl9+jyLJKujnwUdf3A3DrtJxXhgRyq1FwgDGFiLf95IqYUwbxpuC/YJs3o6umki19gr6nzTg0GpPYVF3E94QXZoEHbP+gI2ormeEpIyRlAApTm1dbMcCss9EqCq0YuQoXBz6B3mtVA0k+9K7s98BtiD1rY5cgH32PHvCdvBZErnYSzP0L9LI/lkPenFG7Tn/NWpDULI6lgPQ/cRZwMzo+kHPVCMPau+YztjbcVjRIKzqRfrIAzrupS0MHKj4NqKN7D8HVM5NtqfClP3TvmU4diJhktIwedcl9002Ygw9jNE1S2QkZXKp5niVjfgCHPAuBhlfEWiC7nzzNTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=rM/7rBbvFmTloP90cbfDESDHZVvtwEhdd3UXHRXpRbE=; b=jI5e35NZ/fbexZlrinfXUBFP5B28Kd81ND16CWii1ZrG18L/G2oJM2tdNXwapU3Qhw5TykgIiW95AjJmznHrukhXZ5MyLJm/o51v48vLY435p7n0/T12IxmemgZXk0kt2ulT2tSPRyM7YHbTe2Me2tcPJztgVRyivuBA6wxZHWujfgyqw1Ouni9FgTT25oV+6MqfCOSFEfm/uaDNeHGwR8u712v/G8/al4keF/gigJxFGQ3kOHVIHEVeV99jom9VBPDv13ActRH01Asjo65MP7VOIYCueehzvpQ3FjNNSKJCX6iPDgaT3/L1Euy9JmhIZUwoAnBo66CX03fpjNIkiQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org 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 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=rM/7rBbvFmTloP90cbfDESDHZVvtwEhdd3UXHRXpRbE=; b=YkaCjFPQJ9az6l+X5e2x+4Qk/WbImO2bR9CW26Vn454eRC04LOvx3cYnqm0gpiK1qb16SX1YQEi3nwZTlCiokfGkP5b9IP8WUmVS3JJy43aRrbT2XRw7ofzSECXFqJlkuExycRn9Y2YXzF6IszvAur8ngNNivz9ZPm6itVVAn90= Received: from BL1PR13CA0262.namprd13.prod.outlook.com (2603:10b6:208:2ba::27) by PH7PR12MB7892.namprd12.prod.outlook.com (2603:10b6:510:27e::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.18; Tue, 10 Jan 2023 14:31:56 +0000 Received: from BL02EPF0000C402.namprd05.prod.outlook.com (2603:10b6:208:2ba:cafe::e7) by BL1PR13CA0262.outlook.office365.com (2603:10b6:208:2ba::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.6 via Frontend Transport; Tue, 10 Jan 2023 14:31:56 +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=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL02EPF0000C402.mail.protection.outlook.com (10.167.241.4) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6002.11 via Frontend Transport; Tue, 10 Jan 2023 14:31:56 +0000 Received: from sp5-759chost.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Tue, 10 Jan 2023 08:31:55 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , Suravee Suthikulpanit Subject: [PATCH 1/4] iommu/amd: Introduce Protection-domain flag VFIO Date: Tue, 10 Jan 2023 08:31:34 -0600 Message-ID: <20230110143137.54517-2-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20230110143137.54517-1-suravee.suthikulpanit@amd.com> References: <20230110143137.54517-1-suravee.suthikulpanit@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF0000C402:EE_|PH7PR12MB7892:EE_ X-MS-Office365-Filtering-Correlation-Id: 6dabf742-5c42-48e0-db5f-08daf3176cf5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: co8R8f9Oktuh1gclZtNKRE7ZNXRbHfPr1Z37K1wys51wAdVc+8NxhEsO6r9/hBaB7sD9nkD6+fKEXImu4ZPE+yc7O5olhEOpBdd0gELjcvjHJDCOm1K8J4AgYkwxlY4rFODY4Bl8SZe5u4Pg01BovutQWdmb/bpx4shM0piolyD6rcw6fJHSbkacnk+HZnrKh+/2KcPMQFFTCYe8RNeECB82qI/SqVrSHLgRHK5jkihf2EFN76YMl5MSA15UVScZ4/iGhmNgvAI4xD7+FkmbTI4LAsNnOQZSWUiTIR0omvmwR+cFGFWLzP6LLyEnmVSpj7oBOOGk8WnGmCFg4ilH4w282E48sjD1Inevjwovw1whJyxN/c1AbCFkmtRQX0v1cfRiZK+K811vFe+Ej1J3FbV1reMlZaEvqYLz19mWONXzaElHUGvPkFsjQaK+dmgSPzw0Qx92J9yPDcv/arTOw9WIyTqSvOhwLKqovtgq3cpjq3gU63p5vm1Pth/neUFZ0YG/poyoT21jxqq6xvB5El81lXCQerWjzq/XGlcwj7Ndf4OkmgWLDriO4pDgxc25UESy3/zPpqn2UEflLbtNQi4B7/zUbU6sbzTSKRtDLQKafHmfbjvWFkOy2EbBa6ZTri55qF5sVx9U1pj6e4ZeYSNC3JTric/C9aOaH+8Wug5NPvOEIdFSbm71C043bpZCX7A1LF9fV756OtHZ3t0VLgVsbAgVNp+pJ4znfxHEERE= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(346002)(136003)(396003)(376002)(39860400002)(451199015)(36840700001)(46966006)(40470700004)(36756003)(316002)(54906003)(40460700003)(186003)(2906002)(110136005)(82740400003)(478600001)(356005)(81166007)(86362001)(36860700001)(44832011)(40480700001)(16526019)(2616005)(26005)(6666004)(83380400001)(70586007)(5660300002)(7696005)(41300700001)(336012)(1076003)(8676002)(426003)(8936002)(47076005)(4326008)(70206006)(82310400005)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2023 14:31:56.3726 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6dabf742-5c42-48e0-db5f-08daf3176cf5 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=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF0000C402.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7892 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Currently, to detect if a domain is enabled with VFIO support, the driver checks if the domain has devices attached and check if the domain type is IOMMU_DOMAIN_UNMANAGED. To be more explicit, introduce protection-domain flag PD_VFIO_MASK to signify an VFIO-enabled domain is enabled with VFIO support. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu_types.h | 1 + drivers/iommu/amd/iommu.c | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_io= mmu_types.h index 1d0a70c85333..ad124959a26a 100644 --- a/drivers/iommu/amd/amd_iommu_types.h +++ b/drivers/iommu/amd/amd_iommu_types.h @@ -439,6 +439,7 @@ translation */ #define PD_IOMMUV2_MASK (1UL << 3) /* domain has gcr3 table */ #define PD_GIOV_MASK (1UL << 4) /* domain enable GIOV support */ +#define PD_VFIO_MASK (1UL << 5) /* domain enable VFIO support */ =20 extern bool amd_iommu_dump; #define DUMP_printk(format, arg...) \ diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 3847f3bdc568..681ab1fdb7d5 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -2056,6 +2056,8 @@ static struct protection_domain *protection_domain_al= loc(unsigned int type) mode =3D PAGE_MODE_NONE; } else if (type =3D=3D IOMMU_DOMAIN_UNMANAGED) { pgtable =3D AMD_IOMMU_V1; + /* Mark unmanaged domain for VFIO */ + domain->flags |=3D PD_VFIO_MASK; } =20 switch (pgtable) { @@ -2130,6 +2132,7 @@ static void amd_iommu_detach_device(struct iommu_doma= in *dom, struct device *dev) { struct iommu_dev_data *dev_data =3D dev_iommu_priv_get(dev); + struct protection_domain *domain =3D to_pdomain(dom); struct amd_iommu *iommu; =20 if (!check_device(dev)) @@ -2144,7 +2147,7 @@ static void amd_iommu_detach_device(struct iommu_doma= in *dom, =20 #ifdef CONFIG_IRQ_REMAP if (AMD_IOMMU_GUEST_IR_VAPIC(amd_iommu_guest_ir) && - (dom->type =3D=3D IOMMU_DOMAIN_UNMANAGED)) + (domain->flags & PD_VFIO_MASK)) dev_data->use_vapic =3D 0; #endif =20 @@ -2176,7 +2179,7 @@ static int amd_iommu_attach_device(struct iommu_domai= n *dom, =20 #ifdef CONFIG_IRQ_REMAP if (AMD_IOMMU_GUEST_IR_VAPIC(amd_iommu_guest_ir)) { - if (dom->type =3D=3D IOMMU_DOMAIN_UNMANAGED) + if (domain->flags & PD_VFIO_MASK) dev_data->use_vapic =3D 1; else dev_data->use_vapic =3D 0; --=20 2.32.0 From nobody Mon Sep 15 19:39:10 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 085DBC54EBC for ; Tue, 10 Jan 2023 14:32:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238637AbjAJOcf (ORCPT ); Tue, 10 Jan 2023 09:32:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49140 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238686AbjAJOcS (ORCPT ); Tue, 10 Jan 2023 09:32:18 -0500 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2059.outbound.protection.outlook.com [40.107.220.59]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 000C6DFF7 for ; Tue, 10 Jan 2023 06:32:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bjFOBr/CrC/3iXjeKExbK4XJg5iC/fGJqcwq2OtholnDYIlQGgs5DlFR5pL6xYesMGLcvANpHbalqa+UN168YES0nfqFo5Do711QRJbIe93nvlsfXWrG+udurZPu89reuSOxqLOMfLHRf5XVb6InnrO/qoOJbX0RmjBgBuaujoRcIW/IRgTUnS2GEmOnWMgOfcqrwg/UujhbhomZ17VLSLy7DWtOarY1Ce6e1YHeSUvzzM3kjtufPcxa7FX+TJzk2Yn6wmRCIotEbpl14Qaop3n0Xc4+Us4ddyjRpASy9bzkwtYxSXHWYWoVsFld+rC2uaeuc8CpnB4m9l9nNyu2LA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=fjUmZ8NdtlWmtG6YX+A6YHtPFOZFATTgkzAlw3oUF1k=; b=BSXq0Ub18jctUcaomiZOPEJuaTOG6yVrEf2p1uwSin9YznzF1i1bZmLblO/paub++HyBtYYdty89enU1g3td92DhlOc3NkYu/BH+GZhYx9VRdz9EtoDTEwz3BwhkpFRcB8nmviQnqpfX2qhqOmsjWpWwNx6Ns/4K4u3wNrWPQp3mvZByX2gvZn3SzPCSJ/8kDSOt5GRW0IkgNN3qQc1WqkYAihbntxNHVM/X/10HuC2gTWHPYqppOtGm5yvTuGGNDoafHEPSxmWynICifdbkADcvcg/B2vylwJe2PHoJf4HYsfrYgRTBRW5Fhg/xIT1L0lu7FOIPfVwQNgVLd6RzUQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org 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 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=fjUmZ8NdtlWmtG6YX+A6YHtPFOZFATTgkzAlw3oUF1k=; b=SlzmlgduzTZlxki7/KkCAVOTZlzAtVzSgrYsGFDorPxILs23qpt7OWeBAhkUDtLo8NZRkpE42SFMiEywMWfYycTAyI/8DB37oqHh53w9F67cenVaeW+G8UW2GAwwCTMEoW0irioCsBELmoeCGk00hC/2b+mgtYnaO4VDw3NwZfs= Received: from BN9PR03CA0552.namprd03.prod.outlook.com (2603:10b6:408:138::17) by IA1PR12MB6601.namprd12.prod.outlook.com (2603:10b6:208:3a3::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.18; Tue, 10 Jan 2023 14:32:16 +0000 Received: from BL02EPF0000C408.namprd05.prod.outlook.com (2603:10b6:408:138:cafe::a3) by BN9PR03CA0552.outlook.office365.com (2603:10b6:408:138::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.15 via Frontend Transport; Tue, 10 Jan 2023 14:32:15 +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=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL02EPF0000C408.mail.protection.outlook.com (10.167.241.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6002.11 via Frontend Transport; Tue, 10 Jan 2023 14:32:15 +0000 Received: from sp5-759chost.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Tue, 10 Jan 2023 08:31:55 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , Suravee Suthikulpanit Subject: [PATCH 2/4] iommu/amd: Introduce structure amd_iommu_svm_ops.is_snp_guest() Date: Tue, 10 Jan 2023 08:31:35 -0600 Message-ID: <20230110143137.54517-3-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20230110143137.54517-1-suravee.suthikulpanit@amd.com> References: <20230110143137.54517-1-suravee.suthikulpanit@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF0000C408:EE_|IA1PR12MB6601:EE_ X-MS-Office365-Filtering-Correlation-Id: 28d072e2-52e0-4af3-adf7-08daf317787e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mkWHGL76rdfUP0fA6okYx/6FuaKVHEkFSH3YB5BHi0kt8+nXWITQ4hAV4c5oXnn4vJQ9kCSEp2j5KH1H03ajg3qEFt+GfxRVXgN4OLnA4ZB7KVjs2TnI+IzTfmtRmwsdTyTC0bOnNoxzfuXtnK8uJfL8GM8D5aDM+PDi/ciYUdmuoSoFOWJ9sEXtouVX/MXms0GOIxPPqG5OEQwUiM362yOkxGwPPOEoPmRcW28e9ir3cmSt38FUYqvIfVyynlpKyFzCS6cZM9QQSU6icBBxI/1mbh4SMOAEiC2S5Oq5z0r+msbJkYmxwTbsvXUXMrrD68XOo3lbpCidDGo2LLWwi2BQo6ptewkg1wa5EDNN8PRmX8stdXKwLWKAvPdRBqvOKdLl+HQMcs66jSm0ZQ1C8biYpO2m7HRD+SVSR5bFS0SfwlJOajXNuoEIV9en3D5aV52yt/B6obT14rzQ/jg2ELIYLwaKJdjCWIJeEgQ0TuUsdKiBpdcYgYyoOrY2N9ciNlOfN0BN544rE9tOVoDtAnbNU1XI1y4NCd9KwWMVmnDcOWtb2LvDKLlyndQazJNbejqFbnaWcLQXVl6lm+3Tzyc+DAXt5pcSyse14wqAEOyvuTdPpteuWA8Ydnngou1/EVEp/IjTS5j4tL7MBzUnJVBYT50N8jpl5ZBeX9MKbWZhQXySQZefs1bnGuIilOzJBfi4DgoQFXoE+FoRHU+qNIJ0FWjStpNdNoxT+v24CpA= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(396003)(376002)(39860400002)(346002)(136003)(451199015)(46966006)(40470700004)(36840700001)(82740400003)(356005)(81166007)(8676002)(54906003)(86362001)(70206006)(4326008)(83380400001)(70586007)(40460700003)(110136005)(41300700001)(426003)(5660300002)(2906002)(44832011)(316002)(8936002)(2616005)(1076003)(82310400005)(40480700001)(336012)(16526019)(186003)(26005)(47076005)(6666004)(7696005)(36860700001)(478600001)(36756003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2023 14:32:15.7243 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 28d072e2-52e0-4af3-adf7-08daf317787e 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=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF0000C408.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6601 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The structure can be used to provide call-back functions, which are called by the AMD IOMMU driver when it needs to handle certain operations. SVM driver can define handler for each operation in the struct amd_iommu_svm_ops and register the structure using the amd_iommu_register_svm_ops() function. Initially, it contains a function pointer is_snp_guest(), which is used to check whether SNP is active for a KVM guest. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/iommu.c | 10 ++++++++++ include/linux/amd-iommu.h | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 681ab1fdb7d5..a03723930f70 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -754,6 +754,16 @@ static void iommu_poll_ppr_log(struct amd_iommu *iommu) } } =20 +static const struct amd_iommu_svm_ops *amd_iommu_svm_ops; + +int amd_iommu_register_svm_ops(const struct amd_iommu_svm_ops *ops) +{ + amd_iommu_svm_ops =3D ops; + + return 0; +} +EXPORT_SYMBOL(amd_iommu_register_svm_ops); + #ifdef CONFIG_IRQ_REMAP static int (*iommu_ga_log_notifier)(u32); =20 diff --git a/include/linux/amd-iommu.h b/include/linux/amd-iommu.h index 953e6f12fa1c..d4837af75550 100644 --- a/include/linux/amd-iommu.h +++ b/include/linux/amd-iommu.h @@ -11,6 +11,7 @@ #include =20 struct amd_iommu; +struct kvm; =20 /* * This is mainly used to communicate information back-and-forth @@ -26,6 +27,10 @@ struct amd_iommu_pi_data { void *ir_data; }; =20 +struct amd_iommu_svm_ops { + bool (*is_snp_guest)(struct kvm *kvm); +}; + #ifdef CONFIG_AMD_IOMMU =20 struct task_struct; @@ -205,6 +210,7 @@ int amd_iommu_pc_set_reg(struct amd_iommu *iommu, u8 ba= nk, u8 cntr, u8 fxn, int amd_iommu_pc_get_reg(struct amd_iommu *iommu, u8 bank, u8 cntr, u8 fxn, u64 *value); struct amd_iommu *get_amd_iommu(unsigned int idx); +int amd_iommu_register_svm_ops(const struct amd_iommu_svm_ops *ops); =20 #ifdef CONFIG_AMD_MEM_ENCRYPT int amd_iommu_snp_enable(void); --=20 2.32.0 From nobody Mon Sep 15 19:39:10 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 305B9C46467 for ; Tue, 10 Jan 2023 14:33:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232250AbjAJOc4 (ORCPT ); Tue, 10 Jan 2023 09:32:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49052 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238529AbjAJOcX (ORCPT ); Tue, 10 Jan 2023 09:32:23 -0500 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2055.outbound.protection.outlook.com [40.107.223.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B537435920 for ; Tue, 10 Jan 2023 06:32:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eWi6imvJdllrdjJConVgEzKBdURG6IimciYyLUY7uBnHTV+MjwuhefSorgjEA+jC2aKfVP4o+0loEqmL+jEs7jhU0d5ZaXPmPHkgBYakaFgeu8VeaCH/tdpakSw3NMcSHwUw0/r5iyiL5m/eWCOfvOvnS20QtHejRt9z8EBWyQDsX508MinqJNCM9K0vvLNsW/gsBfHNWiyuOiaOVhNhQw2VHlvkVHo7IOYwknduFMPivfO0GAPv0+TNNQGVTzXN/z2YoTws8yJNTFZwBJuu1YwJZjm6EEUbM804qMJk0WrGz5AS3GmqbnTOQWhnFD/VYOJR0YQjjORjHALksqDqPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=ObSra1/iNsAygRiv1o7a006n18bIyMdju24xnrqtOsQ=; b=izP8FD3BupP/F8sm++VbTGWEq9NrvUouYy9Rh4dZsgkx9JsuiODImwl4+ZmLsd0cMZu82ZBYI5/348ijBWhqO3Hr2JDZDTvz8ZYPjs7XjHPn07b4uFovGAYBo1p+2lIluevBVL9I6j1GusXa9aj3R7AYjp+vbIhF2/mXNB1h3AKfZ96LmLQov0FIO68gQ0Z8TTeDd1wNfQ7PnKGCJznbO89/44Je04NqH/08yzDpQ9DOo2vefVdFH/WbQBenWAplclI1MwXvmirui8U1VUtmk8phShfHacWtsolhpCsw9JhAe4TQ7ZdtCzi4FpzfX3AryKGVm+zg9Is7SlORuOnnAg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org 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 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=ObSra1/iNsAygRiv1o7a006n18bIyMdju24xnrqtOsQ=; b=qkjD0MssUalUPgwmfPczvbeKOGF+dw5WjDhtEmNxdEJ79jpIucKJzVBoSc7gtKEMnMbk5bNWAF/hEpYJUqWOmU3C8kYmaiXNDPCAVIyAargBypvF9wH734xrRv5KlSziMNo/ZdaFsbMqHixDJC7hdvJMxwq9zolmifOKUNnwyTk= Received: from MN2PR15CA0010.namprd15.prod.outlook.com (2603:10b6:208:1b4::23) by DM6PR12MB4960.namprd12.prod.outlook.com (2603:10b6:5:1bc::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.18; Tue, 10 Jan 2023 14:32:20 +0000 Received: from BL02EPF0000C404.namprd05.prod.outlook.com (2603:10b6:208:1b4:cafe::cb) by MN2PR15CA0010.outlook.office365.com (2603:10b6:208:1b4::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.18 via Frontend Transport; Tue, 10 Jan 2023 14:32:20 +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=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL02EPF0000C404.mail.protection.outlook.com (10.167.241.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6002.11 via Frontend Transport; Tue, 10 Jan 2023 14:32:20 +0000 Received: from sp5-759chost.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Tue, 10 Jan 2023 08:31:56 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , Suravee Suthikulpanit Subject: [PATCH 3/4] iommu: Introduce IOMMU call-back for processing struct KVM assigned to VFIO Date: Tue, 10 Jan 2023 08:31:36 -0600 Message-ID: <20230110143137.54517-4-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20230110143137.54517-1-suravee.suthikulpanit@amd.com> References: <20230110143137.54517-1-suravee.suthikulpanit@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF0000C404:EE_|DM6PR12MB4960:EE_ X-MS-Office365-Filtering-Correlation-Id: 7be5586d-05a8-4307-d13e-08daf3177b6b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: sGxayu5ztePtiY4bjXpfNqFmhifipGaWnnyoF8DrcxhiBLscdInjdwDUiCb5xNuhJzir9gTG/v/J+fLSSt1g661aSrmGTHIF5wBm8ZizWAMmnQ/LYfwkVusVRSC8L81xpFcHHPb1494D2KXoa7a38K9B4IdayD8roL9DinhQIsnSNvLgSeDf8NmCtiM/GfQY0p+EeWVx/ujCkcH2GfmOsfcxj9+Q0of8CBZXxwoKJlhb65xY/d3yEQSSpH2fG6nC/7F/vUJGmhhmVkpfGcKf+knWpTckV/KozyDZ2CQ00Plm3N9gWVK94teMLxmCWPBEjDVCz+oiibjW8iGQutgmbrdUjqWMLi4LN/6uEOMUWMRrsECFwujjEXaJ5BHkzz2OgsiblykhcGYSvPosG9oRNzWwpeF+vaPsl3eIclRcEpYaC1y+m5UjCiG/xz8dgBQUChuXKkeMfSCZNN9Nz1QH4w+trQNffk3SwAFYuBozx3Mv1rSg+QvAWKaCb2a9eo4ezjqYZ43yNJlGmJvDGNn+LrmLWof5FtrJPPZIYGnkPNWFjW5vztMsAh7DDv3T2QMWkRKNbHhDrgzRS6qSdq9uzexPVDNA3b8/XnN1Fqs4PgIc3FwZ/4RgowNO1ol2YuBv7TaMaDaZ72OwXzO1YZgrbFDDfBNUpmSZlLz6GDhXO5iOzUYMcdTj5adZgEOHuwLF08xhnJwfU6BQXQjkpz8hYUYcUDyksxojL4mFoNWblBc= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(346002)(39860400002)(396003)(376002)(136003)(451199015)(46966006)(40470700004)(36840700001)(36860700001)(82740400003)(2906002)(6666004)(81166007)(356005)(2616005)(1076003)(26005)(44832011)(7696005)(186003)(16526019)(40480700001)(478600001)(316002)(5660300002)(82310400005)(8936002)(83380400001)(36756003)(86362001)(47076005)(426003)(40460700003)(41300700001)(70586007)(8676002)(70206006)(4326008)(54906003)(336012)(110136005)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2023 14:32:20.6338 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7be5586d-05a8-4307-d13e-08daf3177b6b 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=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF0000C404.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4960 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Currently, VFIO provide an kvm_vfio_file_set_kvm() interface for assigning a KVM structure to a VFIO group. The information in struct KVM is also useful for IOMMU drivers when setting up VFIO domain. Introduce struct iommu_domain_ops.set_kvm call-back function to allow IOMMU drivers to provide call-back to process the struct KVM assigned. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/iommu.c | 10 ++++++++++ drivers/vfio/vfio_main.c | 1 + include/linux/iommu.h | 4 ++++ 3 files changed, 15 insertions(+) diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index 65a3b3d886dc..5116d5fe35f2 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -3231,3 +3231,13 @@ bool iommu_group_dma_owner_claimed(struct iommu_grou= p *group) return user; } EXPORT_SYMBOL_GPL(iommu_group_dma_owner_claimed); + +void iommu_set_kvm(struct iommu_group *group, struct kvm *kvm) +{ + if (!group || !group->domain || !group->domain->ops) + return; + + if (group->domain->ops->set_kvm) + group->domain->ops->set_kvm(group->domain, kvm); +} +EXPORT_SYMBOL_GPL(iommu_set_kvm); diff --git a/drivers/vfio/vfio_main.c b/drivers/vfio/vfio_main.c index 2d168793d4e1..7641e3a0c986 100644 --- a/drivers/vfio/vfio_main.c +++ b/drivers/vfio/vfio_main.c @@ -1652,6 +1652,7 @@ void vfio_file_set_kvm(struct file *file, struct kvm = *kvm) =20 mutex_lock(&group->group_lock); group->kvm =3D kvm; + iommu_set_kvm(group->iommu_group, kvm); mutex_unlock(&group->group_lock); } EXPORT_SYMBOL_GPL(vfio_file_set_kvm); diff --git a/include/linux/iommu.h b/include/linux/iommu.h index 3c9da1f8979e..43000231d3d7 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -42,6 +42,7 @@ struct notifier_block; struct iommu_sva; struct iommu_fault_event; struct iommu_dma_cookie; +struct kvm; =20 /* iommu fault flags */ #define IOMMU_FAULT_READ 0x0 @@ -314,6 +315,8 @@ struct iommu_domain_ops { unsigned long quirks); =20 void (*free)(struct iommu_domain *domain); + + void (*set_kvm)(struct iommu_domain *domain, struct kvm *kvm); }; =20 /** @@ -391,6 +394,7 @@ void iommu_device_sysfs_remove(struct iommu_device *iom= mu); int iommu_device_link(struct iommu_device *iommu, struct device *link); void iommu_device_unlink(struct iommu_device *iommu, struct device *link); int iommu_deferred_attach(struct device *dev, struct iommu_domain *domain); +void iommu_set_kvm(struct iommu_group *group, struct kvm *kvm); =20 static inline struct iommu_device *dev_to_iommu_device(struct device *dev) { --=20 2.32.0 From nobody Mon Sep 15 19:39:10 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5E601C54EBE for ; Tue, 10 Jan 2023 14:33:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238642AbjAJOdB (ORCPT ); Tue, 10 Jan 2023 09:33:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49056 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238540AbjAJOcZ (ORCPT ); Tue, 10 Jan 2023 09:32:25 -0500 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2080.outbound.protection.outlook.com [40.107.237.80]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DDA42392DB for ; Tue, 10 Jan 2023 06:32:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XRP/fqwjHyK6qLS/VpSQi10ghPsSvmD2qbo+4bm2qeVt3NYMc7n8VC50A+Ht+i1cw9pOGmruk3WcrVZubtIebzzZTyBP324QpimoPscrw9RLHjPjh43kcf4aW744jbLy09ZD58Se/HmgSghb6GwNMWBMMgWpEOqHN31JR7VY/cYBraC22YC9GDq7rn0ITHNQ+uSC6O3Vrg9dc+0ZDzsDgpP2oLT48OE2d2+VtWS2OX7zcEVXtU7OjjS/iELjz3tw2WKAAbbRQ14hWTfXiHr5hYu4MIBQddDNCJYFwDTSyAMT1A2cps8QAHyjF/MhLyCyGl3NZVZRPFShOAWY0S+kGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=4Hml2OgICGSdq5+zxCec5xRf761M3ZO15RZ+4MkXikk=; b=kEdxUk2fHdjQ2Gzw+eESpunJ2Dk814Glytl3mIBldTc1IiVv6vLQFk9m8HiFdgEYApux7C87D/fs4aBbEPVy1/joeHxXB5pXfjf5KWlFKkwr3BxbW/IE/5uchzecIpxujZXmtLt5H/DCZBrEWL2IbFlWNn2ltxTzQ8JAdSJ3Y5voU3Dpu+58WMwJtAMLwDtoOxylqWRxLBKpdKbXh3S9VVVpzUsiZpBEYEUJIqgbxX1pUVyhEWAPSkCf4e5vYwrFSMpAQZHTQb9ocGmdq6WGEXBrIIgPr1Tjngru8gLTSi8CnExQK3RdG4V9SPpqnyeWyPh2MhQQmGvsCJkDmiOaDA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org 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 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=4Hml2OgICGSdq5+zxCec5xRf761M3ZO15RZ+4MkXikk=; b=O5TrMh2ZGy2CVChOeJMxD6u4ZxiucsM4vEbq8fqj/0P7tg3PaJEA9F3u/UFk3s+QzU2QcMjponkTyaLSedXFXM6xj5ln78gCUDFXycFgGvdWm68PpmAvv9Y7xrP3LTqcUxwPRLUBGIujPGAI5oYovAnFJW4c3QOa6jM0k4Ir9Yc= Received: from MN2PR15CA0010.namprd15.prod.outlook.com (2603:10b6:208:1b4::23) by CH3PR12MB7548.namprd12.prod.outlook.com (2603:10b6:610:144::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.18; Tue, 10 Jan 2023 14:32:21 +0000 Received: from BL02EPF0000C404.namprd05.prod.outlook.com (2603:10b6:208:1b4:cafe::cb) by MN2PR15CA0010.outlook.office365.com (2603:10b6:208:1b4::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.18 via Frontend Transport; Tue, 10 Jan 2023 14:32:21 +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=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL02EPF0000C404.mail.protection.outlook.com (10.167.241.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6002.11 via Frontend Transport; Tue, 10 Jan 2023 14:32:21 +0000 Received: from sp5-759chost.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Tue, 10 Jan 2023 08:32:15 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , Suravee Suthikulpanit Subject: [PATCH 4/4] iommu/amd: Force SNP-enabled VFIO domain to 4K page size Date: Tue, 10 Jan 2023 08:31:37 -0600 Message-ID: <20230110143137.54517-5-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20230110143137.54517-1-suravee.suthikulpanit@amd.com> References: <20230110143137.54517-1-suravee.suthikulpanit@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF0000C404:EE_|CH3PR12MB7548:EE_ X-MS-Office365-Filtering-Correlation-Id: a3042d14-b2d6-448b-a695-08daf3177bc1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: F3wq/UUgiK6IHLmMEwGaKfEHuayOXsVMDi7GrVIx/4w479hmtJtFit/ADT2G+x2G2DEosafxZwVjuJ/1uZKmiqxP4IBEBh6N7hXAn4rl65F7OQDy9xUSf35AjZgQZwJDrPq3YfB3BIjX6CC2sG7GVaNYJ9AeCDcZ1Bgkm3eEIwFZuG2/MRvaDdpf4v29EVWozWuydr7KnREjYQisoBx5KIGEVrQYqDnRSTocGNlKXOJYFxZfmhnq6FlqBM7/IDK0horNTQu3vb8uFmtAqxZbWdR90OqWvE/j0rU2WVY0i05l8RNNQHWwMAAi2CuyEZJW1J3dgnsyTXDWtdn39j8O2/K6Edt9mp1hK/NEsq3FkNJSyCIBuCR23OOI4gSbXB6SrlRWfgMpK3aK49BAVqXxQCzVbiSCaUXvsaqiHEeqyu9G1jsFoS9GW6Q11Yq/cwNSEC+tONXJbOcy1d4NXrTgliNc2OTkeUjxXG7s3ltufhOltZpWC5bSE1Wmf4Aj5o0aDQjoPZ94u2krhkbN8ALaAf0S08U8pu7MFRy6WL/0TLtjdmsqkEk4ofYTnVngVfKCS+R9WF9OpmaUkt1FOhU+G6YVkJN+JWx2uBihgkAtPX49CI3mqHnBEas0DZRq74XYuQ1EonL4IPWxgt4xSYhPa8hU7DpeRfYCNxTcnunW7JqqMl9n+077otjiOgDDJcDZt6fgIp1+h3Hs95DqHgmBfF3j/03oza5GtNoZ1+3pGwc= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(396003)(376002)(39860400002)(136003)(346002)(451199015)(36840700001)(46966006)(40470700004)(44832011)(8936002)(2906002)(5660300002)(4326008)(70586007)(8676002)(70206006)(41300700001)(82740400003)(82310400005)(40480700001)(426003)(40460700003)(316002)(47076005)(336012)(6666004)(36756003)(36860700001)(54906003)(86362001)(26005)(2616005)(186003)(110136005)(16526019)(1076003)(7696005)(478600001)(81166007)(356005)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2023 14:32:21.1963 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a3042d14-b2d6-448b-a695-08daf3177bc1 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=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF0000C404.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7548 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" SNP only supports 2M and 4K page sizes. Other page sizes requires page smashing to supported sizes. For SNP-enabled guests with pass-through devices (via VFIO), it also requires RMP and IOMMU page sizes to match. To simplify the support, for SNP-enabled guest, SNP will smash guest pages to 4K page size only, and IOMMU driver will setup the IOMMU v1 page table for the VFIO domain of the guest to match the 4K page size. Co-developed-by: Vasant Hegde Signed-off-by: Vasant Hegde Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu_types.h | 2 ++ drivers/iommu/amd/iommu.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_io= mmu_types.h index ad124959a26a..5249ac18ce6e 100644 --- a/drivers/iommu/amd/amd_iommu_types.h +++ b/drivers/iommu/amd/amd_iommu_types.h @@ -279,6 +279,7 @@ #define AMD_IOMMU_PGSIZES ((~0xFFFUL) & ~(2ULL << 38)) /* 4K, 2MB, 1G page sizes are supported */ #define AMD_IOMMU_PGSIZES_V2 (PAGE_SIZE | (1ULL << 21) | (1ULL << 30)) +#define AMD_IOMMU_PGSIZES_4K (PAGE_SIZE) =20 /* Bit value definition for dte irq remapping fields*/ #define DTE_IRQ_PHYS_ADDR_MASK (((1ULL << 45)-1) << 6) @@ -440,6 +441,7 @@ #define PD_IOMMUV2_MASK (1UL << 3) /* domain has gcr3 table */ #define PD_GIOV_MASK (1UL << 4) /* domain enable GIOV support */ #define PD_VFIO_MASK (1UL << 5) /* domain enable VFIO support */ +#define PD_SNP_MASK (1UL << 6) /* domain enable SNP support */ =20 extern bool amd_iommu_dump; #define DUMP_printk(format, arg...) \ diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index a03723930f70..9a1b010a7d00 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -2422,6 +2422,33 @@ static bool amd_iommu_enforce_cache_coherency(struct= iommu_domain *domain) return true; } =20 +static void amd_iommu_set_kvm(struct iommu_domain *domain, struct kvm *kvm) +{ + struct protection_domain *pdom =3D to_pdomain(domain); + + if (!amd_iommu_snp_en || !amd_iommu_svm_ops || + !pdom || !(pdom->flags & PD_VFIO_MASK)) + return; + + /* + * The parameter kvm can be NULL when calling from kvm_vfio_group_del() + * and kvm_vfio_destroy(). + */ + if (!kvm || + !amd_iommu_svm_ops->is_snp_guest || + !amd_iommu_svm_ops->is_snp_guest(kvm)) + return; + + /* + * VFIO Domain for SNP guest requires IOMMU and RMP page-size to match, + * which can only support 4K and 2M. Currently, only support 4K + * IOMMU page-size. + */ + pdom->flags |=3D PD_SNP_MASK; + pdom->domain.pgsize_bitmap =3D AMD_IOMMU_PGSIZES_4K; + pr_debug("%s: Force domain %u page size to 4K.\n", __func__, pdom->id); +} + const struct iommu_ops amd_iommu_ops =3D { .capable =3D amd_iommu_capable, .domain_alloc =3D amd_iommu_domain_alloc, @@ -2444,6 +2471,7 @@ const struct iommu_ops amd_iommu_ops =3D { .iotlb_sync =3D amd_iommu_iotlb_sync, .free =3D amd_iommu_domain_free, .enforce_cache_coherency =3D amd_iommu_enforce_cache_coherency, + .set_kvm =3D amd_iommu_set_kvm, } }; =20 --=20 2.32.0