From nobody Sat Feb 7 18:20:31 2026 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2047.outbound.protection.outlook.com [40.107.95.47]) (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 837A41BE229 for ; Fri, 16 Aug 2024 15:44:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.95.47 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723823045; cv=fail; b=YMZElm+y5CVv51uAivxHgWy946nSgrE1jYOhdbK2RfbBg3RY/tNVuGIE+Grz2FaJ1/GHVZMP3n+cA87XGYcple6cp6qfLf6N2PMhN2/dDVNergtZj8HS5pPlTqu04v2yOrgJCJhpE7hAfaqxYxw6xNJXEX+3pcf4gFK8mCnBoyY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723823045; c=relaxed/simple; bh=KrPZB66agISseWt7Q2zzehienaGaHegGf55hH3fx8es=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Z2PwqMeJhyz80kgBYOuLLoEYzZzgImYj9wgKGWVWjBdLwbf79rZzyxzrU2mSSKYHWWyMXUInKIIU3Bg4uNeL5wgyBiDpMT8TvJrZudNz+baBgLiqEMXlYu+V+/4+HtUo5ATOnDV/4FvIpijIdX0aa9cEIoQK4FwyOC5KdfYn1og= 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=GxkPVQRy; arc=fail smtp.client-ip=40.107.95.47 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="GxkPVQRy" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LK0jBlC7JVp9DkwogH5gfYXwNkbHRptmv8gROsWg7FHUSsIxW67kyqwExt4VMRBpsL0Bvw+ryCShBD78ZkqmFTDllez950bJU9y7960yymkZAuGms5ElDwwvK2msHnjmnWYbHmuoKQ/A7wU5I3l1DzA8d/gNnJOXpVtzqJD/02UANf26ysQD3KuVCHahmBa9jNR2bYSABwrDOwJxtMOeILuQJZW5lOIbt+AYr++9o+xytu/pDebJCEaYLFVFbXx6OYBzCZwo2MHMlFPIt/9oEoUuhK1KeAFVm++X8nHqJTax0bEwVoykJ2woQ9EOEK6YjlCKoeC1YMuSRDs2R6qiWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=X+/6C6+FA+X9tdsHvdZ4SOeMkvW0vZ2TKosZ3qVNkzI=; b=YN8Msk2k4QcMVUCSvAI2bFcLqNkd+9bz6VauL9V9Ya6RYY854tg4xb1UBHUqma1b4pShDLvRJWnpUpy5r8Lk8Ej+iAiYymulC9w7vP25VwW66XJCbxocbn9HyOI4zUR95R0NIMvE0XC/JRHn1COC0AdO9saf+Qp07l2cYsrm98YsaQT7TDCPNaVlEOtYfE6Vu/lk3UWzhkabJwQnjE10T6U7xBrUVEgN+yl1zDnLbxi3RAfU+kSf99ZRvdSmHIdfQumYdFTgphxny29dIz9KCqtFv7mgf2NHgglo9jBfXy+fiCf/EL1EnbasqOoXt1Z3Xg/NAPGPg48KA8HdM4UNyw== 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=X+/6C6+FA+X9tdsHvdZ4SOeMkvW0vZ2TKosZ3qVNkzI=; b=GxkPVQRygARY5EUE3S/7Qg6P3R/f+RgIuwZ1viBwQSr9z/D3Dub5YEb7UefB6WUeeVKif9bDiEahWXW731MduV5/QWYL0C3AkBttT03R8A+10H/txg1B0m7sZtTHQjLCQN0S8xsxKozUgValI7FsvA2q25TtR61d7IAH6vD4pk8= Received: from MW4PR04CA0326.namprd04.prod.outlook.com (2603:10b6:303:82::31) by SJ1PR12MB6052.namprd12.prod.outlook.com (2603:10b6:a03:489::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7875.20; Fri, 16 Aug 2024 15:43:58 +0000 Received: from MWH0EPF000A6733.namprd04.prod.outlook.com (2603:10b6:303:82:cafe::4a) by MW4PR04CA0326.outlook.office365.com (2603:10b6:303:82::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7875.20 via Frontend Transport; Fri, 16 Aug 2024 15:43: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 MWH0EPF000A6733.mail.protection.outlook.com (10.167.249.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7849.8 via Frontend Transport; Fri, 16 Aug 2024 15:43:58 +0000 Received: from purico-ed03host.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.39; Fri, 16 Aug 2024 10:43:54 -0500 From: Suravee Suthikulpanit To: , CC: , , , , , , , Suravee Suthikulpanit Subject: [PATCH 1/2] iommu/amd: Introduce struct gcr3_tbl_info.giov Date: Fri, 16 Aug 2024 15:43:30 +0000 Message-ID: <20240816154331.5003-2-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240816154331.5003-1-suravee.suthikulpanit@amd.com> References: <20240816154331.5003-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: MWH0EPF000A6733:EE_|SJ1PR12MB6052:EE_ X-MS-Office365-Filtering-Correlation-Id: 0e360eef-2711-40f2-3673-08dcbe0a3e77 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700013|376014|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?XtYvamNWbZW86LeW+CCCWLfntsDx2ULn7QLub0X1pOsfkZzm6tTdWyzu61oK?= =?us-ascii?Q?BgWQKcI2SutVt4sNt67HAf6bf0R60pNN03Jtr1OXkVf5GoP3xlOHXn54kZFV?= =?us-ascii?Q?W9oyaUeDjxnQluuO9QtcDKjvCnDWld3AxzFW9lTL32Zf3MX5bMFWVKiC61pK?= =?us-ascii?Q?VcxVYKXaguGm3O9Y8JlrLhTmHx1sHbbuNMBXrODSkOi/5mjKAldTE31ebeFj?= =?us-ascii?Q?DC/S22IC+LmgraNqBGbJlBJRIOgBFH09sXD7ZfTFpsP6ZhaUvjzvC88sRhL6?= =?us-ascii?Q?ilwXefBLPejflALZyGdlEHLjDpfShA8aqf0CWd2IKKUq0mWhiMuICgUpE4ix?= =?us-ascii?Q?ZVfMw661nkR/M8TA4lqvX1xw5XtHs4ChzAFVaE/HyeWcUlhIKKG565Eppelv?= =?us-ascii?Q?oSVnyZr4f5QawfMdKXINIyJZSo5yjqdCMM7dGudELwfz1JdUy+d5QsJBX8Mz?= =?us-ascii?Q?mx8YaFpRD0CnXzDr6GeyS9JTq3L8K8mkWDiDmtNSQteOC5YuOAauI/qqW2wY?= =?us-ascii?Q?HyYjAkeSLpoPymE31QEC7BZknTCaBH4DViz7MRXokSq8Gbz6WdYvfhA6yFRk?= =?us-ascii?Q?wNO9UuuSQ6/Lke+iLV/IocCz9570Wnzo1/YCtXGmgSTwD04A17ufuEH6eCww?= =?us-ascii?Q?wHM64z9PfJsfZeAYMsAAt/jVEZ0rN8wbVlA0RSmwQu/rGZ1MB7MaIaJ1PP/E?= =?us-ascii?Q?iXU4wIaogbB7fBBG3h9BNV3aFnZOGXkr1FxhdFrTR2SlOaigg9+LficdQ7aa?= =?us-ascii?Q?xPFSoyaZ26asrQmAh9NVBdtxIzUHfkYpOWeFx6vgcKTp7Wyc2qJ2GWBoFips?= =?us-ascii?Q?QpLAvAsHdf+1WNExgXpuoa675CsYSvC2gYOF91/oLLe9+1tQg8Kj7ujwlT6d?= =?us-ascii?Q?1yyzCxcfCCZRPAsAQIxrWinGGpFZ+O1mC9oQmQf6Gq/fbNWlCoH1JNwDzprg?= =?us-ascii?Q?yr6Kw9LmTWnb94f4+gH+0AArNKLY3pTuLdobNHbpKI2WEbKhk0XMByyEY5Xh?= =?us-ascii?Q?JQRCe7FmP50iHBYuS+IJEZq7G5mfRiRYalmyW6RzariJUV1Yj4wscAekpjUK?= =?us-ascii?Q?tVI47bvzJJ4qcWtl7My98sBN+0enB8mYrU3u9J6+BBlc3ff5nitdXs256IJc?= =?us-ascii?Q?7QGCtL2aBp1o09i/wYZiU6x+AjAAoSkJe+uU5OIAigP2KtaDg7LFuOp09Sf9?= =?us-ascii?Q?/G+0oofEcrfVy0qqo4BzUwsnO0f+d/jGYfgAz3MBHRwx3ux43OCessLOUH66?= =?us-ascii?Q?JEyMUVmTkmAzusyZ+B3ilEB/lKF8LrgCE5wP4LuTkElmfWjDiJa6WICWp6xo?= =?us-ascii?Q?2eROTD8wnnNSBCU3tnzy9lmhAkfcueIGuf5lw8Z0DyHCMaVq0xwlTa7+ap6I?= =?us-ascii?Q?po/J1weo/YtTUjnuponWQWisIFY3bNBQYdc0J5SdqpiHMuHP1PyKXGnOC1yU?= =?us-ascii?Q?QQU2QApAIGa7oS2MR+NbJtqpgx8cXQlU?= 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:(13230040)(1800799024)(36860700013)(376014)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Aug 2024 15:43:58.4843 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0e360eef-2711-40f2-3673-08dcbe0a3e77 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: MWH0EPF000A6733.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR12MB6052 Content-Type: text/plain; charset="utf-8" To track DTE[GIOV] programming during IOMMU domain attach, also add logic to determine if the GIOV is required, and set the variable accordinglly. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu_types.h | 1 + drivers/iommu/amd/iommu.c | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_io= mmu_types.h index 2b76b5dedc1d..9be761ba0214 100644 --- a/drivers/iommu/amd/amd_iommu_types.h +++ b/drivers/iommu/amd/amd_iommu_types.h @@ -544,6 +544,7 @@ struct gcr3_tbl_info { int glx; /* Number of levels for GCR3 table */ u32 pasid_cnt; /* Track attached PASIDs */ u16 domid; /* Per device domain ID */ + bool giov; /* Track DTE[GIOV] */ }; =20 struct amd_io_pgtable { diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 87c5385ce3f2..4667b6c4906f 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -2011,6 +2011,16 @@ static int init_gcr3_table(struct iommu_dev_data *de= v_data, if (ret) free_gcr3_table(&dev_data->gcr3_info); =20 + if (!ret) { + /* + * GIOV is required for PD_MODE_V2 because we need + * to support the case where the end-point device + * does not have PASID in the TLP prefix when setting + * up to use the v2 table. + */ + dev_data->gcr3_info.giov =3D true; + } + return ret; } =20 --=20 2.34.1 From nobody Sat Feb 7 18:20:31 2026 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on2043.outbound.protection.outlook.com [40.107.212.43]) (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 DEBB71BDAB3 for ; Fri, 16 Aug 2024 15:44:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.212.43 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723823050; cv=fail; b=TKxuOrjnd6V+cPy38Ia1pPyOeIZ4sBgnrZyYlpWkgwoOpePoRlLC7MIbYC9ZoIPX3iy3NHlfCvEqjljR9cDgYuQNQsXxdlJFHR61eqnJtVsXV0VeqJJe0FZazIyssy2Z2we2Qx1wZ5DzOPnMQEVLFUOmb8kQBzW26g/Y/xymXu8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723823050; c=relaxed/simple; bh=JELhRd9QSrIkuxEqKqWgkG+SkJi3xVWPH2/tGUfyL8Q=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=MII5NFS89XdYE5FEZ9HOX9P9TXU3sdD94BkjnsSkE4JQzaazP0hv8uY7Q/6RrvyJzwXIubVFojHSA/21xxSpc3Ems4MATJ6zg6Vm1henqukKrr2pP6PuXtWaWNOqcx+1Ho2LS9Hkx+LRe4zoykTlncxrLzzoC8X1CcIjQtcTGEI= 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=2oyeo8w5; arc=fail smtp.client-ip=40.107.212.43 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="2oyeo8w5" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BwJLX761MQEvgpQmxTI3vDTMk7wuOvUeXS6/A95oJm1DRqT5hmwnyckQ0r9v+6YTiZBBzFZC9dZMJ8CPeE2yF8QiGiHHPB4TnDhaPoE2UmzgL+W4dscK3wtMD551TqrYYFiCQ/7wcZw0IDC09GeY3xpV1zbBYGRTDZcnws00NHY4suXcYpLZVieqIo0XlSC1EhnnVZ6H1ZaYMFgWw1AZmj+x5kDJLBr1NKMsL90FiqaWEPi76SoBU84EQvs/bXjsNoKnzn4JMNkKRcMhmq4y+Xfr64fnM1ZH//CehneHh6xqfnsJ+Y4e2B35lLQdFQJRT1r5E/lzH4bTxNL+N6clrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=40gJ53B/ZJu0TsgYOR4Naa8eA81os0MWIjTu5HPrisY=; b=Jtm/ZS8m5epxFoE8r6awgd1xroKI4Nhzjng7gBWru5Efhcho+Y3nT06+yFYds7h9t/yQ+PiWXuTSxWdPZBhH7QYK0fTmR9j6ULBl6aXKHy5D1F0z/QpOt7HgWREn0b6Hci9YqEsh9RryadICynH5A2ge+3lV7uoLRWFOf/OXwJqAzpO4prQl3DyxPma1JKIEhRALcTlFE379sgTKkitamDg85QovpAQCk9bRs8QrIDB/yErNVV64pX5X4ay0zU7JMsci1x2C3mP18qiR3d2azo0/Cu6vFSZ1ooqU8stZrUW0tnpZwhMEX3TKdONUoV4jR3qVj4aMPAjNSnf9XqljHA== 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=40gJ53B/ZJu0TsgYOR4Naa8eA81os0MWIjTu5HPrisY=; b=2oyeo8w5WAA/bT2YMhfl/8lmaACE8N0EPf4XYE7uke5NIIisRl4zAId1cSuMhA7wE23XzhPpYX39JwFek+QRTjEQfpDNhCMiiOb2Wdo/y1d7PeSKYTyWbZUuoZHH2lqKPoWmTYmqAIiTD/5AZdMUm6NE4pm3oViYHHR1hHWKyog= Received: from PH0PR07CA0034.namprd07.prod.outlook.com (2603:10b6:510:e::9) by DS0PR12MB6560.namprd12.prod.outlook.com (2603:10b6:8:d0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7875.19; Fri, 16 Aug 2024 15:44:02 +0000 Received: from MWH0EPF000A6732.namprd04.prod.outlook.com (2603:10b6:510:e:cafe::88) by PH0PR07CA0034.outlook.office365.com (2603:10b6:510:e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7849.24 via Frontend Transport; Fri, 16 Aug 2024 15:44:02 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by MWH0EPF000A6732.mail.protection.outlook.com (10.167.249.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7849.8 via Frontend Transport; Fri, 16 Aug 2024 15:44:01 +0000 Received: from purico-ed03host.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.39; Fri, 16 Aug 2024 10:43:57 -0500 From: Suravee Suthikulpanit To: , CC: , , , , , , , Suravee Suthikulpanit Subject: [PATCH 2/2] iommu/amd: Refactor set_dte_entry to simplify GCR3 Table Root Pointer programming Date: Fri, 16 Aug 2024 15:43:31 +0000 Message-ID: <20240816154331.5003-3-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240816154331.5003-1-suravee.suthikulpanit@amd.com> References: <20240816154331.5003-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: MWH0EPF000A6732:EE_|DS0PR12MB6560:EE_ X-MS-Office365-Filtering-Correlation-Id: d1a8cccd-9173-4722-8b4b-08dcbe0a4068 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|82310400026|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ScKrp2jtLqkfwY7uPgjiiY9Z/XatIFGtUxVV7WtASV8OxEzD4LId+IO5M8le?= =?us-ascii?Q?Dxi+6DjLTt3sPfHaSogEH/nyhh2qquhAsTL2amJNdCZzlOfoH4BhJiLFNT0r?= =?us-ascii?Q?Zx+hAfDsIXIlRfLWkqEZQ77SnXvsZgs3NzfNmWElSA8nA3lo/mXH5accBw96?= =?us-ascii?Q?yEJaA9I+J2E1JKHHnuF6oD5wqy+HnlrF96cYkTtEMCmnTpv25/B+fDHsd7He?= =?us-ascii?Q?58Uqq/Sm2xTQQmMtJnrrVf7UcjCM7wThIl9KteahCjuirQnneRBArzKYw8DQ?= =?us-ascii?Q?nq7VM/TIM0Bs92zErcvG02bpU83yc9sJR5wLiYzb4kTToQF4cAPUxvczq3vi?= =?us-ascii?Q?wx4HBcPYDdj8sDz9HwOEbqEaOabBMNI6vIhalMU7jLU4junVZDdawGWIX+lx?= =?us-ascii?Q?9ai+Fn9Gc6Hw3BszpnHAonnBHxAV+NxXA5MsLBt5aojKiL4kt0Lh/mXNsQ41?= =?us-ascii?Q?7xZc1GUFqw9HiYZZ5m6Uc3kiPp0XrR05A8xPF62cyVXsX1YNEfMc+j+DJezn?= =?us-ascii?Q?4DlTe9F6kitgItUXcOplPn1eGHhzQZfLxII7GQeUrKpvJ92jOYRKM7zM0gda?= =?us-ascii?Q?kQOHVSeOamd2oDuxbNrvNq8ptBnM/rBpROHKlgQ0EEWZs+uytxbTa43kJqky?= =?us-ascii?Q?DBb1I9sbCsvjvNQTWRP6A861hcjvZC9FTsjfC8zOcc/Nb+kBp3uPbNdIfkDf?= =?us-ascii?Q?7hy5sZZB7CXkdzx+yL2LbmMWboCe3ENlc5tjwhRxhdWcNtHxvf+ftJxPuMSd?= =?us-ascii?Q?MVNoPZkiKtrcvVXxOVMVAewY9y1jgN4yuLqUGiryeZxcu8zsEgG7b86/AJS5?= =?us-ascii?Q?fhGEtIWC3Q2yz5B8whYh9DhRbAU9Gw3F0dCz0hhoTfNKC1l7r1PWD/NlPqkC?= =?us-ascii?Q?ReSJgpk3vzT6hIRxpzh8JvluuluAsV13B7LT9v8pQaJHLTpgUjPgQXPifGzy?= =?us-ascii?Q?3jG865c6K5VHigvTzkwz9bdp47xtTxOISnvDCB8oq/SHuJ4T1KWlJf541o8v?= =?us-ascii?Q?nnH0rz8fnQxz+0u+ch19cnUoh9n7UFcvne/0ISDah0mx4VWimVPSn5ipD8Aj?= =?us-ascii?Q?2yiC+kTh+mkhl2e5eQO5NIhUTqG5gnXTvoomGbwuaApYp20z4xV9Y2bqYo6/?= =?us-ascii?Q?aHikLQQnjgAW453AU6olpqUNiQqAu4jrRVWFCs/lLVlVr+bsCrHnaWS+n0Y+?= =?us-ascii?Q?gAtmRbUGPptw+84iJu5HjfzilReoCX27GUAeFIJGSkhH9OJ58KEVvkC36hST?= =?us-ascii?Q?Gf4rD/NFebNPZg5m4Uc5vfnokY7KUwHn57N3ba0pDTjkZXr+GNGQJt27GXb4?= =?us-ascii?Q?rhYrixisyqzt5jJ279a2XT1eJDx/t9QfSqe4ua6Lu6TaIvRZdd2Aszb9BArC?= =?us-ascii?Q?vT3wUGvTKi9FffFzpfCzxTy3pgzSrx5ojxN78WJJvaeKMdcob4LQgh2CIlZd?= =?us-ascii?Q?LMfYnGMC0ZiGt+D/AKK5DGznsei9M1ls?= 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:(13230040)(36860700013)(1800799024)(82310400026)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Aug 2024 15:44:01.7436 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d1a8cccd-9173-4722-8b4b-08dcbe0a4068 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: MWH0EPF000A6732.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB6560 Content-Type: text/plain; charset="utf-8" Separate logic for setting DTE[GCR3 Table Root Pointer] into a helper function set_dte_gcr3_table(). Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/iommu.c | 121 +++++++++++++++++++++----------------- 1 file changed, 68 insertions(+), 53 deletions(-) diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 4667b6c4906f..8fc496db5560 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -1851,90 +1851,105 @@ int amd_iommu_clear_gcr3(struct iommu_dev_data *de= v_data, ioasid_t pasid) return ret; } =20 +static void set_dte_gcr3_table(struct amd_iommu *iommu, + struct iommu_dev_data *dev_data, + struct dev_table_entry *target) +{ + struct gcr3_tbl_info *gcr3_info =3D &dev_data->gcr3_info; + u64 tmp, gcr3; + + if (!gcr3_info->gcr3_tbl) + return; + + pr_debug("%s: devid=3D%#x, glx=3D%#x, giov=3D%#x, gcr3_tbl=3D%#llx\n", + __func__, dev_data->devid, gcr3_info->glx, gcr3_info->giov, + (unsigned long long)gcr3_info->gcr3_tbl); + + tmp =3D gcr3_info->glx; + target->data[0] |=3D (tmp & DTE_GLX_MASK) << DTE_GLX_SHIFT; + if (gcr3_info->giov) + target->data[0] |=3D DTE_FLAG_GIOV; + target->data[0] |=3D DTE_FLAG_GV; + + /* First mask out possible old values for GCR3 table */ + tmp =3D DTE_GCR3_VAL_A(~0ULL) << DTE_GCR3_SHIFT_A; + target->data[0] &=3D ~tmp; + tmp =3D DTE_GCR3_VAL_B(~0ULL) << DTE_GCR3_SHIFT_B; + tmp |=3D DTE_GCR3_VAL_C(~0ULL) << DTE_GCR3_SHIFT_C; + target->data[1] &=3D ~tmp; + + gcr3 =3D iommu_virt_to_phys(gcr3_info->gcr3_tbl); + + /* Encode GCR3 table into DTE */ + tmp =3D DTE_GCR3_VAL_A(gcr3) << DTE_GCR3_SHIFT_A; + target->data[0] |=3D tmp; + tmp =3D DTE_GCR3_VAL_B(gcr3) << DTE_GCR3_SHIFT_B; + tmp |=3D DTE_GCR3_VAL_C(gcr3) << DTE_GCR3_SHIFT_C; + target->data[1] |=3D tmp; + + /* Use system default */ + tmp =3D amd_iommu_gpt_level; + + /* Mask out old values for GuestPagingMode */ + target->data[2] &=3D ~(0x3ULL << DTE_GPT_LEVEL_SHIFT); + target->data[2] |=3D (tmp << DTE_GPT_LEVEL_SHIFT); +} + static void set_dte_entry(struct amd_iommu *iommu, struct iommu_dev_data *dev_data) { - u64 pte_root =3D 0; - u64 flags =3D 0; - u32 old_domid; - u16 devid =3D dev_data->devid; u16 domid; + u16 devid =3D dev_data->devid; struct protection_domain *domain =3D dev_data->domain; + struct dev_table_entry target =3D {.data =3D {0, 0, 0, 0}}; struct dev_table_entry *dev_table =3D get_dev_table(iommu); struct gcr3_tbl_info *gcr3_info =3D &dev_data->gcr3_info; + u32 old_domid =3D dev_table[devid].data[1] & DEV_DOMID_MASK; =20 - if (gcr3_info && gcr3_info->gcr3_tbl) + if (gcr3_info->gcr3_tbl) domid =3D dev_data->gcr3_info.domid; else domid =3D domain->id; =20 + /* + * Need to get the current value in dte[1,2] because they contain + * interrupt-remapping settings, which has been programmed earlier. + */ + target.data[1] =3D dev_table[devid].data[1]; + target.data[2] =3D dev_table[devid].data[2]; + if (domain->iop.mode !=3D PAGE_MODE_NONE) - pte_root =3D iommu_virt_to_phys(domain->iop.root); + target.data[0] =3D iommu_virt_to_phys(domain->iop.root); =20 - pte_root |=3D (domain->iop.mode & DEV_ENTRY_MODE_MASK) + target.data[0] |=3D (domain->iop.mode & DEV_ENTRY_MODE_MASK) << DEV_ENTRY_MODE_SHIFT; =20 - pte_root |=3D DTE_FLAG_IR | DTE_FLAG_IW | DTE_FLAG_V; + target.data[0] |=3D DTE_FLAG_IR | DTE_FLAG_IW | DTE_FLAG_V; =20 /* * When SNP is enabled, Only set TV bit when IOMMU * page translation is in use. */ if (!amd_iommu_snp_en || (domid !=3D 0)) - pte_root |=3D DTE_FLAG_TV; - - flags =3D dev_table[devid].data[1]; + target.data[0] |=3D DTE_FLAG_TV; =20 if (dev_data->ats_enabled) - flags |=3D DTE_FLAG_IOTLB; + target.data[1] |=3D DTE_FLAG_IOTLB; =20 if (dev_data->ppr) - pte_root |=3D 1ULL << DEV_ENTRY_PPR; + target.data[0] |=3D 1ULL << DEV_ENTRY_PPR; =20 if (domain->dirty_tracking) - pte_root |=3D DTE_FLAG_HAD; - - if (gcr3_info && gcr3_info->gcr3_tbl) { - u64 gcr3 =3D iommu_virt_to_phys(gcr3_info->gcr3_tbl); - u64 glx =3D gcr3_info->glx; - u64 tmp; - - pte_root |=3D DTE_FLAG_GV; - pte_root |=3D (glx & DTE_GLX_MASK) << DTE_GLX_SHIFT; - - /* First mask out possible old values for GCR3 table */ - tmp =3D DTE_GCR3_VAL_B(~0ULL) << DTE_GCR3_SHIFT_B; - flags &=3D ~tmp; + target.data[0] |=3D DTE_FLAG_HAD; =20 - tmp =3D DTE_GCR3_VAL_C(~0ULL) << DTE_GCR3_SHIFT_C; - flags &=3D ~tmp; - - /* Encode GCR3 table into DTE */ - tmp =3D DTE_GCR3_VAL_A(gcr3) << DTE_GCR3_SHIFT_A; - pte_root |=3D tmp; - - tmp =3D DTE_GCR3_VAL_B(gcr3) << DTE_GCR3_SHIFT_B; - flags |=3D tmp; - - tmp =3D DTE_GCR3_VAL_C(gcr3) << DTE_GCR3_SHIFT_C; - flags |=3D tmp; - - if (amd_iommu_gpt_level =3D=3D PAGE_MODE_5_LEVEL) { - dev_table[devid].data[2] |=3D - ((u64)GUEST_PGTABLE_5_LEVEL << DTE_GPT_LEVEL_SHIFT); - } - - /* GIOV is supported with V2 page table mode only */ - if (pdom_is_v2_pgtbl_mode(domain)) - pte_root |=3D DTE_FLAG_GIOV; - } + target.data[1] &=3D ~DEV_DOMID_MASK; + target.data[1] |=3D domid; =20 - flags &=3D ~DEV_DOMID_MASK; - flags |=3D domid; + set_dte_gcr3_table(iommu, dev_data, &target); =20 - old_domid =3D dev_table[devid].data[1] & DEV_DOMID_MASK; - dev_table[devid].data[1] =3D flags; - dev_table[devid].data[0] =3D pte_root; + dev_table[devid].data[0] =3D target.data[0]; + dev_table[devid].data[1] =3D target.data[1]; + dev_table[devid].data[2] =3D target.data[2]; =20 /* * A kdump kernel might be replacing a domain ID that was copied from --=20 2.34.1