From nobody Thu Dec 18 07:14:00 2025 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2055.outbound.protection.outlook.com [40.107.244.55]) (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 0530014373F for ; Tue, 30 Apr 2024 15:25:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.244.55 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714490703; cv=fail; b=ERvwarLgFQ1USCKRD3rkkFv/CeLhLEInjADVPza7rHhIUZCMVNciT0pd1kVwQmlrw07qxSA3jtHWWS8zYs2vsxLgk8WlRVuroERKmws7/0sQ3dfr05odNBG+gO/19GTpSNoMQZN6KDrryOvcxzmAua99QLYBQaAaso8gE+V9DEQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714490703; c=relaxed/simple; bh=u0kbh+G26XjoIWmR3j8+BoMComzbFeubj3wXzEQDhrw=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Xc6frGgm/3VxdEWRW91bN921W7nvQIQWwMk4S8Euc9I0NV3HWHs89UIwB9IRpq5rnQBaj8Hqa4y2x4GUfBoUghKJFl4L45m24S56OXJGKeqk4hxtfuq/DZFtLxa9i6iVIUq832sUdoCz6wbSfiKS9fhl58GnxUHq4mKmqzJX6wU= 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=XvdJoeXN; arc=fail smtp.client-ip=40.107.244.55 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="XvdJoeXN" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hVct5jbO6YODUFDQaWW31A2XW1UX3HSXULJhrbb+GBVy3nFfGeRQXLp3ojbE5SSOn2/pr7yCZmSODiglbakAx1zP+ksWcTfjIOEQeE353cAkOcQL0S1eI0L9Z7rRfuGw8LIk05iNOEfIFYOS5gx95I2qRSren9W4cwmTYLAbxS2OC+Z3mMEXecuUUDXP19EM8qD/GnP8g6BAeobRy3rJCISgDA0ApckAfbgMRkUprjS4NOufVSnoxvNZ22X5zaqN7yB3vyPgNynmxZHmzLJh2slamdTJ8dSxWdGey3msR7RX2QkOkFuUdFYzrMdLn4ZqCLim0CwmyiDJX6073erXfw== 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=165H4ek7b0kbb1fcqy330nd/jgL1n30mBdRwFSpXITg=; b=ItzyyLcZbP9OK4o1sOLO4vz2s9RyxYCHvW9t1q1EBEGY1az4HkKEeRhTIMX2Y0Mi4YMVKzkUl/4mfw+7zTuMWlZ+y/iz59L2P+QTtXSy/uJXlmDtMeK+2qXp7/QE6IEIylEslInLqt2auKHp0reEztYu1uGXNFqdqNlYN1t6tLvZZSKa4FGFUs//5IC8Q0iv2o4OFfZNV3qvCtnu4/KxZyFoHYR34RrIvqLKnZLP+O/lAysxmzXqqT4UeVuqsBtdJAPt3qEvwz0oH+3Q5xlRLIIFzw1+lwQcU+4R+QGKCPs/7qrP5G4/lhREzPCtar4h9tYNt9uaCWxUQLcRoWBYgQ== 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 (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=165H4ek7b0kbb1fcqy330nd/jgL1n30mBdRwFSpXITg=; b=XvdJoeXNWpPS/l3QZGwpb7D9eIjQ/TsiSSpFV3vvv4M1l2HECvAmbXb/s0HUul+KyKzrEgxuGruHNIhfxtVqN6nGyzPJaa6J3iPlXjk5rXwkbVoAwNBNOyKgpuS0aUgV3ugArvZWqRZOBhPLUwQYSgpZ5SwtGUkWoAY6KO4iqKE= Received: from PH7PR13CA0005.namprd13.prod.outlook.com (2603:10b6:510:174::8) by DS7PR12MB8082.namprd12.prod.outlook.com (2603:10b6:8:e6::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.34; Tue, 30 Apr 2024 15:24:58 +0000 Received: from CY4PEPF0000E9CD.namprd03.prod.outlook.com (2603:10b6:510:174:cafe::b) by PH7PR13CA0005.outlook.office365.com (2603:10b6:510:174::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.25 via Frontend Transport; Tue, 30 Apr 2024 15:24:58 +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 CY4PEPF0000E9CD.mail.protection.outlook.com (10.167.241.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7544.18 via Frontend Transport; Tue, 30 Apr 2024 15:24:58 +0000 Received: from purico-e93dhost.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.2507.35; Tue, 30 Apr 2024 10:24:56 -0500 From: Suravee Suthikulpanit To: , , CC: , , , , , Suravee Suthikulpanit Subject: [PATCH 1/9] iommu/amd: Introduce helper functions for managing IOMMU memory Date: Tue, 30 Apr 2024 15:24:22 +0000 Message-ID: <20240430152430.4245-2-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240430152430.4245-1-suravee.suthikulpanit@amd.com> References: <20240430152430.4245-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: 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: CY4PEPF0000E9CD:EE_|DS7PR12MB8082:EE_ X-MS-Office365-Filtering-Correlation-Id: 75aed927-eed0-481b-17ef-08dc6929b213 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230031|82310400014|1800799015|376005|36860700004; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ucbwXUg5svtMBVwpvUwcfXDjKySbmTSo8KhkZMG34FqpVzqWnWd/iJr4S6Cy?= =?us-ascii?Q?/DZNuPVExCM59yFUC/vIR+rtpKF6L6POhxGU5Mg9PoOWNXciVHRiSHaeGIPX?= =?us-ascii?Q?TZ7X3lMmXaNO9e42i8Bo8GrVJjO14fNKo5D+rjOcJPHf81g8UJcBN5dKnzfX?= =?us-ascii?Q?pLDpTBgjQKIX4t31zlvVNhMfwfie3UcTZRtdjN72KwHwixP1/eYa8BWmEzO5?= =?us-ascii?Q?hMRBALH299Z7E43l9fbEQnE2WhTdZIl2FIEtTO8JsAm+S5xV/4GuCP2Gq6Bi?= =?us-ascii?Q?ivegB+P+hWp4WXuC8auXaqZp/1FM+tBMgDXvYe8+8gqQE0g6VPHodT8i3xHb?= =?us-ascii?Q?U6x9c7RtUIli0wwfjAyxTTNTX0bXuMvoilb0qyL3KLdgHynhM+XOpbPK1Ytw?= =?us-ascii?Q?S2FRc7GpQs6CmtgA/UK/Xq40acewZ4d8E22Id112l6x5I9UQLlZMpyvmEYWR?= =?us-ascii?Q?4BMBs9gNzjJjqcSW/fWRysj+XJxHw0O9RpIUjyr4y9T+XKgxWM5QANAsndkr?= =?us-ascii?Q?xMM/R0zDEb80BlJ3y3vob9SnTbDjBhJFmbWeTIk/kBbrZvTdEiwrKRUDka7M?= =?us-ascii?Q?ML0adegVyR4rwNPMxd/1UrFTpAb4JNpNAngeDY52RfkvCBuFcjAtlnZZvvCU?= =?us-ascii?Q?OOuvUd/lYacoT/r3sFgVmZ9ZkjsOC8Vi545c9f/pE6NkhvCnnemIl7m72uuV?= =?us-ascii?Q?QNpyAfOqtyi9Y0UgWgM1ru5aN/649OCcJ9zFi94K7S+TOuPVSA8AO4wUl3Zi?= =?us-ascii?Q?6pTO0E1fcL59KMLVjlPALp917hXBtwleHugOqv1dZOeJiEqARbeqkS/YQ5Yh?= =?us-ascii?Q?xViOs+Kai9Tqy1DOxfcUNpdMKoZbpDWY3r6LGR5yGeNqeFF7zydrcqJn6URr?= =?us-ascii?Q?dO4lXN9e9qb2b9aY0HQHyUufvcXNy+ZkaVPgWiOKjgZ8tiHMRgeY7UBPtymK?= =?us-ascii?Q?xor1BfGmNs2vpsxwkqYAe3yKBIQzCBqB2jDPvbkYHLg+glV66hri3ITxy5fu?= =?us-ascii?Q?sb5Oov754VowfxqR0jioUsia+F5stfL/+So5jluzrvHWhNBaeU7+A+mv9sRo?= =?us-ascii?Q?cm3bhZ284nG9chMrEFZrzUYVpUcqD+RHq0FSGbPBlQKg9G2OWEmEeEhHI5U4?= =?us-ascii?Q?nTBaTtMlUVv+lsG5agLPWnOSXqax+8sKBpMprNiNvVUbnaCJpmLN06dlfmoY?= =?us-ascii?Q?/vPIRW+YFqcdKm4t5EAd3wRupRDm5rCz+x+JqgnIQWZ2az69bVzu1r6I8OSA?= =?us-ascii?Q?z33JK7wVA2AxdSJgyBJOeNM1YSn6KeG9f01ny5V0DczVjZIaZ7egrYluH4Li?= =?us-ascii?Q?q+K9+/Clzf9d+aZNc5OzmZqjjTR5TwldjB6ZWLzGAQLIsTVurbnbnZFRuLwP?= =?us-ascii?Q?h1CHyB1MEGQuXF1bJbHFF2AWTSQl?= 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:(13230031)(82310400014)(1800799015)(376005)(36860700004);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2024 15:24:58.1001 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 75aed927-eed0-481b-17ef-08dc6929b213 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: CY4PEPF0000E9CD.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8082 Content-Type: text/plain; charset="utf-8" Depending on the modes of operation, certain AMD IOMMU data structures are allocated with constraints. For example: * Some buffers must be 4K-aligned when running in SNP-enabled host * To support AMD IOMMU emulation in an SEV guest, some data structures cannot be encrypted so that the VMM can access the memory successfully. Introduce struct amd_iommu_mem along with helper functions to allocate and free memory areas based on the modes of operation. Initially, two modes are supported : 1. 4K-aligned mode: Required when running on SNP-enabled host system. Note that this mode replaces the iommu_alloc_4k_pages(). 2. SEV-guest shared mode: Set memory as shared when in an SEV guest. Note that the memory encryption bit of the GPA must be cleared when programming into the guest base address MMIO register field of these buffers. Suggested-by: Thomas Lendacky Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 29 +++++++++++++ drivers/iommu/amd/amd_iommu_types.h | 15 +++++++ drivers/iommu/amd/iommu.c | 66 +++++++++++++++++++++++++++++ 3 files changed, 110 insertions(+) diff --git a/drivers/iommu/amd/amd_iommu.h b/drivers/iommu/amd/amd_iommu.h index 2fde1302a584..ccd9003813ac 100644 --- a/drivers/iommu/amd/amd_iommu.h +++ b/drivers/iommu/amd/amd_iommu.h @@ -28,6 +28,11 @@ void iommu_feature_enable(struct amd_iommu *iommu, u8 bi= t); void *__init iommu_alloc_4k_pages(struct amd_iommu *iommu, gfp_t gfp, size_t size); =20 +void *amd_iommu_get_zeroed_mem(gfp_t gfp_mask, struct amd_iommu_mem *mem); +void *amd_iommu_get_zeroed_mem_node(int nid, gfp_t gfp_mask, + struct amd_iommu_mem *mem); +void amd_iommu_free_mem(struct amd_iommu_mem *mem); + #ifdef CONFIG_AMD_IOMMU_DEBUGFS void amd_iommu_debugfs_setup(struct amd_iommu *iommu); #else @@ -137,6 +142,30 @@ static inline u64 iommu_virt_to_phys(void *vaddr) return (u64)__sme_set(virt_to_phys(vaddr)); } =20 +static inline bool amd_iommu_mem_is_decrypted(struct amd_iommu_mem *mem) +{ + return (mem->modes & ALLOC_MODE_GUEST_MEM_DECRYPT); +} + +static inline bool amd_iommu_mem_is_4k(struct amd_iommu_mem *mem) +{ + return (mem->modes & ALLOC_MODE_4K); +} + +static inline u64 amd_iommu_mem_to_phys(struct amd_iommu_mem *mem) +{ + /* + * Return physical address without the encryption bit for data + * structures allocated with the flag ALLOC_MODE_GUEST_MEM_DECRYPT + * when running in SEV guest. + */ + if (amd_iommu_mem_is_decrypted(mem) && + cc_platform_has(CC_ATTR_GUEST_MEM_ENCRYPT)) + return (u64)virt_to_phys(mem->buf); + + return iommu_virt_to_phys(mem->buf); +} + static inline void *iommu_phys_to_virt(unsigned long paddr) { return phys_to_virt(__sme_clr(paddr)); diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_io= mmu_types.h index 2b76b5dedc1d..a42e10777922 100644 --- a/drivers/iommu/amd/amd_iommu_types.h +++ b/drivers/iommu/amd/amd_iommu_types.h @@ -479,6 +479,21 @@ extern bool amd_iommu_np_cache; /* Only true if all IOMMUs support device IOTLBs */ extern bool amd_iommu_iotlb_sup; =20 +/* + * Allocation modes for struct amd_iommu_mem. + */ + +/* Allocate memory as 4K-aligned mode */ +#define ALLOC_MODE_4K BIT(0) +/* Allocate memory as decrypted mode (for SEV guest) */ +#define ALLOC_MODE_GUEST_MEM_DECRYPT BIT(1) + +struct amd_iommu_mem { + void *buf; + int order; + u32 modes; +}; + struct irq_remap_table { raw_spinlock_t lock; unsigned min_index; diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 1fdf37e04215..05e967ad7032 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -37,6 +37,7 @@ #include #include #include +#include #include =20 #include "amd_iommu.h" @@ -574,6 +575,71 @@ static void amd_iommu_uninit_device(struct device *dev) */ } =20 +void amd_iommu_free_mem(struct amd_iommu_mem *mem) +{ + int ret; + unsigned long addr =3D (unsigned long)mem->buf; + + if (amd_iommu_mem_is_decrypted(mem) && + cc_platform_has(CC_ATTR_GUEST_MEM_ENCRYPT)) { + ret =3D set_memory_encrypted(addr, 1 << mem->order); + if (ret) { + pr_warn("%s: Fail to set memory encrypted (ret=3D%d)\n", + __func__, ret); + return; + } + } + + iommu_free_pages(mem->buf, mem->order); + mem->buf =3D NULL; +} + +void *amd_iommu_get_zeroed_mem_node(int nid, gfp_t gfp_mask, struct amd_io= mmu_mem *mem) +{ + int ret; + unsigned long addr; + int numpages =3D (1 << mem->order); + + mem->buf =3D iommu_alloc_pages_node(nid, gfp_mask, mem->order); + if (!mem->buf) + return NULL; + + addr =3D (unsigned long)mem->buf; + + /* Allocate SEV guest memory as decrypted */ + if (amd_iommu_mem_is_decrypted(mem) && + cc_platform_has(CC_ATTR_GUEST_MEM_ENCRYPT)) { + ret =3D set_memory_decrypted(addr, numpages); + if (ret) { + pr_warn("%s: Fail to set memory decrypted (ret=3D%d)\n", + __func__, ret); + goto out_free; + } + } + + /* Allocate memory as 4K-aligned on SNP-enabled system. */ + if (amd_iommu_mem_is_4k(mem) && + check_feature(FEATURE_SNP)) { + ret =3D set_memory_4k(addr, numpages); + if (ret) { + pr_warn("%s: Fail to set memory 4K(ret=3D%d)\n", + __func__, ret); + goto out_free; + } + } + + return mem->buf; + +out_free: + amd_iommu_free_mem(mem); + return NULL; +} + +void *amd_iommu_get_zeroed_mem(gfp_t gfp_mask, struct amd_iommu_mem *mem) +{ + return amd_iommu_get_zeroed_mem_node(NUMA_NO_NODE, gfp_mask, mem); +} + /*************************************************************************= *** * * Interrupt handling functions --=20 2.34.1 From nobody Thu Dec 18 07:14:00 2025 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2071.outbound.protection.outlook.com [40.107.93.71]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A75D8173359 for ; Tue, 30 Apr 2024 15:25:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.71 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714490708; cv=fail; b=sOkV7NUV7M7IzyZNnPrnUQAsTyYHoUPcxbf8mapRhfQu4NtcxMpMHOg6TSPlnsWZYbk0XK68FJJLyQfdLhKt3oK6B9rmtT+Q85v1GrJJMW/rlUtf6VtQiAjBvtDtjtJ9/SQstSm5eGbsy+CFmJaXEPCJZ3VRRPbRmNVdmeWt62Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714490708; c=relaxed/simple; bh=8/uqFCVlXMA0L01Qk2shlzFHnOR1ZzabUpe8hy9jJK8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Ii65P9sjaDBMItTxmiezdEW1yT9TbAFkJXoJYn5mC2JEHl76j612kyigO8mFhtu6Mb3HGIKHNymE2BTpi5wGj1kUl51hg1xPhVK23Xbt5aXv64BzDvMJIbw+LO8/8pkufmJ1RqdhZdnOlYhZPIF0Pc1BjaD/fjsqRe/0c0norbg= 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=GXkeyFk1; arc=fail smtp.client-ip=40.107.93.71 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="GXkeyFk1" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IRHQh14SDnSX/Ir8kYRKDicti5FQv6rs8+swMALTcGWFgd68Z7TJyUJgRYmyzwEJi9iAw6C9NFKgGdkWK/YPLkQvCeu/l/GPO6gz6cXUcHZydnD2roo7CBLb8j2hlw252/CNb4hLHMb7G859fYghcNIRnHVYFtpyuzhmuLzN2yDT0h7dJbzFgzAnRMDTCNKv48oc+oBeP5ESr8nOVLhl36sJFk1bEf69e4yreBwffY9+v3a8q7DGB35lH1DxojTiF1BbpZKx5FNlge09OCvcJTXf91S7C/YklsFPk5eeVIvi3fyitD5oZDqvEodkohsHN9eJmOtDawr4FhF/pmNAow== 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=hbiZDh/plK7kfI+sYdgQBPI9Mei+PWXCGD/Y4FwpWzU=; b=NuhUfGLgN+GrU4daTjhsLrgKLO9rYkktkUPThlwJw9rfjcxkk0lxqIG4KGn8eDMXlpU0ePLN/79dHNLpmU+ocgwwx0PK3t8qjSvaj86iyHZWuV61k8kp8NRgGWydotatclkanr7ViXkODTcDzFXsvhvE4hRVN4i4rlBsbdpBT3wW7pukbZ2FTI60sIs17lYhMxGMtOz5o1JCAv1pOgEjW/cEc/zrXI+c+ZxGpbT2kk+qMJcKr+Mh2ILFLMElTh67SyaOlBCZ3sEapatjajw76O2qVezL5oaEJTajHfDQznA4COJzPjX6GR2/tTM59VCwrlhfaeXcuc+h1M6HbvzHug== 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 (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=hbiZDh/plK7kfI+sYdgQBPI9Mei+PWXCGD/Y4FwpWzU=; b=GXkeyFk1LMrksvZy1vkhPTeI3+9ZwT7PyacZQlmMFgEmaQUQKXKov8k8/g/GvxdJcFsllE7mznYOYhXqi1i+3aIbxqdD9LSvlRiG2pu7XAY1maLVv84uJmsedTI4ENM0cvJRAywKQDno+NwBn7iCy0GteERzLMe5p3P1rsaZGtI= Received: from PH7PR13CA0015.namprd13.prod.outlook.com (2603:10b6:510:174::21) by PH7PR12MB6739.namprd12.prod.outlook.com (2603:10b6:510:1aa::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.34; Tue, 30 Apr 2024 15:25:02 +0000 Received: from CY4PEPF0000E9CD.namprd03.prod.outlook.com (2603:10b6:510:174:cafe::2b) by PH7PR13CA0015.outlook.office365.com (2603:10b6:510:174::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.24 via Frontend Transport; Tue, 30 Apr 2024 15:24:59 +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 CY4PEPF0000E9CD.mail.protection.outlook.com (10.167.241.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7544.18 via Frontend Transport; Tue, 30 Apr 2024 15:24:59 +0000 Received: from purico-e93dhost.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.2507.35; Tue, 30 Apr 2024 10:24:57 -0500 From: Suravee Suthikulpanit To: , , CC: , , , , , Suravee Suthikulpanit Subject: [PATCH 2/9] iommu/amd: Convert Device Table pointer to use struct amd_iommu_mem Date: Tue, 30 Apr 2024 15:24:23 +0000 Message-ID: <20240430152430.4245-3-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240430152430.4245-1-suravee.suthikulpanit@amd.com> References: <20240430152430.4245-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: 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: CY4PEPF0000E9CD:EE_|PH7PR12MB6739:EE_ X-MS-Office365-Filtering-Correlation-Id: 320fe08e-c88f-4353-7359-08dc6929b2b0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230031|376005|36860700004|82310400014|1800799015; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?iugVqbugoynX587/0qGxSdLAVn7U6AmGGVTnQXzXBc1Q34DAEwI11iVojwnX?= =?us-ascii?Q?ahxtj8tdVrKjasfPXNIOgEPUaycfrtY7zUvqfMhhzKMWb19j1JCSPdPCHIsm?= =?us-ascii?Q?MCIotGtr9sRj3RTLuHZneXMk1c0GxrE67XusDpcaDID2h4RanclHnyc66gt+?= =?us-ascii?Q?OWGYzVY3IPP/HwbpHc6MMTBr8rhVDopYjRzZ+ciA3q43CqXMHUjl8oJPKuv7?= =?us-ascii?Q?h7wbRgDcE6ne8ajKfYvYEIV9WbewGAv9oRGeopqBrHrjGlXOs/4mQj4A8tGP?= =?us-ascii?Q?fOhKhjgFljyL6duhZ3Fc2fZE70Q00Had0wjNQF2zuFaXhu8ZcEBDKnqHlBnc?= =?us-ascii?Q?9vY3+n4Iis8EKV5ZZObPtXT44byKORkbfaO4CltRMtEYPFvMmL/5Mug2lKr3?= =?us-ascii?Q?u1gbsywfFuvXr4myjC5bgA2BcSl0al7Ei3QiyI3HjFCYv6aQW2lauy7K3qPt?= =?us-ascii?Q?D/5fM7onm2Z3GcVfiClODJ5ESL1IrKuWlwSfQBq1FKbkrvNnn9e2o9gsOmFV?= =?us-ascii?Q?+ECz+r/2L5avYKUtCwVzwZc7G0k3c8FGd6vpJ6IReTh2Ad9jgB1L368jzrUs?= =?us-ascii?Q?hp3B1lQXRTtoo8N8M3gN0M4OY/I2y8fuf8nuqsrOnk95LXMOBvjs+RwYEWgO?= =?us-ascii?Q?0gPzgmGfDhQZ0t7Io9pSkwtl3pFy60Pyso3meOICvZXm2rMTzMwv1vS6NUhd?= =?us-ascii?Q?9Y5X/8OwBugHKnUxI3+RksZERLv9g2K4/DwNU60zhW2dT3AtdFSDtFo6rPeo?= =?us-ascii?Q?GIbuzrTDoLrP8kD6oriZCDeTNlI9cXJWgAHOwgEp1IqOZS+Pp2YK/CXHV5A3?= =?us-ascii?Q?+nxyIyuPSIwye/bJ4FGRYScQXBcGikYG+Iy0GyerQuEucKsv9x05czMHjoKG?= =?us-ascii?Q?CbL1UAgmn9iQYd0hM3JmCbcSJijGNlNAvK7X1dJTQsCTV2uainoYIvLwwZXB?= =?us-ascii?Q?8bZBd+rDWxaUggnnVyuzkA8N5zIssmBiNHDEb5IoWRL3QK84i+TAJ+kci79k?= =?us-ascii?Q?CFbWd/gn8Z1TA/yAB/L9HEA9DPYngyBuG52ld/eQ4n+Qq+nKEUfrFgAwndS7?= =?us-ascii?Q?eTX2z9Joe/jfwEBFXVvqvaykx1qoMsnl0yIg1eDPZM+cwEwOdeSO39JfUlzU?= =?us-ascii?Q?hEWp/QExqEKA3aXK7KCztQ4uo0qU93MOQ/2U4+6Q3L+MJBeg7NNoplaVJ2Pc?= =?us-ascii?Q?HNodFcSdbss4yF8awjXE0deTV+ezKdJhjzABLjrcOMk6bhkFYoL+WFgN/LV5?= =?us-ascii?Q?lhSy/X2EeW/xCXgfraywUZbgJasJjIDwQIrbCwbNx2qw1LaAUSIqO1MbpAb3?= =?us-ascii?Q?/37cwFZYIhrkXs6DdpPMfuwA6+nU+UaZ/4+stIRcdjTNEkwbbPWWRSXER3GO?= =?us-ascii?Q?TDn/Lbq+o/XndmzxgSVQlN09dinA?= 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:(13230031)(376005)(36860700004)(82310400014)(1800799015);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2024 15:24:59.1157 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 320fe08e-c88f-4353-7359-08dc6929b2b0 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: CY4PEPF0000E9CD.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6739 Content-Type: text/plain; charset="utf-8" And specify the memory to be decrypted when running in an SEV guest so that the VMM can access the memory successfully. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu_types.h | 2 +- drivers/iommu/amd/init.c | 26 +++++++++++++------------- drivers/iommu/amd/iommu.c | 2 +- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_io= mmu_types.h index a42e10777922..d9159f2e3f0f 100644 --- a/drivers/iommu/amd/amd_iommu_types.h +++ b/drivers/iommu/amd/amd_iommu_types.h @@ -638,7 +638,7 @@ struct amd_iommu_pci_seg { * information about the domain the device belongs to as well as the * page table root pointer. */ - struct dev_table_entry *dev_table; + struct amd_iommu_mem dev_table_mem; =20 /* * The rlookup iommu table is used to find the IOMMU which is diff --git a/drivers/iommu/amd/init.c b/drivers/iommu/amd/init.c index 5aae03d24e2a..c68ff602d534 100644 --- a/drivers/iommu/amd/init.c +++ b/drivers/iommu/amd/init.c @@ -409,11 +409,10 @@ static void iommu_set_device_table(struct amd_iommu *= iommu) { u64 entry; u32 dev_table_size =3D iommu->pci_seg->dev_table_size; - void *dev_table =3D (void *)get_dev_table(iommu); =20 BUG_ON(iommu->mmio_base =3D=3D NULL); =20 - entry =3D iommu_virt_to_phys(dev_table); + entry =3D amd_iommu_mem_to_phys(&iommu->pci_seg->dev_table_mem); entry |=3D (dev_table_size >> 12) - 1; memcpy_toio(iommu->mmio_base + MMIO_DEV_TABLE_OFFSET, &entry, sizeof(entry)); @@ -650,9 +649,12 @@ static int __init find_last_devid_acpi(struct acpi_tab= le_header *table, u16 pci_ /* Allocate per PCI segment device table */ static inline int __init alloc_dev_table(struct amd_iommu_pci_seg *pci_seg) { - pci_seg->dev_table =3D iommu_alloc_pages(GFP_KERNEL | GFP_DMA32, - get_order(pci_seg->dev_table_size)); - if (!pci_seg->dev_table) + struct amd_iommu_mem *mem =3D &pci_seg->dev_table_mem; + + mem->modes =3D ALLOC_MODE_GUEST_MEM_DECRYPT; + mem->order =3D get_order(pci_seg->dev_table_size); + mem->buf =3D amd_iommu_get_zeroed_mem(GFP_KERNEL | GFP_DMA32, mem); + if (!mem->buf) return -ENOMEM; =20 return 0; @@ -660,9 +662,7 @@ static inline int __init alloc_dev_table(struct amd_iom= mu_pci_seg *pci_seg) =20 static inline void free_dev_table(struct amd_iommu_pci_seg *pci_seg) { - iommu_free_pages(pci_seg->dev_table, - get_order(pci_seg->dev_table_size)); - pci_seg->dev_table =3D NULL; + amd_iommu_free_mem(&pci_seg->dev_table_mem); } =20 /* Allocate per PCI segment IOMMU rlookup table. */ @@ -2570,7 +2570,7 @@ static int __init init_memory_definitions(struct acpi= _table_header *table) static void init_device_table_dma(struct amd_iommu_pci_seg *pci_seg) { u32 devid; - struct dev_table_entry *dev_table =3D pci_seg->dev_table; + struct dev_table_entry *dev_table =3D pci_seg->dev_table_mem.buf; =20 if (dev_table =3D=3D NULL) return; @@ -2585,7 +2585,7 @@ static void init_device_table_dma(struct amd_iommu_pc= i_seg *pci_seg) static void __init uninit_device_table_dma(struct amd_iommu_pci_seg *pci_s= eg) { u32 devid; - struct dev_table_entry *dev_table =3D pci_seg->dev_table; + struct dev_table_entry *dev_table =3D pci_seg->dev_table_mem.buf; =20 if (dev_table =3D=3D NULL) return; @@ -2606,7 +2606,7 @@ static void init_device_table(void) =20 for_each_pci_segment(pci_seg) { for (devid =3D 0; devid <=3D pci_seg->last_bdf; ++devid) - __set_dev_entry_bit(pci_seg->dev_table, + __set_dev_entry_bit(pci_seg->dev_table_mem.buf, devid, DEV_ENTRY_IRQ_TBL_EN); } } @@ -2778,9 +2778,9 @@ static void early_enable_iommus(void) pr_info("Copied DEV table from previous kernel.\n"); =20 for_each_pci_segment(pci_seg) { - iommu_free_pages(pci_seg->dev_table, + iommu_free_pages(pci_seg->dev_table_mem.buf, get_order(pci_seg->dev_table_size)); - pci_seg->dev_table =3D pci_seg->old_dev_tbl_cpy; + pci_seg->dev_table_mem.buf =3D pci_seg->old_dev_tbl_cpy; } =20 for_each_iommu(iommu) { diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 05e967ad7032..3df07e8ef002 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -144,7 +144,7 @@ struct dev_table_entry *get_dev_table(struct amd_iommu = *iommu) struct amd_iommu_pci_seg *pci_seg =3D iommu->pci_seg; =20 BUG_ON(pci_seg =3D=3D NULL); - dev_table =3D pci_seg->dev_table; + dev_table =3D pci_seg->dev_table_mem.buf; BUG_ON(dev_table =3D=3D NULL); =20 return dev_table; --=20 2.34.1 From nobody Thu Dec 18 07:14:00 2025 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2070.outbound.protection.outlook.com [40.107.220.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 3FFEA143743 for ; Tue, 30 Apr 2024 15:25:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.70 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714490704; cv=fail; b=E+HnAzrXabHS+V6DE2sJyhoKHqDz4TWqzF0EiUlTskVIZYp1ULI2AUiOoPCC6M7l2KVViN5/IX2n8Iqk+HzKWtl4ohsy5AsSnTcWIoGXgdNzxfebcH9505D8wacYqNEm5KCISVsCMER7l2x4ccm1VBIHkKlwFd7M6OQPY2GyQLY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714490704; c=relaxed/simple; bh=T9PMDa2m8f9pWeCvWIkwvv3uWatQ70SXRfoWDcrSfjQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=a4E57qYiQXHCmQPohcOGntqC898lxM3O9+3BpmRP+tzOm9xeE2d4pLkf0Cdpv+ftSpsK8KsO49A3UMm8T13FALlSbTtzdlzTQNagIuGqCel349NPymsr+U9R+slQlxatKZ7FjYl0753yQLzPEEBgr4VGqixBhULZawxbpZAh/v0= 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=422otHHW; arc=fail smtp.client-ip=40.107.220.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="422otHHW" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NyhfpDVDFMpJYRgBRBwwmJIHzlufy9hqsLjV677ayDVnhAEz2sqCsrN9iD5E2ugWVryTBf1O4T9mYBjFD88Wx/rDF673zJVpf7I9A+w9meU1cerxlTf7uAgpB8xyxai/3Z9BBLn2M+TCItXD9K1ZLQ4lGXCn6zv/RvR/L2TM4M6nBUnPYFWqrCtV32VajdCUXqW/xp5DC0t08VzD/ukDjgt666yFLeSfaCT9nuBWRN8RyoIRpfElk0f+p1+5fPSjhAgts6jwoQnwEWpuGKbEwX3ucMhC0JhNIXlfwr+LWCVe0Ver+hVJJ/ZPPpb2JZqNDWg0aVEhE8G7GXSiw+2s2A== 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=bldSHydcHathPRCxxR82cCaaVBffJpF6fITCz6EY28s=; b=KK7mE4LvBMpLDOg325lUTJlqa/ZErn2M3jnK7j001eETbl1gzcCX572eI8O4ecJPDdVh2FGhVgiesS1UN0DQ5k8jNfRglNpOwoyRN2xJlgkuWweQVqUPIr5eqtAxHdc7e9zWWyrEibXc71gVvs929NGtOc8e+mlXmutsTswjQYjLJw1r1hIrKcnzUbDPpiXCEDG0A1dfoyUnWoxvycpIqXozIObPnnMrp65JE+aZRgqmQCOyyTKDWETdoaPICwSCTUlV2Hwn4AGGcERGktsVXNM3FV3NK5luMSLlyt8tsx5LDwXkNY8PPU4glNJ58amfNf3LmlaWjNgU339oRmCRcQ== 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 (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=bldSHydcHathPRCxxR82cCaaVBffJpF6fITCz6EY28s=; b=422otHHWP3H3sOJWshMda73k829FbxVN+K9ky1f76S9S9oJ+FaB5HHpmU5mqJJLZj60i3/Gbksur5+5KBA+N05csXuMk+KTDtfgtHNivU0ETEEUP4jXlgFab4yCUGyh19TfswlAh9KaWKxXxg2oQB3ZyAF/UZhE6RA7RDrH3RVw= Received: from CY5PR04CA0029.namprd04.prod.outlook.com (2603:10b6:930:1e::20) by CH0PR12MB8506.namprd12.prod.outlook.com (2603:10b6:610:18a::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.36; Tue, 30 Apr 2024 15:25:01 +0000 Received: from CY4PEPF0000E9D0.namprd03.prod.outlook.com (2603:10b6:930:1e:cafe::c8) by CY5PR04CA0029.outlook.office365.com (2603:10b6:930:1e::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.36 via Frontend Transport; Tue, 30 Apr 2024 15:25:01 +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 CY4PEPF0000E9D0.mail.protection.outlook.com (10.167.241.135) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7544.18 via Frontend Transport; Tue, 30 Apr 2024 15:25:00 +0000 Received: from purico-e93dhost.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.2507.35; Tue, 30 Apr 2024 10:24:57 -0500 From: Suravee Suthikulpanit To: , , CC: , , , , , Suravee Suthikulpanit Subject: [PATCH 3/9] iommu/amd: Convert Command Buffer pointer to use struct amd_iommu_mem Date: Tue, 30 Apr 2024 15:24:24 +0000 Message-ID: <20240430152430.4245-4-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240430152430.4245-1-suravee.suthikulpanit@amd.com> References: <20240430152430.4245-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: 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: CY4PEPF0000E9D0:EE_|CH0PR12MB8506:EE_ X-MS-Office365-Filtering-Correlation-Id: c61a7603-6c04-488c-34ef-08dc6929b3ba X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230031|82310400014|1800799015|376005|36860700004; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?P/m/rZurciQIW6KnmqF2vZJ/l4obm3/FwQmWUCdA4odWQhztnhJfg0ixg1ae?= =?us-ascii?Q?erhFZer2qGh4lz1XDZwnUfGXsExruMQ/ie3p7PwbjwtL9trQ8TqGBIojY7Ru?= =?us-ascii?Q?u4PpAWyiAn4cjMknQ3DjQpJ+aaevjTTk74SCbAc58HIdPQEcaHj5h2leG8Ju?= =?us-ascii?Q?RAsOICSq8o3VkSXpSWD4Lc3w4KztPCqP6ujOwVvruVHuSK+aBRZ26Y2caa7a?= =?us-ascii?Q?s9pCnm8sEiwkZf9tbqyve/zl6dQwzs6rMme2T/13cCxPeiZuk7BI9+v9hjfr?= =?us-ascii?Q?tQkPASvjuDD4kzb3V+ssLYUvU6v702GnEqZbeEFEeLfPMP4fTeVpvrPQPehD?= =?us-ascii?Q?hX19HSBly+gFFWRGHQtyyzy2HmUZm/YLl4dB1xvjdPi8MLj8MdRd/0p9fli/?= =?us-ascii?Q?Ax+6veUgEEKgcQHd5+/xGBon9Mc7pl1ChKFK1b54hDnnCuIaQfnTFs5BIL1B?= =?us-ascii?Q?6hc6iAu4Zi5cVy3Q5ck2FDj4O/zwGdz3mtExZLmH/Lz8O/qM8aasn/diZL8E?= =?us-ascii?Q?qBzjtDM2xece8SwQ1vd01OVbACMpQEWq6AnE/KX7V+1MDigZAvMxMxx+6VFs?= =?us-ascii?Q?hDpPxIuFXUTQXjn9KKwyEXPwJkNMrIQ+07BJU1bNMVf/CvP+kzd+VAhqsnGh?= =?us-ascii?Q?E5vTpusTOXa5AMRy6UdziN4qNJXUFMoFp1DDkZIGiAOvduc+E83mZlDgg4ir?= =?us-ascii?Q?YaW0DFu7L3arC3Be0FgPiZIIZH7O1ZaluIhG6VwDTfZnUA3XzQMV32vLgnAt?= =?us-ascii?Q?1BPyBXIXwcPdjvZkMKXJLLA91D2X6UbogI0ahsJ1o8yWkrW/gDzc33VN0pSk?= =?us-ascii?Q?iPBFhunmcHNizTHxpbZwiER7Wy5ltK8ralwdVMutXuxMOue6NkEqBIXca1BH?= =?us-ascii?Q?079Z+hp67B0JaiWMEK70qRM1ZmbBrpWbxNaEVdKFcu/eNs68jjyBD0toKhsE?= =?us-ascii?Q?ECEy5SNPuOBXH52nzapR0N3CyVXpimx1G5uWompirAqvw0k7J9U9E2whxXUV?= =?us-ascii?Q?7wqiHHZWLtb1f5IAoeKG9ZpnSDiskbSgVom+cMwn53ivvP03UhBA3PUp6knb?= =?us-ascii?Q?VtWOU7CJYZ6Xf+yC2qO+oDc/oJa3VU+3ysHT16X/vLxcIOJ+SpQlQJ2qoJdT?= =?us-ascii?Q?iSeHQ9jHS+8sbHeFwonfgwYrtDP0nXvCyRpcvNooHsetcG639LSPFlImSB5T?= =?us-ascii?Q?gTVTAoqPrkhVx/6hpVEi/piNfy9VguXfF5zJWZyejcKEtxI+RDF2ALSDkguV?= =?us-ascii?Q?LKpmyjcVS3fUQnz+H4k6Gm46DpHQcdyIJfKkhERUeD1FqPHaYYQ0jjI2wtFY?= =?us-ascii?Q?6ACPgNNAL5T8q9XJ2aHziGD2Gkqe/Fe2cZLjqo1xEKzr5wGAeZ4aMtXPQi2E?= =?us-ascii?Q?WfxS6/4XJXxw/Yin4S8t3zaRHszF?= 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:(13230031)(82310400014)(1800799015)(376005)(36860700004);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2024 15:25:00.8730 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c61a7603-6c04-488c-34ef-08dc6929b3ba 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: CY4PEPF0000E9D0.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR12MB8506 Content-Type: text/plain; charset="utf-8" And specify the memory to be decrypted when running in an SEV guest so that the VMM can access the memory successfully. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu_types.h | 2 +- drivers/iommu/amd/init.c | 17 +++++++++++------ drivers/iommu/amd/iommu.c | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_io= mmu_types.h index d9159f2e3f0f..653955ab120d 100644 --- a/drivers/iommu/amd/amd_iommu_types.h +++ b/drivers/iommu/amd/amd_iommu_types.h @@ -733,7 +733,7 @@ struct amd_iommu { u64 exclusion_length; =20 /* command buffer virtual address */ - u8 *cmd_buf; + struct amd_iommu_mem cmd_buf_mem; u32 cmd_buf_head; u32 cmd_buf_tail; =20 diff --git a/drivers/iommu/amd/init.c b/drivers/iommu/amd/init.c index c68ff602d534..77147dc3b79f 100644 --- a/drivers/iommu/amd/init.c +++ b/drivers/iommu/amd/init.c @@ -735,10 +735,15 @@ static void __init free_alias_table(struct amd_iommu_= pci_seg *pci_seg) */ static int __init alloc_command_buffer(struct amd_iommu *iommu) { - iommu->cmd_buf =3D iommu_alloc_pages(GFP_KERNEL, - get_order(CMD_BUFFER_SIZE)); + struct amd_iommu_mem *mem =3D &iommu->cmd_buf_mem; =20 - return iommu->cmd_buf ? 0 : -ENOMEM; + mem->modes =3D ALLOC_MODE_GUEST_MEM_DECRYPT; + mem->order =3D get_order(CMD_BUFFER_SIZE); + mem->buf =3D amd_iommu_get_zeroed_mem(GFP_KERNEL, mem); + if (!mem->buf) + return -ENOMEM; + + return 0; } =20 /* @@ -812,9 +817,9 @@ static void iommu_enable_command_buffer(struct amd_iomm= u *iommu) { u64 entry; =20 - BUG_ON(iommu->cmd_buf =3D=3D NULL); + BUG_ON(iommu->cmd_buf_mem.buf =3D=3D NULL); =20 - entry =3D iommu_virt_to_phys(iommu->cmd_buf); + entry =3D amd_iommu_mem_to_phys(&iommu->cmd_buf_mem); entry |=3D MMIO_CMD_SIZE_512; =20 memcpy_toio(iommu->mmio_base + MMIO_CMD_BUF_OFFSET, @@ -833,7 +838,7 @@ static void iommu_disable_command_buffer(struct amd_iom= mu *iommu) =20 static void __init free_command_buffer(struct amd_iommu *iommu) { - iommu_free_pages(iommu->cmd_buf, get_order(CMD_BUFFER_SIZE)); + amd_iommu_free_mem(&iommu->cmd_buf_mem); } =20 void *__init iommu_alloc_4k_pages(struct amd_iommu *iommu, gfp_t gfp, diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 3df07e8ef002..2b18134f1eb5 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -1078,7 +1078,7 @@ static void copy_cmd_to_buffer(struct amd_iommu *iomm= u, =20 /* Copy command to buffer */ tail =3D iommu->cmd_buf_tail; - target =3D iommu->cmd_buf + tail; + target =3D ((u8 *)iommu->cmd_buf_mem.buf) + tail; memcpy(target, cmd, sizeof(*cmd)); =20 tail =3D (tail + sizeof(*cmd)) % CMD_BUFFER_SIZE; --=20 2.34.1 From nobody Thu Dec 18 07:14:00 2025 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2078.outbound.protection.outlook.com [40.107.244.78]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6195B179970 for ; Tue, 30 Apr 2024 15:25:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.244.78 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714490715; cv=fail; b=o71JUl2OaPtV0sIW6J2Q+CYRF4aG1uT7oRu9ztL5PvUS1J9Lx9VAbj6YbZgQLKWq57Qum0hMPB8UaBUod3ddxA+LNZf3grvpsu1Kv1JlxkuUW6nRmeyUQxQxjdHEulFuo+5PS2/Ab8wX59wJfCL1puFyNZ41MPiqL5lneyqy5mw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714490715; c=relaxed/simple; bh=SWptMURVStmPicvFcbd7gPMQ0jv7Sglz+hhq3FncuR0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=jpYbwSO8jJooY688FMp0P+41OH0fzXnuKWu31zlsGoUI/lUKmRHLd5oBiGQwZSlJ9gSpWc4CRCnTzMF0fiOYf50KJU9eVSeMNX+VK21El3RH7l6qHyRsI6fWSFgGfbM8XTF68P4uINLOHG/YxovzAxXcyF467XUoJ2wu18fNz78= 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=TYjl0tp/; arc=fail smtp.client-ip=40.107.244.78 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="TYjl0tp/" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R1VjDEuznWPKvlk5WqUbW9XYjUy9cGHDRxmavy0tEC6jXs27yjjUJeNQqmgoghtmm2O78zBrUFoS0lc2R55Gqy2LI/ljtcVQyQxub0SUtlXNhW+OEjUEAneBuJFd6UIwEHYHAni9zrG4vEbIiPoaTjxo+2pfPzctqE+VLqhuqgpaxovQ9lzqQD1tKw2Ip/GgVCb51aKqMZ+cdHyLLJEZsDqxV8ghUzYA9pf0rINebgjIpZJxWxz00At1d/Db2R44uyrl/whx0/oWnI27lKeiW0Wwd5iK2MgQH/5Dhha/DtyWS7KnbMmx+voPykleo+sbGwUvEDgGue6nV9pB92Y+lw== 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=QpUYbG/9JwQI2sYsQb6rVJhddfA68lF+BIYSXuXOxX8=; b=jdSVs5KFosgsrV1u+yEgXQKH4uqDeaw7O0aPKGMw6fmSwS2qtl1zcALeQdMffhql4PgTU3+KDoN64apAGR9M+tSIZKRfmCh1bPr7HPjeqPeNda5CgpMK+xK+9DpjYE3p41ul5QBXJc5dhwuqt9Fy0DHZMnkSb54BYAhOceCRfnI/qqC5Z6UkwxppCY9IFgPwo7Tn2kVSdI/0q2uDEqigkQikU045fdsIBeMadTmFZTuSSJtesJifq5OYDjTS2QvBLjp5ihFI+5hK+/vjdYcWATKrw4eLWhC1Cx5+6BJWDSizl5S2hnVo9Xb9/by+/x5Jua9sY4z3X/gU6tmEHRIdWA== 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 (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=QpUYbG/9JwQI2sYsQb6rVJhddfA68lF+BIYSXuXOxX8=; b=TYjl0tp/Q6IMNUZcvPqSup2yBZ3eyUjaL/jl4Ex+20mPBD94ANpQfh5pZo80Rerd3Bj7WHvVhxg7Dz4NnJmDMuoa2+2Ks5xq5VUNwVTXxNWzSEwOLZyA+053rCfirnuz4NpmCOQVYz9ZqiuOo3O7nIYDJ8rx2p4kAbnAXAmsM/g= Received: from CY5PR04CA0005.namprd04.prod.outlook.com (2603:10b6:930:1e::32) by CH3PR12MB7641.namprd12.prod.outlook.com (2603:10b6:610:150::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.35; Tue, 30 Apr 2024 15:25:01 +0000 Received: from CY4PEPF0000E9D0.namprd03.prod.outlook.com (2603:10b6:930:1e:cafe::24) by CY5PR04CA0005.outlook.office365.com (2603:10b6:930:1e::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.34 via Frontend Transport; Tue, 30 Apr 2024 15:25:01 +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 CY4PEPF0000E9D0.mail.protection.outlook.com (10.167.241.135) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7544.18 via Frontend Transport; Tue, 30 Apr 2024 15:25:01 +0000 Received: from purico-e93dhost.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.2507.35; Tue, 30 Apr 2024 10:24:58 -0500 From: Suravee Suthikulpanit To: , , CC: , , , , , Suravee Suthikulpanit Subject: [PATCH 4/9] iommu/amd: Convert Completion-Wait Semaphore pointer to use struct amd_iommu_mem Date: Tue, 30 Apr 2024 15:24:25 +0000 Message-ID: <20240430152430.4245-5-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240430152430.4245-1-suravee.suthikulpanit@amd.com> References: <20240430152430.4245-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: 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: CY4PEPF0000E9D0:EE_|CH3PR12MB7641:EE_ X-MS-Office365-Filtering-Correlation-Id: 39aced07-cd3e-4e33-44fe-08dc6929b40b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230031|1800799015|36860700004|82310400014|376005; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?YTaWK6wY8Iz/gQhJji5TVBv8lx3ZLcDxUkMX92N+ViZma0R7roOBNeF2RQ90?= =?us-ascii?Q?2GVlnlehZR/oZy2b5FQXbVF+PBA9MRNx3KlUjXtIHwUPIvf31jFvIBOHGovV?= =?us-ascii?Q?KCoFIh876pwEwpcm3ctLGprr0o90wfC1kY1i5dwFCNvkhN+StKgd84MMfO3e?= =?us-ascii?Q?m9gYwCChyRM+MiOFYHNPT7kpUnMJaWv0tvoJqnnaeUM8hZWYwBqrerjstszc?= =?us-ascii?Q?arHU2gEC8wwklaNXu2O2bAEjeCvwRGUPvbc33U45SrsFPaoEOWZSkGTDs7Eg?= =?us-ascii?Q?DxtVe5tR5VQZRcgNAm7QvrQ+txfXNMpR4/ZdcBSOHlemB1u6Vj7VQ2yBASm4?= =?us-ascii?Q?kzAF7CO7EtEQSFYjYx85VSQF2jHV44Zk9KiC4eA4HsZ74BP2yCh3onWWp6cm?= =?us-ascii?Q?GBCWCAGjbBMf6i8I2ZlgkNJMBSISvZoUNtyKH6GlDkVWpiEh2nM6x9Br9NNe?= =?us-ascii?Q?SO4OGAo8RpqTn3hcJjKYZoVDjqrjEs0m3BJLVnndiIEZF/BcWaFQnNl4bkZq?= =?us-ascii?Q?/PzUoFkxI+xeMNuLIAZ1Fjq56DCM7wyRlpIfesS3RIbO3jeMDVgcNhIUNWuT?= =?us-ascii?Q?fce7/fffEAh+fCkNE96AFMLdsfNWVHto67dx2xrKjjoT+W5kXEJERRJBS9xY?= =?us-ascii?Q?ABIDm3m4xYFopqKv/ef72iS003tPp6Pn/cUh2Z7xYM8PwgEd0rXlej5ZAllt?= =?us-ascii?Q?quXnDTJq/VguHHP4SiVL2VCapF6O8i7Pta0VGTgsiYZuG7xhJXzOmfTuiaJi?= =?us-ascii?Q?X4G9H6doj4hD7QgayALiyc5y194lFowrFbIaJ5tXYaQVwh/e5LnCDoutMEEc?= =?us-ascii?Q?vBtQkz3+8iR9vuJHAEQCTmfPc79MtqESwSp1IOqaPW54CdRVcUtk+fLgv1UR?= =?us-ascii?Q?hspp75l7PVC/aTOviHOpkoaleAem4YDH2Miui3WD9YEFhwQQDHR9TXoR2afx?= =?us-ascii?Q?ljAItyIUtlmytTyCRPq07mEaQyx+XTWZQZQaax4RsU8z04RlJSyzCkJklBoJ?= =?us-ascii?Q?8U9L42gS+c8UxJwf/TiOYY0lmkV/DtgY7DbW9RPNIQ1ZOenetmih+Kv4ihaL?= =?us-ascii?Q?ltksSi0ZTJoZdKpxec49HTIJMHSxkMPEEGQbdiHFqACArcvRx5OaF3Vxufj+?= =?us-ascii?Q?MApHvvlIrFiJCfVZDqmZ+miOtcKLNdc6VkCXNBOgqZuINDrLOAE3hHSApKoO?= =?us-ascii?Q?p/vjOwyp9D8rA/OaOH8ZMZ/B5VPR1nDYq9A8FcZj09bREskXWLLR+3NZiD5K?= =?us-ascii?Q?Y202FzsGg0aewOHJ0lOv6ry2lgYf6KTVW3fQ/Hl1GF2SdC2QYVfvIVga+Y/r?= =?us-ascii?Q?XjGsrEDh2FPW8xw1AhgvQVD1Z8ZqoRvc5rBeEOrTiGmYPKTd9TmhN2PJgaVf?= =?us-ascii?Q?D8pRhmo=3D?= 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:(13230031)(1800799015)(36860700004)(82310400014)(376005);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2024 15:25:01.4043 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 39aced07-cd3e-4e33-44fe-08dc6929b40b 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: CY4PEPF0000E9D0.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7641 Content-Type: text/plain; charset="utf-8" And specify the memory to be 4K-aligned when running in SNP host, and to be decrypted when running in an SEV guestso that the VMM can access the memory successfully. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu_types.h | 2 +- drivers/iommu/amd/init.c | 17 +++++++++++------ drivers/iommu/amd/iommu.c | 5 +++-- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_io= mmu_types.h index 653955ab120d..e671e9220a21 100644 --- a/drivers/iommu/amd/amd_iommu_types.h +++ b/drivers/iommu/amd/amd_iommu_types.h @@ -798,7 +798,7 @@ struct amd_iommu { #endif =20 u32 flags; - volatile u64 *cmd_sem; + struct amd_iommu_mem cmd_sem_mem; atomic64_t cmd_sem_val; =20 #ifdef CONFIG_AMD_IOMMU_DEBUGFS diff --git a/drivers/iommu/amd/init.c b/drivers/iommu/amd/init.c index 77147dc3b79f..51861874656e 100644 --- a/drivers/iommu/amd/init.c +++ b/drivers/iommu/amd/init.c @@ -383,7 +383,7 @@ static void iommu_set_exclusion_range(struct amd_iommu = *iommu) =20 static void iommu_set_cwwb_range(struct amd_iommu *iommu) { - u64 start =3D iommu_virt_to_phys((void *)iommu->cmd_sem); + u64 start =3D amd_iommu_mem_to_phys(&iommu->cmd_sem_mem); u64 entry =3D start & PM_ADDR_MASK; =20 if (!check_feature(FEATURE_SNP)) @@ -963,15 +963,20 @@ static int iommu_init_ga_log(struct amd_iommu *iommu) =20 static int __init alloc_cwwb_sem(struct amd_iommu *iommu) { - iommu->cmd_sem =3D iommu_alloc_4k_pages(iommu, GFP_KERNEL, 1); + struct amd_iommu_mem *mem =3D &iommu->cmd_sem_mem; =20 - return iommu->cmd_sem ? 0 : -ENOMEM; + mem->modes =3D ALLOC_MODE_4K | ALLOC_MODE_GUEST_MEM_DECRYPT; + mem->order =3D get_order(1); + mem->buf =3D amd_iommu_get_zeroed_mem(GFP_KERNEL, mem); + if (!mem->buf) + return -ENOMEM; + + return 0; } =20 static void __init free_cwwb_sem(struct amd_iommu *iommu) { - if (iommu->cmd_sem) - iommu_free_page((void *)iommu->cmd_sem); + amd_iommu_free_mem(&iommu->cmd_sem_mem); } =20 static void iommu_enable_xt(struct amd_iommu *iommu) @@ -3841,7 +3846,7 @@ int amd_iommu_snp_disable(void) if (ret) return ret; =20 - ret =3D iommu_make_shared((void *)iommu->cmd_sem, PAGE_SIZE); + ret =3D iommu_make_shared(iommu->cmd_sem_mem.buf, PAGE_SIZE); if (ret) return ret; } diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 2b18134f1eb5..bd29d26c8d44 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -1056,8 +1056,9 @@ irqreturn_t amd_iommu_int_handler(int irq, void *data) static int wait_on_sem(struct amd_iommu *iommu, u64 data) { int i =3D 0; + u64 *cmd_sem =3D (u64 *)iommu->cmd_sem_mem.buf; =20 - while (*iommu->cmd_sem !=3D data && i < LOOP_TIMEOUT) { + while (*cmd_sem !=3D data && i < LOOP_TIMEOUT) { udelay(1); i +=3D 1; } @@ -1092,7 +1093,7 @@ static void build_completion_wait(struct iommu_cmd *c= md, struct amd_iommu *iommu, u64 data) { - u64 paddr =3D iommu_virt_to_phys((void *)iommu->cmd_sem); + u64 paddr =3D amd_iommu_mem_to_phys(&iommu->cmd_sem_mem); =20 memset(cmd, 0, sizeof(*cmd)); cmd->data[0] =3D lower_32_bits(paddr) | CMD_COMPL_WAIT_STORE_MASK; --=20 2.34.1 From nobody Thu Dec 18 07:14:00 2025 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2084.outbound.protection.outlook.com [40.107.220.84]) (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 A7CA817333A for ; Tue, 30 Apr 2024 15:25:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.84 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714490707; cv=fail; b=RYSxnA+fIMrqVUfgD8uxZOfkQcH0chgwS+pyyCMA9BhdITKLgv6+4CNon5VDeW6v2OPccUEi5LKL0bd9cIdEd2tqFNzjbaXYsKm76VqQ8Mglz4n3YEV+xFd4slar6MPYBil0xl3JtM+VrrmN45rM3gz9OZA8/IlK8hwue1LoGB8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714490707; c=relaxed/simple; bh=cOcA9DqOxPaKR1OkxPkECu9CH8Jj255GeHsMCmYd24k=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=exJfHJ7d1rRqgKtQt1UhY6JueGFdYK9ohFtxQ9G+bfex2IJW+AOy18EWxmfS2Tk4NW3ewKQQ3+nVJUzUorxqgy0Y5BTKEP6OsirPRDmIYw5SabgFNSHqkW0fmSZ75nV9Di5MFBIHQMNTi/I0tI3YQneiL7TtryNnsIQUeaDXP0g= 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=1J23oBaN; arc=fail smtp.client-ip=40.107.220.84 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="1J23oBaN" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LKJESi9fwn0hIAFCTzyJhRl0q0A5rF5FMCPmg5jJyMzzGQzYBppOhlJI0RqQKbnOqzRC/wz72eFJyQcobCShQQU94QbhvLNVNoCCRv0ljqdY0gU+729har+hU89yXM+r3GJJrCVmz4zA0J6VtawTTZ6PHAk+6csdbheUtBC8GrTlX79LBVlb/qniyLn50bKgv43gbGEINUiUzsumjk5F+aIGnhnmyA1YJpVscRNiPzjf04KaiAcuZBEFXpTMDz+uKBZdTzXlGgeJiyclLk5YeMhcVX1rhZboR4JrsJ4UNi8sa49JVEn51WedpU3bUNUrzTG4VSu8E/FlbFjNwX8IDA== 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=eeUIfms4NyK/L1REOCI4006KhUoJrcQYrKvPsIxuP2k=; b=NBcBtfUZmoFJND9Ohw3mzjuT/nNjnn9+2C7/+9Q1RwPTP5AsVVpLlpH+gg4ekVfHaOVRmaohr4N1ikIHwkTGTDyS1LffaI5PI8lE0E5PlFBQYeCFJMxNq/Ry09FLoM+DcrxyULtYX2sWg5JjPUZtw7sOI7o6ogB24tyOiT9IEx9ar8nLgdgd3uPfaPhsiJYoBAvbMtd3EKd+PL1L2/NARH7mUhUSjOnTfoOmis48dmYLjCF07QweZ/Dy/5i0XIJ8RFER7UaznpUIJHGbUfuP5cj+DQLGxOlTgOfLCiJAtNvc4ncnOC7UeR1afCUE2VN5QdgbY73hCS31cETLw3ym8w== 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 (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=eeUIfms4NyK/L1REOCI4006KhUoJrcQYrKvPsIxuP2k=; b=1J23oBaN4eL60UNpAZsiB7SGpbPyjcF9gWpl7tWHjEBt1utW5Xuxub5QXwlAkJOELQxDAkMR0YZbBJqt6AlwpnWLL6blozG5DclR6HEMM4YQ6RDMy44QkoHtaddd7LSTdf3u0iaeAasj4MWJPqo9bgB/mhI1j4pIqSKojWXNxls= Received: from PH7PR13CA0004.namprd13.prod.outlook.com (2603:10b6:510:174::25) by CH2PR12MB4312.namprd12.prod.outlook.com (2603:10b6:610:af::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.36; Tue, 30 Apr 2024 15:25:03 +0000 Received: from CY4PEPF0000E9CD.namprd03.prod.outlook.com (2603:10b6:510:174:cafe::a9) by PH7PR13CA0004.outlook.office365.com (2603:10b6:510:174::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.24 via Frontend Transport; Tue, 30 Apr 2024 15:25:03 +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 CY4PEPF0000E9CD.mail.protection.outlook.com (10.167.241.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7544.18 via Frontend Transport; Tue, 30 Apr 2024 15:25:02 +0000 Received: from purico-e93dhost.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.2507.35; Tue, 30 Apr 2024 10:24:58 -0500 From: Suravee Suthikulpanit To: , , CC: , , , , , Suravee Suthikulpanit Subject: [PATCH 5/9] iommu/amd: Convert Event Log pointer to use struct amd_iommu_mem Date: Tue, 30 Apr 2024 15:24:26 +0000 Message-ID: <20240430152430.4245-6-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240430152430.4245-1-suravee.suthikulpanit@amd.com> References: <20240430152430.4245-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: 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: CY4PEPF0000E9CD:EE_|CH2PR12MB4312:EE_ X-MS-Office365-Filtering-Correlation-Id: 236f8648-94db-4546-8226-08dc6929b4c6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230031|1800799015|376005|82310400014|36860700004; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Bp7c2/5WfNk8L70yt68pHJZeh/R9fk6k0ik3azzCyf2X+27OTlD4LUdisTBB?= =?us-ascii?Q?SkohgD09E4FQ+UDvJEk0NRTjrco/kCNszPnXiXFlqcQ+ODjp82knulBzCXrM?= =?us-ascii?Q?VWpJvzrDCq5tRMMkVbTkSG1KGDHovrvQnldtCotDkO7fXhGfAPocqU0rM7NO?= =?us-ascii?Q?yvSoOu0cYOUN1xUarf1ex4oDt0HbgdPABvrWIXq6ZR06ZWHxS9lLbn3MoS1K?= =?us-ascii?Q?c3lWPEYH9gWRr+r7NNqpXrMZ6O1LdV2gmGzCnmsIj/IroKbH70r+3MdBKBqs?= =?us-ascii?Q?WsmSN81VUQ2IOd+5e9NxeiwpyDJeHv33xvYa4PB1UGMDAHiepA7RjB/WVgMP?= =?us-ascii?Q?0lSRwQdRmws8/AyPrImVTWbtkBulozkqTLWFmIDoTp/ZAXChPXruTQ4HX56K?= =?us-ascii?Q?zKYYmIBrZqKgfJetcxz8+FW3O4cJbRkjRpzrqlGNvzYzPA0piHyWfV5r3qoN?= =?us-ascii?Q?EzeDkJOibQanrpI51KE1UWrf4tYPNurv6xiUOTe3+r0JLqNfkQXJ5Y5wrd2x?= =?us-ascii?Q?7Gm8epmKpvxvoI0zpKHx5rlJVjlDYIQR875G4XG+RDMpRUAdCFZygmumClMI?= =?us-ascii?Q?TmfhKdxUtdadCMoJAUX9lLDtq1C3SX4ddWSFpkU8rPzcMBpRNTa9oqzM1D9y?= =?us-ascii?Q?YPuhawZ8qQ1r0ZpKt7okofo/FDHa78C/pPUtn/U3zU4naWykL5DvW7ITfcFr?= =?us-ascii?Q?qjlbaD+VXpx4T6muAiq5PD1SnEAZnG2JjuhoJ9MT0eMuMzu3UnsSRyYOQ2Yy?= =?us-ascii?Q?0to2vPoJwD+RuP1uabHwiH23+SaWwaSaqHWbXhK8DuBF77gYg82S/a2dXqaY?= =?us-ascii?Q?8rZTKaGhKQZtCNXxbatNVHV0Irhwiy3st4q6jL2quMd43AZcl1hr0wY61p02?= =?us-ascii?Q?7+CnTBeEIf6mmJhn+ZgI8wUZZ2QJIfYOT3we73ZvNexsNnGGnMk1eQNzPeYv?= =?us-ascii?Q?68oADb4muU+PVCNnhFVbsRCd0nDK+MY2YaelxqXyvjcigUn4qGQ0FLyX6yIL?= =?us-ascii?Q?0MbX5gWxHV7GhPw8bBzuOfhU8ivPkUWkdpY1RCgNK64u62eyS9hAK4awmK42?= =?us-ascii?Q?xDa774hFJxdBhGhb4UUpWo3dZCwd/3elanR2lBaj1/nXSBiocjkH8xM3b7DC?= =?us-ascii?Q?gRxFb07uQ5Qga9DDMMeWARuE2pfXq/+dngMtmXVD3+JjBPYAfrWwve3coosT?= =?us-ascii?Q?66iKYC6p9+K+CE1EfH96VayMrTUSYhMAZvsAP6mgpW3Xd+peleLZJrfBMMyl?= =?us-ascii?Q?ApLAJKsStUy5IKijpOSiKAdT2qawqV29S/ny4tiWve5UYTBGJ0lg7Ba/kx1D?= =?us-ascii?Q?1Jnv4UXT/ondR4FUTX56/L1oyEHvgjoB46fZkthjyuiNT+wIXK2zCwtj+l0e?= =?us-ascii?Q?jPGI7tGtDU9LIR85TLUvnCvMyzUu?= 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:(13230031)(1800799015)(376005)(82310400014)(36860700004);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2024 15:25:02.6314 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 236f8648-94db-4546-8226-08dc6929b4c6 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: CY4PEPF0000E9CD.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4312 Content-Type: text/plain; charset="utf-8" And specify the memory to be 4K-aligned when running in SNP host, and to be decrypted when running in an SEV guest so that the VMM can access the memory successfully. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu_types.h | 2 +- drivers/iommu/amd/init.c | 20 +++++++++++++------- drivers/iommu/amd/iommu.c | 2 +- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_io= mmu_types.h index e671e9220a21..af4e9ca6414e 100644 --- a/drivers/iommu/amd/amd_iommu_types.h +++ b/drivers/iommu/amd/amd_iommu_types.h @@ -738,7 +738,7 @@ struct amd_iommu { u32 cmd_buf_tail; =20 /* event buffer virtual address */ - u8 *evt_buf; + struct amd_iommu_mem evt_buf_mem; =20 /* Name for event log interrupt */ unsigned char evt_irq_name[16]; diff --git a/drivers/iommu/amd/init.c b/drivers/iommu/amd/init.c index 51861874656e..5242a9a16946 100644 --- a/drivers/iommu/amd/init.c +++ b/drivers/iommu/amd/init.c @@ -860,19 +860,25 @@ void *__init iommu_alloc_4k_pages(struct amd_iommu *i= ommu, gfp_t gfp, /* allocates the memory where the IOMMU will log its events to */ static int __init alloc_event_buffer(struct amd_iommu *iommu) { - iommu->evt_buf =3D iommu_alloc_4k_pages(iommu, GFP_KERNEL, - EVT_BUFFER_SIZE); + struct amd_iommu_mem *mem =3D &iommu->evt_buf_mem; =20 - return iommu->evt_buf ? 0 : -ENOMEM; + mem->modes =3D ALLOC_MODE_4K | ALLOC_MODE_GUEST_MEM_DECRYPT; + mem->order =3D get_order(EVT_BUFFER_SIZE); + mem->buf =3D amd_iommu_get_zeroed_mem(GFP_KERNEL, mem); + if (!mem->buf) + return -ENOMEM; + + return 0; } =20 static void iommu_enable_event_buffer(struct amd_iommu *iommu) { u64 entry; =20 - BUG_ON(iommu->evt_buf =3D=3D NULL); + BUG_ON(iommu->evt_buf_mem.buf =3D=3D NULL); =20 - entry =3D iommu_virt_to_phys(iommu->evt_buf) | EVT_LEN_MASK; + entry =3D amd_iommu_mem_to_phys(&iommu->evt_buf_mem); + entry |=3D EVT_LEN_MASK; =20 memcpy_toio(iommu->mmio_base + MMIO_EVT_BUF_OFFSET, &entry, sizeof(entry)); @@ -894,7 +900,7 @@ static void iommu_disable_event_buffer(struct amd_iommu= *iommu) =20 static void __init free_event_buffer(struct amd_iommu *iommu) { - iommu_free_pages(iommu->evt_buf, get_order(EVT_BUFFER_SIZE)); + amd_iommu_free_mem(&iommu->evt_buf_mem); } =20 static void free_ga_log(struct amd_iommu *iommu) @@ -3838,7 +3844,7 @@ int amd_iommu_snp_disable(void) return 0; =20 for_each_iommu(iommu) { - ret =3D iommu_make_shared(iommu->evt_buf, EVT_BUFFER_SIZE); + ret =3D iommu_make_shared(iommu->evt_buf_mem.buf, EVT_BUFFER_SIZE); if (ret) return ret; =20 diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index bd29d26c8d44..4f95c726e139 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -890,7 +890,7 @@ static void iommu_poll_events(struct amd_iommu *iommu) tail =3D readl(iommu->mmio_base + MMIO_EVT_TAIL_OFFSET); =20 while (head !=3D tail) { - iommu_print_event(iommu, iommu->evt_buf + head); + iommu_print_event(iommu, (u8 *)iommu->evt_buf_mem.buf + head); head =3D (head + EVENT_ENTRY_SIZE) % EVT_BUFFER_SIZE; } =20 --=20 2.34.1 From nobody Thu Dec 18 07:14:00 2025 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2041.outbound.protection.outlook.com [40.107.243.41]) (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 2F287174EF3 for ; Tue, 30 Apr 2024 15:25:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714490709; cv=fail; b=oZA47GDAkUDpDa3R56YqhFbSw5PyBa2N4QwJM2XFBTtujmlM74r12BlcpsyEx5Z0jCfNgv5huOX9DXQIx6jyCH/j90aOSCgq7QGKckztIVf3kqTnOU28cMhkoKwt1WdsTYjfui8TnrxgSXsOq7H144//L5przs/GSTPLNFEXB7k= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714490709; c=relaxed/simple; bh=XtkJdDu9b9MZCRmzK121EgNS3w7zzvQ6r0E7BngQXWw=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=BJfdimT/U8VsPA8FHyftEn7fAotTi/9biS93vOH6iSTbw5RlVYUbtWN5QJeZt73A3MSnbh8+kwwmk3Uo+R2D6RprVQsumS+MQzWhJ9qV8LfTIEsnA+JMVvq8zfo3uuh8doZ6viEpaYxD8HjAHEPm7pPTf37VdhkVozkfl0lfP4c= 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=MnOUbijB; arc=fail smtp.client-ip=40.107.243.41 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="MnOUbijB" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GnqPWsSRT//nissAz9idMLB1wR4lBFQI4JGR2xCWxtBQeBkVG29wlJ7ankOKthz2ppKSbPuvOxP2YDZhXT1KHp90p536387Mg2GvrZL8/ehceuPahEpIsMVcTe06xEDbB+9sBydqmtLRMO5nisGLzNqo72ZI+h+NkZ8YDX97QhPjp7lYTont8eDs7t+5F5qjnvbA/Q2gQxAovovMaOLYBByiv8zo+t6QNGJHrxJfe/ye4bY2rGpUEKCLHayalmxVa6CVcGsIKKO6vFYU0Vb4VtL3TZz90kboAxYOcirkwC+BC8vEeiI4PSspP6WKnDzypwQmt7YFnsgWN12+v1vWYA== 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=yAM7UTUs61d8KpwuxWPG/4mwi0zvGf2V1uvkPEYLEmE=; b=JFxkncxJgb1rJ8avp901tFa1/zVERxbpMYXPZ1K7PUb5f212SPAtW95FlHbq0LcU4lTp1n9F3V0oqTPHB2iSOuxL+8Ja507Wz4HWm6Pi3DPH5fDd1P8y2Jf2loHDwX2IbVjxVfZvIwutiogx84F160rPZue4okZH3CD17f2Xl0Fv6bYJkkXEY5zJnmRB2XmOGxy4yVXJR3yZ/DySUHy0cIjb++GXETDBHPvaVDCih7KIq/te+g54pFtAYSimRBQ3kIdy7zTy0GMARbCyc64MHs9dsrMGO1YtokDWfnOkgbFZFQCMBQ7IVLXjM3HJold951uv8JwW0cm9UXQtqZJ2TA== 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 (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=yAM7UTUs61d8KpwuxWPG/4mwi0zvGf2V1uvkPEYLEmE=; b=MnOUbijB14CqFpw8m9rb+9yAuKpy2K2N7s0HqBWOnV/rsa5GnRfMghWw4FdNOlENNgu89jvu+T/O/KtfEo8TyfKCL5bDTsc+/WD5vt+8xtumOD9BugWecAMItV+wFPZ0P5zEfoc55wJWaOwl70RO/hG6fyVd0i2AXiaJdeC7pdQ= Received: from PH7PR13CA0014.namprd13.prod.outlook.com (2603:10b6:510:174::28) by MW4PR12MB5627.namprd12.prod.outlook.com (2603:10b6:303:16a::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.34; Tue, 30 Apr 2024 15:25:04 +0000 Received: from CY4PEPF0000E9CD.namprd03.prod.outlook.com (2603:10b6:510:174:cafe::44) by PH7PR13CA0014.outlook.office365.com (2603:10b6:510:174::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.24 via Frontend Transport; Tue, 30 Apr 2024 15:25:03 +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 CY4PEPF0000E9CD.mail.protection.outlook.com (10.167.241.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7544.18 via Frontend Transport; Tue, 30 Apr 2024 15:25:03 +0000 Received: from purico-e93dhost.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.2507.35; Tue, 30 Apr 2024 10:24:59 -0500 From: Suravee Suthikulpanit To: , , CC: , , , , , Suravee Suthikulpanit Subject: [PATCH 6/9] iommu/amd: Convert PPR Log pointer to use the struct amd_iommu_mem Date: Tue, 30 Apr 2024 15:24:27 +0000 Message-ID: <20240430152430.4245-7-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240430152430.4245-1-suravee.suthikulpanit@amd.com> References: <20240430152430.4245-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: 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: CY4PEPF0000E9CD:EE_|MW4PR12MB5627:EE_ X-MS-Office365-Filtering-Correlation-Id: e8632f4b-396d-47a5-2bbb-08dc6929b572 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230031|36860700004|82310400014|376005|1800799015; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?8/bq6NUWYJEmuifutzip40PkgLRBhL0Vn+QdsSc9PZozUNZsqCjxBSnYVwZA?= =?us-ascii?Q?W9+yS1lqqOEVPLGL2TtKtEnc4iBTbxapDERgJzKBvbKwfyMcSVoztXTNuT4y?= =?us-ascii?Q?cVQbiufkjXRN4LLSMpvu8MHf1zEBItYSZ1npQBQwPUBLEv02vxw5QO9D0dzw?= =?us-ascii?Q?6wBznsTTOetujD7TqDfaqIyGS/5+LzRK96R3c0Ao+92/Vag4EsQ9A7PPP0n8?= =?us-ascii?Q?+aD0i2tIauO/sOEOScdin8Wv+i7Mq0pWAtrol3YITWGuayVrzaIt5vCLl4HM?= =?us-ascii?Q?Q892HzhO4MfB3LRtWYpRNvh6MOpAWN9fUJspL8lZ9ES7D/4ktQmil/GudnxL?= =?us-ascii?Q?VmC0uFwfksDwz2Hl1opyYEe1E4fOX+sHXiATVNRfY2j96YvnNpT5x5mdUQYa?= =?us-ascii?Q?DXzpQ628En6ZRPf6Vjj88GpKHH6Jq9GVk4Fo1cY4ur6MDsTAWd3WLeAUika4?= =?us-ascii?Q?dyk59PLroD3oduhE1PD/e2j7gsfQq4WvcvYU/wV68R0EfuDh60aH1n2QpM4P?= =?us-ascii?Q?8nDGN4oKAQbEcKV2vJCsB5Ni/yQOsNrs07IiXdUJ6OpU5oGqrepvWn/Pu4+0?= =?us-ascii?Q?eJLGc3qRtxGQJ3AyYEOXb5Mo9ha4OaEFwYttv4i7wv/KRUP5pjZw4BzRQ2BG?= =?us-ascii?Q?Aki5CwSKBhDabqkeyX81bGEaaUWO+b2kLI2yYwc+DIJK86GlRf69Kmx+6+G1?= =?us-ascii?Q?Xh6Y+7RNqdsa+wiq/C555UIaY/dH6qHiZ1pN6wTsDl49Ijyhnug4ABhaeWKI?= =?us-ascii?Q?NWYTrStFvjgB6KsyStRsA8OPnYCNyLMEsQNX0MBJeAGbSt2jIW+IG+ahUde4?= =?us-ascii?Q?Tjt4RtrvcjHPc6/OdIe5YRs1j2e0yIr7pdkFbMe2whPzbr2WEOyo85eMKYdU?= =?us-ascii?Q?D75mjYfC/Z2UxLMfxAU/bsTZgCin9pfx1rd+Ym8W19uFR9qxJ6wCdOeR/3me?= =?us-ascii?Q?kX0aiv70eR+5jQZ7D91INji/XSBvf6zDg80IADwZLjcIZcRONMbJlrNggHp4?= =?us-ascii?Q?iyOhpuP/YPgX/xsB4ELweB7K+BWdv2/vsPyA2AuQaBRXwNQUa28eJ3c1xUHP?= =?us-ascii?Q?TomAbXKAxef9rvstZVaQbdO+OgRLaxbFfaIUGPZzgC1Rj1oGL0yclVRWrTI2?= =?us-ascii?Q?JKKm6GKpJmKYLwfVxgBoOKveMytPvuulV+m5mQbvJqzaDu6xGNXbtw9lWQYT?= =?us-ascii?Q?7+Jo3815Zim3ca9di4WJk6AINKyr1h+45KsQnd7nX7aTTqIeKX6/HPSsp66/?= =?us-ascii?Q?Zz/TAL6wbrpMcB3UbTLXWKwKT5zmwGjENl99PYOCtRMr33UxPhG3dPS8g3bk?= =?us-ascii?Q?gL6+1AIeJB0QTULcavDT4nhO14umb66OCt6ndUz7Uf0RieetZf5yGjwraDN1?= =?us-ascii?Q?CbjXK8IJJUptI2fUxwiOQnAR9qwU?= 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:(13230031)(36860700004)(82310400014)(376005)(1800799015);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2024 15:25:03.7408 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e8632f4b-396d-47a5-2bbb-08dc6929b572 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: CY4PEPF0000E9CD.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB5627 Content-Type: text/plain; charset="utf-8" And specify the memory to be 4K-aligned when running in SNP host, Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu_types.h | 2 +- drivers/iommu/amd/init.c | 2 +- drivers/iommu/amd/ppr.c | 22 ++++++++++++++-------- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_io= mmu_types.h index af4e9ca6414e..8ced34cac1db 100644 --- a/drivers/iommu/amd/amd_iommu_types.h +++ b/drivers/iommu/amd/amd_iommu_types.h @@ -744,7 +744,7 @@ struct amd_iommu { unsigned char evt_irq_name[16]; =20 /* Base of the PPR log, if present */ - u8 *ppr_log; + struct amd_iommu_mem ppr_log_mem; =20 /* Name for PPR log interrupt */ unsigned char ppr_irq_name[16]; diff --git a/drivers/iommu/amd/init.c b/drivers/iommu/amd/init.c index 5242a9a16946..b62d4c806155 100644 --- a/drivers/iommu/amd/init.c +++ b/drivers/iommu/amd/init.c @@ -3848,7 +3848,7 @@ int amd_iommu_snp_disable(void) if (ret) return ret; =20 - ret =3D iommu_make_shared(iommu->ppr_log, PPR_LOG_SIZE); + ret =3D iommu_make_shared(iommu->ppr_log_mem.buf, PPR_LOG_SIZE); if (ret) return ret; =20 diff --git a/drivers/iommu/amd/ppr.c b/drivers/iommu/amd/ppr.c index 091423bb8aac..13983b4bf47b 100644 --- a/drivers/iommu/amd/ppr.c +++ b/drivers/iommu/amd/ppr.c @@ -19,21 +19,27 @@ =20 int __init amd_iommu_alloc_ppr_log(struct amd_iommu *iommu) { - iommu->ppr_log =3D iommu_alloc_4k_pages(iommu, GFP_KERNEL | __GFP_ZERO, - PPR_LOG_SIZE); - return iommu->ppr_log ? 0 : -ENOMEM; + struct amd_iommu_mem *mem =3D &iommu->ppr_log_mem; + + mem->modes =3D ALLOC_MODE_4K; + mem->order =3D get_order(PPR_LOG_SIZE); + mem->buf =3D amd_iommu_get_zeroed_mem(GFP_KERNEL, mem); + if (!mem->buf) + return -ENOMEM; + return 0; } =20 void amd_iommu_enable_ppr_log(struct amd_iommu *iommu) { u64 entry; =20 - if (iommu->ppr_log =3D=3D NULL) + if (iommu->ppr_log_mem.buf =3D=3D NULL) return; =20 iommu_feature_enable(iommu, CONTROL_PPR_EN); =20 - entry =3D iommu_virt_to_phys(iommu->ppr_log) | PPR_LOG_SIZE_512; + entry =3D amd_iommu_mem_to_phys(&iommu->ppr_log_mem); + entry |=3D PPR_LOG_SIZE_512; =20 memcpy_toio(iommu->mmio_base + MMIO_PPR_LOG_OFFSET, &entry, sizeof(entry)); @@ -48,7 +54,7 @@ void amd_iommu_enable_ppr_log(struct amd_iommu *iommu) =20 void __init amd_iommu_free_ppr_log(struct amd_iommu *iommu) { - iommu_free_pages(iommu->ppr_log, get_order(PPR_LOG_SIZE)); + amd_iommu_free_mem(&iommu->ppr_log_mem); } =20 /* @@ -163,7 +169,7 @@ void amd_iommu_poll_ppr_log(struct amd_iommu *iommu) { u32 head, tail; =20 - if (iommu->ppr_log =3D=3D NULL) + if (iommu->ppr_log_mem.buf =3D=3D NULL) return; =20 head =3D readl(iommu->mmio_base + MMIO_PPR_HEAD_OFFSET); @@ -174,7 +180,7 @@ void amd_iommu_poll_ppr_log(struct amd_iommu *iommu) u64 entry[2]; int i; =20 - raw =3D (u64 *)(iommu->ppr_log + head); + raw =3D (u64 *)((u8 *)iommu->ppr_log_mem.buf) + head; =20 /* * Hardware bug: Interrupt may arrive before the entry is --=20 2.34.1 From nobody Thu Dec 18 07:14:00 2025 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2054.outbound.protection.outlook.com [40.107.244.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6EE6F176FA4 for ; Tue, 30 Apr 2024 15:25:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.244.54 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714490711; cv=fail; b=bLZjuz/eGhc58ntYatGGVvk3MjfGP4OywSDEsXrXkf/mvw1Ur+rwD+MMq+jUtwf7NTm8dMk//cSKmI9fnXKZGAW4WwOH9j/hOiK9UfpJIrnXLwiIzoQN+tyO5BVOy4ND/2TbUWI0GyWdzhQ4bKkNBBFZEqlJtLHc3b2sz1Y2kCI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714490711; c=relaxed/simple; bh=Lb+WDnFpBgqwn8lX9YxN+Pu5Tc8Y29Hz8fIrwZACUiU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=MP3ugyUScNzehMnKj2clqwCRMBcAyWg1xh4i5RXiWos+ZYpgI8aSC2Au7WcMna6yShHQFso6pA61Lm+dpVj0gO/CiulFDrRTQf3OgSfcpXLaMbTPLPLiO3at1HoGhvA9UMICCZULFPDr+Tc7KvxBz/esb7we3xzfbDCTe6CNrKg= 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=sKArm3NB; arc=fail smtp.client-ip=40.107.244.54 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="sKArm3NB" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=H+rdSouArhth/eUqf/srY3X4p7/vyknh9np0MPikZfZLEm50edVrrVBKow+S7FdDoUAb3oTxZqxTFnLbuVpC5dnHVT/o+zmOjvuzrPL3A8IEAenAp3jmV/i111Fvjf/XQed3jEH5/T8sFZr3nwHzMtr7UPeZkqJfUeUrfw1qGQFobhfYXB/fi9RM/nnK2Le5KPM1xd8SJ6h0mBT47wxd9B3/we2+v5UnBnyyiYpgaAdWNlfSeIPMDi5ZJmmnKFaZ65XxdD6heECNDpAa+gkGWOWtxE7g8c8JzjPzTNEOquvQEwtF2WnjZpqPcVnbjZuEpk5Jv2cwUZTCGdOb5Pyd9g== 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=T9ujfRRjSsEgGwrp0xI/pon3AFBauUeQegzwV5o8fLA=; b=OvNH8pfPGdNFJekRuWMmrevY3sdF2KOl3TJ7EQOiA0Momr5sOfgWY2ykuVHDGEzAxqQySo+/7Zyz54QoNygl6ljmQ8+TD5gAbs9g2tdcwyGjeU3WFkhmZF5SicRYeZhB5Cj8JZcBKWCvoEJSlZCV/0JjGKjxRzNIKKF8v+F74U5rdgr435Q7N2ePHs5pFORqAl8u1FhgQ4vhpn3CFR9w4IU0kUZ3CUnp2mwUdpkj5uk7Ed50o+3FzeVy1hM6eptN7lVcHbJ3a1ylcJ4QlCbhFa89C9aUXjTKoyVLslEsjYBP/w+LmS1qFFiwmHU0MqGO71dqifWmOLNv/LZ08cd5Kg== 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 (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=T9ujfRRjSsEgGwrp0xI/pon3AFBauUeQegzwV5o8fLA=; b=sKArm3NBrV/0INSf6Shjx62QewQkoTUBj3qFQIWLcuZ/yRciDZeIVYSfVMDvGTl4Ut4fH9ECb/E2aP2gaw/Iqct7XHAqMyTtRy8Ug2mEasl6ScJONGkvIotEtQ0ytUnBj1XarFIVWmAIUm9+4Vi/+9ukCQlHjPQd/Pm4rMfKBac= Received: from PH7PR13CA0002.namprd13.prod.outlook.com (2603:10b6:510:174::6) by MW4PR12MB7309.namprd12.prod.outlook.com (2603:10b6:303:22f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.35; Tue, 30 Apr 2024 15:25:06 +0000 Received: from CY4PEPF0000E9CD.namprd03.prod.outlook.com (2603:10b6:510:174:cafe::1e) by PH7PR13CA0002.outlook.office365.com (2603:10b6:510:174::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.22 via Frontend Transport; Tue, 30 Apr 2024 15:25:04 +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 CY4PEPF0000E9CD.mail.protection.outlook.com (10.167.241.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7544.18 via Frontend Transport; Tue, 30 Apr 2024 15:25:04 +0000 Received: from purico-e93dhost.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.2507.35; Tue, 30 Apr 2024 10:24:59 -0500 From: Suravee Suthikulpanit To: , , CC: , , , , , Suravee Suthikulpanit Subject: [PATCH 7/9] iommu/amd: Remove iommu_alloc_4k_pages() helper function Date: Tue, 30 Apr 2024 15:24:28 +0000 Message-ID: <20240430152430.4245-8-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240430152430.4245-1-suravee.suthikulpanit@amd.com> References: <20240430152430.4245-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: 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: CY4PEPF0000E9CD:EE_|MW4PR12MB7309:EE_ X-MS-Office365-Filtering-Correlation-Id: 2bc623ae-b4e9-484d-7418-08dc6929b5fc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230031|82310400014|36860700004|376005|1800799015; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?sMCFGOb+3G1nsByoGOsSmHRUWl2iD7egxu4UyZLLxbQJN/YJpjh6Z+6sS/+9?= =?us-ascii?Q?uXWdfpciSh6EvJ1rL77x+z7oGNYcC+sjktTxn+R3kIy4ag9HpuO6anp0+5nk?= =?us-ascii?Q?cKMtAPa6iwbxogLANQqkrI6VPPJ4vu27rM+elQ7VkWP43VOaoveV0BMBC8Fu?= =?us-ascii?Q?kuJysgHdu+mOgQXwaljV9Ad35cU3yOZ4aS3jYKnS5yarp4gEfFzwkvatze1/?= =?us-ascii?Q?xzwU4J0NLT5AZVQQP5m3nB50wF3Iu2sUdqIzYNd5XXYOaL34A0tOmm0Z1WhZ?= =?us-ascii?Q?44G2yIi7g7dtRXKpv6IvXsbztl803mvBb6hycNSTxHx2B/+Z6/JoZl/0Sklm?= =?us-ascii?Q?QunwAF782sn6iuILIArv32t0t3JPoEpEqNbPvAvZPdyqjIGekdYdb9jJaO5v?= =?us-ascii?Q?lCDjfpnSe++3Q2nUG3iTCRFLMY0TGQDihkLhyDYwo7pCpDhPMxhb2lFMpSgj?= =?us-ascii?Q?2T2cuD/x8oQIem2c7O4iLMp3TnwXuU+qDHM35gxeC7UaOEcBz8uB69acAByF?= =?us-ascii?Q?c0C8BsZFM6rFYyxw7sR0hAyXa1uNvSdQCWBRoaPiCixAk3IkIh6scpF/pswC?= =?us-ascii?Q?yMvOryS3QnmIQvzwWAZDws77AVzVyG/tU073reIAbouYUdtmBA7woWKxAVPj?= =?us-ascii?Q?hFr4qAGD60z8BgHbHxcgWaZq5xEzS23TLezGFyq2JRgwpU4F3DckSWBCTcp6?= =?us-ascii?Q?/ZX0j5C38adJtQjbpVXsiFUHw6tgGca6i5+wEdIAqBiftW3hjsTnJhSWllx+?= =?us-ascii?Q?2GmIIoVTeiABbSq663Ws8VBCW1Mk2XvYMAbOBb872p5pQ++lzk+RX886Epm+?= =?us-ascii?Q?b91WYW5C+wq4bOSCi32aYVAxmXLEQ1yIzrrUyqvTIflk3hRiWXeQkp2BHYND?= =?us-ascii?Q?d28e43S54NXRGT2I88H/lK1nl6bjLauGRdQd89PyWXtbC4AKv5g1SL0PjBR0?= =?us-ascii?Q?YX4IPqe/c7P5vFVTM8YaBBCMSBD4GtbE3aqATHecuVYLSbDSQkyh46rKFZQY?= =?us-ascii?Q?GiWh306E+CzKK0Lh5Xxb66N57OTiVARZd9uiEDFkfTdbri67hoT2VZodpTEb?= =?us-ascii?Q?kkP53wMrAtdQafZBaKxVd0fNCX8+q6LDqdMWSpbJ28I7AxLi7WoDi0qSheLs?= =?us-ascii?Q?xNOkUhBGVmACKSi0z/2veLWXZGVSSjUXO7wBSxq9A87RWOUhjxth2jfXCZLN?= =?us-ascii?Q?R0kcj9flcJOxc0QqtUtwlj8GR8J+C2xZAcGw0KAJ5yUJzu4yH1X8QWJu0Fiv?= =?us-ascii?Q?RosDlnc7BFkZzvSlBuQHPZhaK163GA0QTZP5izVz/ADKEoZu65us8CVCIbSn?= =?us-ascii?Q?aPaLkO5rsd5G+Aq38uG17fuxUo13symE4qyVnjcHdLYl67SCWErFBh+7YkJ2?= =?us-ascii?Q?SzqBl+0JYDCTZITZUom8AoV0s3Hj?= 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:(13230031)(82310400014)(36860700004)(376005)(1800799015);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2024 15:25:04.6470 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2bc623ae-b4e9-484d-7418-08dc6929b5fc 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: CY4PEPF0000E9CD.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7309 Content-Type: text/plain; charset="utf-8" Since it is replaced with the amd_iommu_get_zeroed_mem(). Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 2 -- drivers/iommu/amd/init.c | 16 ---------------- 2 files changed, 18 deletions(-) diff --git a/drivers/iommu/amd/amd_iommu.h b/drivers/iommu/amd/amd_iommu.h index ccd9003813ac..1ca7e1e389c4 100644 --- a/drivers/iommu/amd/amd_iommu.h +++ b/drivers/iommu/amd/amd_iommu.h @@ -25,8 +25,6 @@ void amd_iommu_restart_ga_log(struct amd_iommu *iommu); void amd_iommu_restart_ppr_log(struct amd_iommu *iommu); 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); =20 void *amd_iommu_get_zeroed_mem(gfp_t gfp_mask, struct amd_iommu_mem *mem); void *amd_iommu_get_zeroed_mem_node(int nid, gfp_t gfp_mask, diff --git a/drivers/iommu/amd/init.c b/drivers/iommu/amd/init.c index b62d4c806155..1b74a31b4337 100644 --- a/drivers/iommu/amd/init.c +++ b/drivers/iommu/amd/init.c @@ -841,22 +841,6 @@ static void __init free_command_buffer(struct amd_iomm= u *iommu) amd_iommu_free_mem(&iommu->cmd_buf_mem); } =20 -void *__init iommu_alloc_4k_pages(struct amd_iommu *iommu, gfp_t gfp, - size_t size) -{ - int order =3D get_order(size); - void *buf =3D iommu_alloc_pages(gfp, order); - - if (buf && - check_feature(FEATURE_SNP) && - set_memory_4k((unsigned long)buf, (1 << order))) { - iommu_free_pages(buf, order); - buf =3D NULL; - } - - return buf; -} - /* allocates the memory where the IOMMU will log its events to */ static int __init alloc_event_buffer(struct amd_iommu *iommu) { --=20 2.34.1 From nobody Thu Dec 18 07:14:00 2025 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2071.outbound.protection.outlook.com [40.107.220.71]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 31717176FCF for ; Tue, 30 Apr 2024 15:25:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.71 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714490712; cv=fail; b=Xb084tbANC9bsU8HzCx2WY8PbWbQpyzFsvUM4Ss2jfgtjJ8J5KVh/59Bsw47J6WoNOr//O9BW1bt8fO/D8WENDseKTWm9fA6gYuGISR57M+nw8EeksE72dlN6K1XCaR/F4ILz0vzuRrIr4exJ1g5kUjQKt0vDykpaSeEsPKqFCM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714490712; c=relaxed/simple; bh=3ueA/qx8foO3edffgwwwv62GoMXRH5BIKNhVoPtJD3Y=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Gdki/nBEOvNagC2VMJlAAPsRYshDXicyN/TH6e5Bm6KuoOZIKzUmi7N2DxF8E+62YX3NIdVwmEvGhhlwTV9dnnogLVqoYiPoc16bj70ENQ+9tLY8kOIVaHXSYIGX7uHgOGSrXrp3C9k5S3mmkcv+pnCUr0ojc5tVa/4MJ/99Hp4= 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=eC1lgvtn; arc=fail smtp.client-ip=40.107.220.71 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="eC1lgvtn" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CMM3Z5jBh/0xZJ3Bh0ldLB+L0gxeNLgB9xmCyXunmmwpvvcmCX9BWAW7IjkWNtbazzEjq4CEP7kUj2j5XtmCNyXV4QdA8Ss1AF52HSqZ/+49Z5cMQvFoAO2gmbk5DMS4yxmEpq82e9NKhSzj/65qZiWM5MA4upSDm379BdtIgFlvBrMQrIuo7Fp5pm4pvwdxLxukVA5N7L35QYy8YWpG7eg3adLF232yHryscZrZRR2m5nknVjbQEh4i9rRn/UFMjyPII1Kibj0WQaKieRfaL256nS3khf8lscgC/J5kqCn4XGOqtQxcDb6f3Bsi44tkY1TdXlwXgAGH9+OETeyy+w== 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=6twXRZcSuSyGe+wMus6aFOt+RerzkaZOxRywtzHOGaE=; b=PaM4TZDglWEgyk+ath/EpS5kIigzdc39yq4TbKZnA1jWBSt1sYi9//FjNPUp2gziOIH9Zo+9iXcD0VCeD/gKNYBOP7DfHNyJ5RVbCQYQpHuHYjqL4VIWAA0MKF/2mQcNbrl1KFwDk98eQyu6mGGVT8A8iQbN2nonZ4RZ9OI42j1PgU25mZs9XRHLdgwzsg+8USDGrqz+COX70ma9xoj7KD5zAx9gF79QojlQ+LGanPy1Sw3yqt/gI5tDYIkCyLSInzRkEv66XR9N/hyZj7R34wT98ioIrFIDLMTfbIz6YjuybYvz9Ew3PD0bdB0mYb00yj0mjznzSMXOOVgaQbGnMA== 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 (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=6twXRZcSuSyGe+wMus6aFOt+RerzkaZOxRywtzHOGaE=; b=eC1lgvtnZP/0nNJOwKzLmMGrt14+ppNKH6HysMiCCoCNTbTpgluXEin5ZRPviYGzy5ALlbTu0hB4R4sKLTvhUShQzXZZ73JlHbob2/IypK8Xq1KaISsmVs8cHPx1lSF16470YwWxZLa+dVfdPU9qBJNqt7F7/EV9TvW71jdcOYA= Received: from PH7PR13CA0024.namprd13.prod.outlook.com (2603:10b6:510:174::10) by CH0PR12MB8506.namprd12.prod.outlook.com (2603:10b6:610:18a::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.36; Tue, 30 Apr 2024 15:25:07 +0000 Received: from CY4PEPF0000E9CD.namprd03.prod.outlook.com (2603:10b6:510:174:cafe::a1) by PH7PR13CA0024.outlook.office365.com (2603:10b6:510:174::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.22 via Frontend Transport; Tue, 30 Apr 2024 15:25:07 +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 CY4PEPF0000E9CD.mail.protection.outlook.com (10.167.241.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7544.18 via Frontend Transport; Tue, 30 Apr 2024 15:25:07 +0000 Received: from purico-e93dhost.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.2507.35; Tue, 30 Apr 2024 10:25:00 -0500 From: Suravee Suthikulpanit To: , , CC: , , , , , Suravee Suthikulpanit Subject: [PATCH 8/9] iommu/amd: Decrypt interrupt remapping table for AMD IOMMU emulation in SEV guest Date: Tue, 30 Apr 2024 15:24:29 +0000 Message-ID: <20240430152430.4245-9-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240430152430.4245-1-suravee.suthikulpanit@amd.com> References: <20240430152430.4245-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: 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: CY4PEPF0000E9CD:EE_|CH0PR12MB8506:EE_ X-MS-Office365-Filtering-Correlation-Id: 953df129-0d08-46e5-397b-08dc6929b7a7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230031|82310400014|1800799015|376005|36860700004; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?IErd6a9zRWkvFpqH4/YeQ2DQuVzvEF2RIsRSUPQ5Pzgc0tWpJVMNylt1PUtg?= =?us-ascii?Q?jOLRL58wSmVYGstR0cE6nBh6nWrEqKwU2cl4zVLc5R/Di+NpG+8c1fUwmaar?= =?us-ascii?Q?l5A9WRbC6V4xwx7RZuXp6PeNGskRF40fp31V63jH4j/k/0lDLJLWrJi5kGJl?= =?us-ascii?Q?R9KtutMBWvZ5yxUnahILZm33uG28AxTrxLPSMDq2O6Jlczi8dc7+eWtZbLtr?= =?us-ascii?Q?SDuXMWg72dNCCAj+/l0d5MDYfK5p/e9wI9jnABu3Vb5IdnndUEd5URttrM/E?= =?us-ascii?Q?bmBrfDIEMxwC87EzgdHDk+we6pIBPOl9DKjQMtDDwA3fKUxiIw4ApsTvkAvM?= =?us-ascii?Q?Wtj0e3eroBEeU7f8tlN50fw3Jb0rIcKBhiIYkeP64eZ7Pmg0VEVHG935m+yR?= =?us-ascii?Q?ygjyQXK8GIWBGLv9midQsXGOLcpUw4FPIszr33iUzxkV/NRr6AejfgVFynpM?= =?us-ascii?Q?RLr3qUq6oGJPV/DDXRL9LEn5X+BiLdFmVZamMvYY4pAwScBHH1RPQHIUXI1w?= =?us-ascii?Q?tWqO5ohObaGoURW8e3nxucxAoBPYE/DwDHpKls1h/sxdhegvBcyTKg3uG/U/?= =?us-ascii?Q?+0TqPd6nbgbb1IsKfI/9xaAQZpdVxKlYw2gwOrJlKezOO9h2hWBc7y6/IfUy?= =?us-ascii?Q?YDzbcvIPT0EiIYenZicNAsq0IxFn0bzZzkmbik4kB7WjhgEEfTxwOyeafAke?= =?us-ascii?Q?B3zKd1xdJ+fGVmSvcRJ17q+ltwEb4TbSykv9+v2o3zBEJQiAyCuEcjGlxpna?= =?us-ascii?Q?BhrGn43vU5thR1VzS+KNDz7+X9C0DlOeFGmak+2C6Yn8R1qfdI0ggS+c6cHb?= =?us-ascii?Q?/jOihMSxwiXXWEo9/jbStmnchkHZ/clXNoJ7bMtzLdR4RTzxiO8AtC/EQLhr?= =?us-ascii?Q?zwrGCMjvNHLmfiG48fsgqToM7xINwziTKSvHjISCeE0TP7yg/+hWBjNDlWYa?= =?us-ascii?Q?/rRcweKph52F3n3u7JsgEy3kcSqubqf0SZwSprV2Ldkxf7OcedSIgNFWAENa?= =?us-ascii?Q?vDLouhd7KYjcO+gqqnp/Vm4fqoW5LiL76NCnu2LnTl0rZ/yP75LuFEtfvsxc?= =?us-ascii?Q?a0mFn1IHxjr9/R2x4BsKJk0j+H4QJZkyiX3hWf1u4jzfwZrEoPivn2DQ/l17?= =?us-ascii?Q?xRF5wYgOxqj7jJaE/M86L70bOSpN6K1l627NpZSKtaAcKz8+ysQX2vlOVor3?= =?us-ascii?Q?HsqNShomb67gNW/o+MVwR0zMQ+2D1L6Sn/jSsKDPyhCyOi5k2rP1Q45nHUvO?= =?us-ascii?Q?JJ/Kl98g8wGhmg7oMQrII9/0prKhkKRCNxYrlUiPDvSyFILf3VwhNDdVCW7b?= =?us-ascii?Q?fwYM+/XQvpFe/a7g9HWlYNsn7ZCdJsVSER8X/4bK8mNCjoSQgvRH+8+9l2/v?= =?us-ascii?Q?gErPUn1XAihUYrQuTHW1kBRNfqaw?= 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:(13230031)(82310400014)(1800799015)(376005)(36860700004);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2024 15:25:07.4595 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 953df129-0d08-46e5-397b-08dc6929b7a7 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: CY4PEPF0000E9CD.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR12MB8506 Content-Type: text/plain; charset="utf-8" The interrupt remapping table must be decrypted so that the VMM can access the memory to emulate interrupt remapping. However, the amd iommu driver currently allocate the table with kmem_cache mainly to enforce 128-byte memory alignment as specified in the AMD IOMMU spec. For SEV guest, memory encryption is done on a page basis. The driver must be modified to allocate the table using page-aligned memory, which still satisfies the original 128-byte alignment. In addition, the table is setup per-device, which can be allocated with NUMA-aware page to help reduce IRTE access latency. Suggested-by: Thomas Lendacky Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu_types.h | 3 +- drivers/iommu/amd/init.c | 31 +++++++----------- drivers/iommu/amd/iommu.c | 50 ++++++++++++++++------------- 3 files changed, 41 insertions(+), 43 deletions(-) diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_io= mmu_types.h index 8ced34cac1db..980fbb9bae39 100644 --- a/drivers/iommu/amd/amd_iommu_types.h +++ b/drivers/iommu/amd/amd_iommu_types.h @@ -309,7 +309,6 @@ * AMD IOMMU hardware only support 512 IRTEs despite * the architectural limitation of 2048 entries. */ -#define DTE_INTTAB_ALIGNMENT 128 #define DTE_INTTABLEN_VALUE 9ULL #define DTE_INTTABLEN (DTE_INTTABLEN_VALUE << 1) #define DTE_INTTABLEN_MASK (0xfULL << 1) @@ -497,7 +496,7 @@ struct amd_iommu_mem { struct irq_remap_table { raw_spinlock_t lock; unsigned min_index; - u32 *table; + struct amd_iommu_mem mem; }; =20 /* Interrupt remapping feature used? */ diff --git a/drivers/iommu/amd/init.c b/drivers/iommu/amd/init.c index 1b74a31b4337..b3ff89952c7f 100644 --- a/drivers/iommu/amd/init.c +++ b/drivers/iommu/amd/init.c @@ -697,6 +697,17 @@ static inline int __init alloc_irq_lookup_table(struct= amd_iommu_pci_seg *pci_se =20 static inline void free_irq_lookup_table(struct amd_iommu_pci_seg *pci_seg) { + int i; + struct irq_remap_table *table; + + for (i =3D 0 ; i <=3D pci_seg->last_bdf; ++i) { + table =3D pci_seg->irq_lookup_table[i]; + if (table) { + amd_iommu_free_mem(&table->mem); + kfree(table); + } + } + kmemleak_free(pci_seg->irq_lookup_table); iommu_free_pages(pci_seg->irq_lookup_table, get_order(pci_seg->rlookup_table_size)); @@ -2923,9 +2934,6 @@ static struct syscore_ops amd_iommu_syscore_ops =3D { =20 static void __init free_iommu_resources(void) { - kmem_cache_destroy(amd_iommu_irq_cache); - amd_iommu_irq_cache =3D NULL; - free_iommu_all(); free_pci_segments(); } @@ -3026,7 +3034,7 @@ static void __init ivinfo_init(void *ivrs) static int __init early_amd_iommu_init(void) { struct acpi_table_header *ivrs_base; - int remap_cache_sz, ret; + int ret; acpi_status status; =20 if (!amd_iommu_detected) @@ -3090,21 +3098,6 @@ static int __init early_amd_iommu_init(void) =20 if (amd_iommu_irq_remap) { struct amd_iommu_pci_seg *pci_seg; - /* - * Interrupt remapping enabled, create kmem_cache for the - * remapping tables. - */ - ret =3D -ENOMEM; - if (!AMD_IOMMU_GUEST_IR_GA(amd_iommu_guest_ir)) - remap_cache_sz =3D MAX_IRQS_PER_TABLE * sizeof(u32); - else - remap_cache_sz =3D MAX_IRQS_PER_TABLE * (sizeof(u64) * 2); - amd_iommu_irq_cache =3D kmem_cache_create("irq_remap_cache", - remap_cache_sz, - DTE_INTTAB_ALIGNMENT, - 0, NULL); - if (!amd_iommu_irq_cache) - goto out; =20 for_each_pci_segment(pci_seg) { if (alloc_irq_lookup_table(pci_seg)) diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 4f95c726e139..f98a10b7925b 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -73,8 +73,6 @@ struct iommu_cmd { u32 data[4]; }; =20 -struct kmem_cache *amd_iommu_irq_cache; - static void detach_device(struct device *dev); =20 static void set_dte_entry(struct amd_iommu *iommu, @@ -2998,7 +2996,7 @@ static void set_dte_irq_entry(struct amd_iommu *iommu= , u16 devid, =20 dte =3D dev_table[devid].data[2]; dte &=3D ~DTE_IRQ_PHYS_ADDR_MASK; - dte |=3D iommu_virt_to_phys(table->table); + dte |=3D amd_iommu_mem_to_phys(&table->mem); dte |=3D DTE_IRQ_REMAP_INTCTL; dte |=3D DTE_INTTABLEN; dte |=3D DTE_IRQ_REMAP_ENABLE; @@ -3024,27 +3022,35 @@ static struct irq_remap_table *get_irq_table(struct= amd_iommu *iommu, u16 devid) return table; } =20 -static struct irq_remap_table *__alloc_irq_table(void) +static size_t get_irq_table_size(void) +{ + if (!AMD_IOMMU_GUEST_IR_GA(amd_iommu_guest_ir)) + return (MAX_IRQS_PER_TABLE * sizeof(u32)); + else + return (MAX_IRQS_PER_TABLE * (sizeof(u64) * 2)); +} + +static struct irq_remap_table *__alloc_irq_table(struct amd_iommu *iommu) { + struct amd_iommu_mem *mem; struct irq_remap_table *table; + int order =3D get_order(get_irq_table_size()); + int nid =3D (iommu && iommu->dev) ? dev_to_node(&iommu->dev->dev) : NUMA_= NO_NODE; =20 table =3D kzalloc(sizeof(*table), GFP_KERNEL); if (!table) return NULL; =20 - table->table =3D kmem_cache_alloc(amd_iommu_irq_cache, GFP_KERNEL); - if (!table->table) { + mem =3D &table->mem; + mem->modes =3D ALLOC_MODE_GUEST_MEM_DECRYPT; + mem->order =3D order; + mem->buf =3D amd_iommu_get_zeroed_mem_node(nid, GFP_KERNEL, mem); + if (!mem->buf) { kfree(table); return NULL; } raw_spin_lock_init(&table->lock); =20 - if (!AMD_IOMMU_GUEST_IR_GA(amd_iommu_guest_ir)) - memset(table->table, 0, - MAX_IRQS_PER_TABLE * sizeof(u32)); - else - memset(table->table, 0, - (MAX_IRQS_PER_TABLE * (sizeof(u64) * 2))); return table; } =20 @@ -3101,7 +3107,7 @@ static struct irq_remap_table *alloc_irq_table(struct= amd_iommu *iommu, spin_unlock_irqrestore(&iommu_table_lock, flags); =20 /* Nothing there yet, allocate new irq remapping table */ - new_table =3D __alloc_irq_table(); + new_table =3D __alloc_irq_table(iommu); if (!new_table) return NULL; =20 @@ -3136,7 +3142,7 @@ static struct irq_remap_table *alloc_irq_table(struct= amd_iommu *iommu, spin_unlock_irqrestore(&iommu_table_lock, flags); =20 if (new_table) { - kmem_cache_free(amd_iommu_irq_cache, new_table->table); + amd_iommu_free_mem(&new_table->mem); kfree(new_table); } return table; @@ -3202,7 +3208,7 @@ static int __modify_irte_ga(struct amd_iommu *iommu, = u16 devid, int index, =20 raw_spin_lock_irqsave(&table->lock, flags); =20 - entry =3D (struct irte_ga *)table->table; + entry =3D (struct irte_ga *)table->mem.buf; entry =3D &entry[index]; =20 /* @@ -3244,7 +3250,7 @@ static int modify_irte(struct amd_iommu *iommu, return -ENOMEM; =20 raw_spin_lock_irqsave(&table->lock, flags); - table->table[index] =3D irte->val; + ((u32 *)table->mem.buf)[index] =3D irte->val; raw_spin_unlock_irqrestore(&table->lock, flags); =20 iommu_flush_irt_and_complete(iommu, devid); @@ -3358,12 +3364,12 @@ static void irte_ga_set_affinity(struct amd_iommu *= iommu, void *entry, u16 devid #define IRTE_ALLOCATED (~1U) static void irte_set_allocated(struct irq_remap_table *table, int index) { - table->table[index] =3D IRTE_ALLOCATED; + ((u32 *)table->mem.buf)[index] =3D IRTE_ALLOCATED; } =20 static void irte_ga_set_allocated(struct irq_remap_table *table, int index) { - struct irte_ga *ptr =3D (struct irte_ga *)table->table; + struct irte_ga *ptr =3D (struct irte_ga *)table->mem.buf; struct irte_ga *irte =3D &ptr[index]; =20 memset(&irte->lo.val, 0, sizeof(u64)); @@ -3373,7 +3379,7 @@ static void irte_ga_set_allocated(struct irq_remap_ta= ble *table, int index) =20 static bool irte_is_allocated(struct irq_remap_table *table, int index) { - union irte *ptr =3D (union irte *)table->table; + union irte *ptr =3D (union irte *)table->mem.buf; union irte *irte =3D &ptr[index]; =20 return irte->val !=3D 0; @@ -3381,7 +3387,7 @@ static bool irte_is_allocated(struct irq_remap_table = *table, int index) =20 static bool irte_ga_is_allocated(struct irq_remap_table *table, int index) { - struct irte_ga *ptr =3D (struct irte_ga *)table->table; + struct irte_ga *ptr =3D (struct irte_ga *)table->mem.buf; struct irte_ga *irte =3D &ptr[index]; =20 return irte->hi.fields.vector !=3D 0; @@ -3389,12 +3395,12 @@ static bool irte_ga_is_allocated(struct irq_remap_t= able *table, int index) =20 static void irte_clear_allocated(struct irq_remap_table *table, int index) { - table->table[index] =3D 0; + ((u32 *)table->mem.buf)[index] =3D 0; } =20 static void irte_ga_clear_allocated(struct irq_remap_table *table, int ind= ex) { - struct irte_ga *ptr =3D (struct irte_ga *)table->table; + struct irte_ga *ptr =3D (struct irte_ga *)table->mem.buf; struct irte_ga *irte =3D &ptr[index]; =20 memset(&irte->lo.val, 0, sizeof(u64)); --=20 2.34.1 From nobody Thu Dec 18 07:14:00 2025 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2086.outbound.protection.outlook.com [40.107.92.86]) (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 2BB86179658 for ; Tue, 30 Apr 2024 15:25:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.92.86 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714490714; cv=fail; b=sbVPl2uqlHQhj5Ryhylw41ZwRZ0jNTxbtPdSeloPE4hCBq9bu0fkDsIJhfDW+UT1sRZWFGbi1wGCGBpDPZpIy/jfo2yy7PWiLWzTImVGxB/lxTOU76rzukNdJO75ngOpTxrZRmblKvE0eIcmt2gGtcD5bCfysxPOTd8+3YIl87U= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714490714; c=relaxed/simple; bh=0bubdy+MVU2CNC8VagX9qz1NBjG61bwTDFHtFFafWgM=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=KBUJJ5XOjLCGUD1a1miipjyu4E42f26AYkFFsfxtkYIf2zX5dKPe/KmPwp+zvyIEn5sVxUe3/hH2Rnu/BI6GfQPUAIoZWIcyYuMSUWOgV4yJcQabmSNATdgNkJbAzBP1GPMxMgNUynP7jy7N7jEDdDFeS4DSyLOT4pAScS80dso= 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=FikIoDMP; arc=fail smtp.client-ip=40.107.92.86 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="FikIoDMP" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bowMARiP5EdToy0hOzUd5vmo6QMaDVmDSaqF8EzdBsjYNreEM+7rWSzWlzL9RBvNuXxy/Hd8kjwKWj9tzw3QFnsEZvSWKvXywsUX20cHpMnYWHR7coCiKHiXFA2VKQxWKlmLxZDUGpcGLI7g94S03WVsUXRngvNUrG6CiKptx6kH9lNK7G1yis/EKuFX62+WqIvBrWArrpMmAZZXq1PrtkAzKWyF7A9CZKJetzx1p8RMCjgoSGmpVThh394yKYYqHn5KFh4weHFyHezV9JWfFFAYOvLQfaZN2nOk5f/K04vNx/slkgzQTaMOSvCUfdxU4M9s3HGF43jHT14bvOlFRg== 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=rm4UelSvyXTzPHBOHHntRN19L15qryX6MH7sY+V/Oh8=; b=VKa1XaLv+Ob1+P29mKFzHUJ2LFYACm7TcH5CVRpcOntULWlP5oDde80AmUfvroz6uZyMFQ9JrJu28Oevpp3ZGMfLJnrqnI8eu76q+P1Nl4H4NAPYt7WcnCKRIIqj4dLvzKMyntZ4HqD22B8XvJfHuScORj3/W4+vhMg6sCnoiOGuBq9AnHwJOdS7qgUsGn/ssqsaHxEptdCY0rnvJMcArSxH8/i+o1mNSPg8pgkYcIUYob/GJA+OpdecnIPLonFwtMvd+qrTObJQWwr/i4Z+I+u55l7s83ufjNrtPzaeFn+XuyVH/bzE5JRFE24LadGJ6KuWDAc96YSTiOuvX4lF5w== 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 (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=rm4UelSvyXTzPHBOHHntRN19L15qryX6MH7sY+V/Oh8=; b=FikIoDMPzAdCSWZnXt5hf9jzmVYqAgQ/mMSjF41kDrMblNfNFor2pt7XkAz3ht8hUsL2+x79W0/IpPJDBgj2Swe4xqC18omYb6j9+qr4wAlaAFFrgCzyH2W3y3gAPOW/xrcLJFc33axXVjangCaGbsXiIfI2PyvPKk3mlIpoYec= Received: from PH7PR13CA0005.namprd13.prod.outlook.com (2603:10b6:510:174::8) by DS0PR12MB6440.namprd12.prod.outlook.com (2603:10b6:8:c8::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.34; Tue, 30 Apr 2024 15:25:08 +0000 Received: from CY4PEPF0000E9CD.namprd03.prod.outlook.com (2603:10b6:510:174:cafe::cf) by PH7PR13CA0005.outlook.office365.com (2603:10b6:510:174::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.25 via Frontend Transport; Tue, 30 Apr 2024 15:25: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=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CY4PEPF0000E9CD.mail.protection.outlook.com (10.167.241.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7544.18 via Frontend Transport; Tue, 30 Apr 2024 15:25:08 +0000 Received: from purico-e93dhost.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.2507.35; Tue, 30 Apr 2024 10:25:00 -0500 From: Suravee Suthikulpanit To: , , CC: , , , , , Suravee Suthikulpanit Subject: [PATCH 9/9] iommu/amd: Set default domain to IDENTITY_DOMAIN when running in SEV guest Date: Tue, 30 Apr 2024 15:24:30 +0000 Message-ID: <20240430152430.4245-10-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240430152430.4245-1-suravee.suthikulpanit@amd.com> References: <20240430152430.4245-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: 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: CY4PEPF0000E9CD:EE_|DS0PR12MB6440:EE_ X-MS-Office365-Filtering-Correlation-Id: 14e2d0e1-7794-4a88-9621-08dc6929b825 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230031|82310400014|1800799015|376005|36860700004; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?MEJ1Q20drMNdL9jNLJGnjjiBw3BVaVBC4nUT4r3yrsbMu62Pdso6xR5BUpXe?= =?us-ascii?Q?es5V7jCfVLaCacpC4qEq+F3/PDjH8OujMIqiNMV+cJWM4367nnQPzLuAZNL1?= =?us-ascii?Q?OHDW7F7RR7aHnQaFL1TLc72BItf41pnLZiEWlA1bRKtFGC206LvOf1s8YAuH?= =?us-ascii?Q?4s+lXvG82RxH70NSIDPrOspd4UKT+YL7cG3+0c0MdSU68X25evQHIZWCXiAS?= =?us-ascii?Q?i8yK9FU7LofaOoEcWGUxb+gE1RqQqCchIp8lrgHsot8LLq4yBbBPwlZ2R6zP?= =?us-ascii?Q?TnzYniefvPUBhInTSPItiOGTpQOAAaSTaqGa0hCOdXSiyqas5HlFs2X6rRQa?= =?us-ascii?Q?Zg0dAg2FAKZj6mzta+LI44s7+i0oqxttS1nnao5ko530bTDoN8Sm69hCOiza?= =?us-ascii?Q?iON+KjtxE9qHfXK5v+jiy+0+DxrWL+8vEMAuXp7CQT3DbaH2z9I7WTiZwEVH?= =?us-ascii?Q?gchdnx1jSQF5lH1MCuVssT9ca+6oPYFLDN9BNHQ1OoBaNhldc4AiGr5dbfXO?= =?us-ascii?Q?nVM34ZFI+zSf4ejZBiM1AEOCQumlu7kH5m2+pyLLJ11Yb50fwlJjc62xdqXz?= =?us-ascii?Q?5v3E4plLUeGuWP28QajP7EMjQsRElkg4oW8liLQPjeCwIo45ZF3U4YWZofsL?= =?us-ascii?Q?k/+LmWtjJLci5bJMQfYYK6khsLcMUD8hS17YPbrzd9uRgrDDP3opMHpe9tWL?= =?us-ascii?Q?Yn9qgTBmUL80eRkpNnjokiE4Pl3Wg7AHVUcX6ZcckO94zVFpSE2oURDEihCn?= =?us-ascii?Q?Wszn8UhgYM0PeJOyFdmTZp8sRQX9AyOMq6MNLQ9v6rsO7jtPTluOLmYkVQCH?= =?us-ascii?Q?UTjbifwPCIj0nFmOaMSgtFb0A2Acb/B7dbT4k2r8zzr5KU82iIf6+/AGJLBL?= =?us-ascii?Q?jhOzYgcPWRViEw6YkpcVw9MtmO8AXzfvJFACpZjcFxqlI8zRR6Kd5LDoj6eM?= =?us-ascii?Q?Nge/A9+LbmPPnWAK7ScCbuJWkyBze7e1FRuQAw9v//22LsMcJpPBf1rRPyht?= =?us-ascii?Q?PA7xPidUeuJ1YSYCyaNRBDdA7kKIJ5oiNh0WBT6xqwy+2l+hVTNgy5bGSuPn?= =?us-ascii?Q?Wuivsz/YOSMQBRGMQShXLmvJlgpcsTZ4rpdaCZ406JCcZgSuRVCMGu3ZSXBc?= =?us-ascii?Q?sopwfhswnWwNYt/iAXHhsUhv8APAb9GI5W1i0PTNzSRKETDT2ugUIcHGFF8R?= =?us-ascii?Q?tAaJmjWnmlQtuLsyyWzUOYhBSKpfJlFcfDKvaDl3agW4UizaOY9mZ1HmXbfL?= =?us-ascii?Q?m6RkIlInqfYh4Uvoqaw/3ZT889nw8dQA9CWJtNMlml1c/XYOaHIDNzyE9xwi?= =?us-ascii?Q?iLv/sgTt1yNUk73SL6JJQX798WcaIfOAH2cpq/JXhTNyU1rKzQP0B0xCgGeg?= =?us-ascii?Q?ZdsU0VOraHS7K4NtR0ETcjrpzaOS?= 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:(13230031)(82310400014)(1800799015)(376005)(36860700004);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2024 15:25:08.2720 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 14e2d0e1-7794-4a88-9621-08dc6929b825 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: CY4PEPF0000E9CD.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB6440 Content-Type: text/plain; charset="utf-8" Since SEV guest depends on the unencrypted swiotlb bounce buffer to support DMA, the guest AMD IOMMU driver must be force to setup to pass-through mode. Suggested-by: Thomas Lendacky Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/init.c | 15 +++++++++++++++ drivers/iommu/amd/iommu.c | 6 ++++++ 2 files changed, 21 insertions(+) diff --git a/drivers/iommu/amd/init.c b/drivers/iommu/amd/init.c index b3ff89952c7f..1dccf030f674 100644 --- a/drivers/iommu/amd/init.c +++ b/drivers/iommu/amd/init.c @@ -3179,6 +3179,20 @@ static bool __init detect_ivrs(void) return true; } =20 +static void iommu_sev_guest_enable(void) +{ + /* + * Force IOMMU default domain to pass-through for + * SEV guest since we cannot support DMA-remapping. + * Note: This check must be done after IOMMU_ENABLED state. + */ + if (!cc_platform_has(CC_ATTR_GUEST_MEM_ENCRYPT)) + return; + + pr_info("Force pass-through for SEV guest\n"); + iommu_set_default_passthrough(false); +} + static void iommu_snp_enable(void) { #ifdef CONFIG_KVM_AMD_SEV @@ -3247,6 +3261,7 @@ static int __init state_next(void) break; case IOMMU_ENABLED: register_syscore_ops(&amd_iommu_syscore_ops); + iommu_sev_guest_enable(); iommu_snp_enable(); ret =3D amd_iommu_init_pci(); init_state =3D ret ? IOMMU_INIT_ERROR : IOMMU_PCI_INIT; diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index f98a10b7925b..c985d23c8528 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -2876,6 +2876,12 @@ static int amd_iommu_def_domain_type(struct device *= dev) return IOMMU_DOMAIN_IDENTITY; } =20 + /* + * Force identity map for SEV guest. + */ + if (cc_platform_has(CC_ATTR_GUEST_MEM_ENCRYPT)) + return IOMMU_DOMAIN_IDENTITY; + return 0; } =20 --=20 2.34.1