From nobody Fri Oct 10 17:26:53 2025 Received: from SJ2PR03CU002.outbound.protection.outlook.com (mail-westusazon11023120.outbound.protection.outlook.com [52.101.44.120]) (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 EB6CA239086; Thu, 12 Jun 2025 23:13:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.44.120 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749770026; cv=fail; b=l+bYdg9xtPmMTbWdH8/WdO0AB0WWXQpEI5Q4LSFnKQvxlQdrCxefO4y090aSw90GI7cIfttrKNxO2IJgupxHtxlTpsdz3wr5rlTd/D9WK/kK647fJ2N6pIMA5s5kQbfvxOTR1HCnNHBVBpxfyQJCQDm43MisNwFuBehK8fM1xec= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749770026; c=relaxed/simple; bh=QM1UNGN060DdhZ7pRrT+W2lh5wby0/k2Am5el3qMIFo=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=tTNYCOen/Ithyx58GAsW2D1rBcIu4tAGIr2enPV8CePK4+uU9xxWyyqvmnvqBQoly7GOnFrX6w49oF3ajVE4lJYu6jQgj5D5rtbhC+jrHTfflt42n/rP4X/9B9OPxCsl4lTfHb6skN80SSB71dM4+3KoXNspAtGwxfbAAGCK3+8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com; spf=pass smtp.mailfrom=os.amperecomputing.com; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b=B9B+/EOF; arc=fail smtp.client-ip=52.101.44.120 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b="B9B+/EOF" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CkczjY7iOpkcE48+nyNeyQRbL4a14v7mnG30Oav99+2kQnBD8Yq/k3SJN0rCXj29iMGVJdQwXa889x84mbc9wKLtt77v+OFG88DDAKxaYDxcOlQCh1SznCs7zZIUb/TmgO0su+Q2Pn/ReTslhmwe+ycjB99U8vgWSJmmjCwNUo1QJipqPsuzizbw+rkzBpKTKo35ajFYuuUctaUlzKjXIAvCwZ00Os3i6xdM5ujI5n9HTBGkoLwT8bea0n3pcQfIwQbiO7AnjQp2R4NU1T7CdA+KWr+kDiu0LXRM30Srv/m6Y5EoZPxSmN1LhHs8BoM3c+AIC3n+vxOHkruXPU0yFg== 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=QtJFPzhU6u8qB61le+DYlFjq16maaIcIziuy9WWYJKQ=; b=fNJn088L7ydQRRE5fjlOhIjf7WzZiMG/iteFAAKmkvvF/hOnBSTo/olcVmeHVoGLPy2rEengFT8RbzTVPXysF6/fRs7WhERFvudAWe9ZfTItr4bmn/UG1BXJrweX6saBhLaot+PhHKvePF7zezwWJsKuLOGYP3jhMQExl0N72eQYHb5gc0AEY8DnnJ0mdCsD3OKKn/lIl7MAweZplK/jA9T9FBCyhdJjCH9+5XQHHxuwbZmMFEVY9W9T7I7M7wYj+R+koDZzLZhA6Y6x3vXCWpayclvEEUkmjJe4Z3bFyjAqKpovof6mAhZ61Tx8v/EMjVj8XZC0gXnkv6lNW6ic/Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QtJFPzhU6u8qB61le+DYlFjq16maaIcIziuy9WWYJKQ=; b=B9B+/EOFAtSoUwYZLT7mbDHwxxI5ozQQYlvLT3aF5pCUj8+/CgaV68K/pQ9/65EO1tP3kcJcNT1k/AclGg6eGC4mLuezqDa78/mee7pK01V4R+v8cfuUFGIEBo2hiZAlhMhdBo2EQHD3QlvfIORI8KUFEs02SFadJqX1EPuCRZs= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; Received: from SN7PR01MB7903.prod.exchangelabs.com (2603:10b6:806:34f::17) by DS7PR01MB9364.prod.exchangelabs.com (2603:10b6:8:24f::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.19; Thu, 12 Jun 2025 23:13:42 +0000 Received: from SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f]) by SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f%7]) with mapi id 15.20.8835.019; Thu, 12 Jun 2025 23:13:42 +0000 From: Zaid Alali To: rafael@kernel.org, lenb@kernel.org, james.morse@arm.com, tony.luck@intel.com, bp@alien8.de, kees@kernel.org, gustavoars@kernel.org, zaidal@os.amperecomputing.com, Jonathan.Cameron@huawei.com, sudeep.holla@arm.com, jonathanh@nvidia.com, u.kleine-koenig@baylibre.com, dan.carpenter@linaro.org, viro@zeniv.linux.org.uk, ira.weiny@intel.com, alison.schofield@intel.com, dan.j.williams@intel.com, gregkh@linuxfoundation.org, peterz@infradead.org, dave.jiang@intel.com, Benjamin.Cheatham@amd.com, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: [PATCH v9 1/7] ACPI: APEI: EINJ: Fix kernel test sparse warnings Date: Thu, 12 Jun 2025 16:13:21 -0700 Message-ID: <20250612231327.84360-2-zaidal@os.amperecomputing.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250612231327.84360-1-zaidal@os.amperecomputing.com> References: <20250612231327.84360-1-zaidal@os.amperecomputing.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4P223CA0030.NAMP223.PROD.OUTLOOK.COM (2603:10b6:303:80::35) To SN7PR01MB7903.prod.exchangelabs.com (2603:10b6:806:34f::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN7PR01MB7903:EE_|DS7PR01MB9364:EE_ X-MS-Office365-Filtering-Correlation-Id: eb97100d-6d53-4bce-fa22-08ddaa06c592 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|1800799024|7416014|376014|366016|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ViorSQRkf/CWpuA6UMV53bvSczSxA6xty3zfvmi44hywBk33XRc7jALTVybr?= =?us-ascii?Q?57rWzkABNPf2xTseuVf3lUdSLgeZ+ItT1zZg9C6x3qS2cAbLmkyPimVcht9C?= =?us-ascii?Q?HSAlEMpygbtRzbGBOcT9w0HwrlumaCmkknbp6kzYGBsIQj/kRgcbUkiE+ann?= =?us-ascii?Q?XET46NWk91iK9Vk2o23ahIEszRQMFSHzC6wFrplLEyKzmWcXcCpnc4dg02v6?= =?us-ascii?Q?FRCGV+HiJqUvYncqtSkRl32NDBdMakkiOIWNpBzqEz9XCUbiqNeWLWFmkQOx?= =?us-ascii?Q?1LlCz1RNTtgD5FaKBy/snn02LjhpW60tZ3wxoVsycRjgMUKSzHWfG+M6pkM3?= =?us-ascii?Q?uJpblU/HYHceM35BDBkocGvNtzXLb9GGRuv6ZPpEDP8yfUqkcUJnyIOpu7OF?= =?us-ascii?Q?vwR4y+5FEccqUIg6Ei+v/oWkDe+KWooTRserrntP3VZwowZhZWCj7AGmbV4X?= =?us-ascii?Q?lbY4btJUL1bVt5KMNn9P8Zv9cIOQQpzjM1nO/wFHPmVKJRwLh8ws/vuk+Wxy?= =?us-ascii?Q?JAq7lmFjdBMme290k6WIKBwlEpcl29rx5nPZPpvQfVOIZM/wH2pW+HdtsItb?= =?us-ascii?Q?xLzClHdRQH2eaO8FJd4PyYTfsZkMRjpbdF3rr1x7t6gCPcrdOLjdL8IvrABq?= =?us-ascii?Q?Q8Wwi/DXHzQbKGLi9UzwdsjGAcc76yCHlhQGvlkGiYRwlQkXyeo0Pc61dwM3?= =?us-ascii?Q?Ttfe5Mqn58m9MYp7SCbP/ut8HuCNJIoOFu2G16efEZo/KHm6OoXvIg+C1sXW?= =?us-ascii?Q?cABLJ3S5Hqa9a+g1FoDBxo7qRdlaYRtcnZC9nPbqsCXvMFlzAwcixUYPoeG6?= =?us-ascii?Q?Dy64Uzm/fGE0066eM3zyztFqBEdwJt1dmdBKTbW0xm81hgXfTkdBR10wMkzB?= =?us-ascii?Q?wa9sf/vsWmAS9knwjUiVnF+5TArrnooit0jFZ3TgxOZDLHZ5s5cmKq/aMTq0?= =?us-ascii?Q?9WPsR4CdhL/a12YrhXBwHLShpHeCfJ2JchEduJXTC8UyjXQOE17uXmZAPFZf?= =?us-ascii?Q?RpeZ3GH9I3x7DLXZtuWVQYUrrA4Mfu7qdbcQVIUkHlFzGhHZa4NEihJZO/hF?= =?us-ascii?Q?Mwe82Ji6oBJrxvSyFvVJYZifWvgig2QzhGV6Dhamo8y+X6008gfhgYxtB70n?= =?us-ascii?Q?fZuT0JDsblzD+qqJgGIpnKB9x4WCW1WIwqzyAW9GcVjX2M7hNdq62y73GwNI?= =?us-ascii?Q?VWt0nRF5qbKZL3J+bLJsxYuLBHH2M9+FPIN4j0EUUGPfZ0ufvTKz2BWRdrTA?= =?us-ascii?Q?aRw1yRRtdcTWMmBY0sbRdspXu+QxBbgppbbxwkQeqJNjrDU4O0uCrGCKOPGT?= =?us-ascii?Q?pYglkixDJTgF6ez4LSzyc7YvRS0KAca2NHNO1zFDYyaEPzg7Ua7mnwXAgUqh?= =?us-ascii?Q?5maabcw48fk/gozIqIHGOdCtq3NtdfJ6ct2eTYEUhyywWr0r/rcUMXbZ20wS?= =?us-ascii?Q?LlyxVjg78Lo0nGceutdTo/DAr39xX9uSQNtJCdxYwpRGmwiaUDhlMM+IHf4p?= =?us-ascii?Q?3WDGEsiFZf9oF/sbgT6bKapYUVbSEeefnCor?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR01MB7903.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(1800799024)(7416014)(376014)(366016)(38350700014)(921020);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Yn8H79ibKjN9HWZ01/WgVSdbg+5zfvHA5yC9X8czPW7YMqKPyhhwEjWPDWLn?= =?us-ascii?Q?z80b+ABEw4z19EQcoNtfGH6b4+oiYP+F2sUkvYLiqOG6gBQiIyuVD5txZj4o?= =?us-ascii?Q?SPr3KjdygmwF3itT59kkoFPP9/oQbcE6VUrpXxL5ouoeu/R96xqKBmeK1No9?= =?us-ascii?Q?6jZZ/HFp/LakNJ0Dw+y7thf59TW4WZF2tnjwxxTr4c88AU9xP99m4ZoP5SiI?= =?us-ascii?Q?2ejT6Td9AzVWpTOdNjzuMDJW6j0vjLKq1CNgFipInUzjoHMrslljHATOjf4K?= =?us-ascii?Q?/Eh7oVXJsYNvdZ1FQEsScqixA1R3w1YvA6+MQMvXj7tAkzgg96zpPmj2VejC?= =?us-ascii?Q?xhaoA2FlbdFdTAh5ngqJ4zYBdooH6N+pbAGrS3JaITipv3E+LgDgBv5q2485?= =?us-ascii?Q?KuXEsZ8ZkuAVdVxbZ/xAcTlXB4lSxOWf+PyJ9g3KOcW/c8yDdY2scjaLgmvr?= =?us-ascii?Q?axBF+Wtd5zET5EcLZpmUvkrWpEMy+Do/kSJhdj/SBkhWKa/M1+jh6ktqjk/R?= =?us-ascii?Q?76YL4E2HxL2YOuIIZ4nSIdVK8y0vcHxh2UeXR+MNDHIq0q+U64eFJ8w6uznN?= =?us-ascii?Q?2i8oLboXT+QrBWCtJiCLBolx4jbbTGFFMWqBop30nGTmjWSDVRTfAgVq1tYC?= =?us-ascii?Q?u8X2X9L8T7+8Fk5NcmtR4Bh9I8TfiRmqHOOKPjD+w41vI3Y8omrveDOZd7kj?= =?us-ascii?Q?3rraOvvjn38OuHyafLndwHLXbjolUvYZp0YOuwRRjh8sS3mfHth//5AzxAxw?= =?us-ascii?Q?CbMEt97LebPza1fo36qM9rhCl2XiO9jKtRaCrtEtMA+x/kSE8fpYEU0yiNyS?= =?us-ascii?Q?+lOP5RKToiZduQx586tyurlyWCDvn1i7suKcrYNdGwE0F/EI7SptJXpleHln?= =?us-ascii?Q?qEzO3DMOV9sTNylsNXZ53j5QDIOIKDt3RNwyiceSYUv6LkfpMt7MfZYRAZHe?= =?us-ascii?Q?cly2cX6B8EGRDa54InSS7Jkhlyu5FXc9D4nu88Zf+bYNeuQvOlLE7+W5r5Br?= =?us-ascii?Q?Yd1TuZtGBW2CKQ6aVr3pC6i7CVTTC/s4COBk11tQK378sdTlTVtCcjvWWzOM?= =?us-ascii?Q?PzeGbvXQSHmrhEUYNYesaCQCG+U+DA8Cvd4UmeUlUPLvo7fde0lzp6vySXRJ?= =?us-ascii?Q?nv5b5VhUeLgImA+9NXdsRpD23pLyH60IusYIfnc1s9/j1yZA1nNTGLtHSMyD?= =?us-ascii?Q?EX8PmGiKKOs9VTkgRnogMq2e1xefs8S5zSkdeyylR3ORCzeKhvmunb/w13cB?= =?us-ascii?Q?Jp0p5Xhhv6D/iGI0H0bTqWany1o9fiitET0NYJt60rha66rLxXwsZDF+BXo1?= =?us-ascii?Q?dq6RZwmyUdWcntM5kwJT4gFUkdVVm16rEp0UCeqjhXJqTcNr6Te3PkBG8KUH?= =?us-ascii?Q?UviCArkHvojkNXarHHsgcOkUf+V2b/TjStLM3btrum9dbSRGjDE1yvfzoPws?= =?us-ascii?Q?fhGY9t4EliacwX3AekvIBulH9au75VLnMeiyFHIGhcw/WkKnYlm3K8Nzohmb?= =?us-ascii?Q?TR+ZXRenUl0F5C0XWfGhKeWOhhXlg9H1vi4vsXSnNJedbktI/XFONbzAm8+0?= =?us-ascii?Q?2YOh9anpRpIpqLedWdTy1+RArUVDu+WkS7wAOmuRmUQcgqz17HPURtFK4PPJ?= =?us-ascii?Q?rD4BdyMcBJdfDlxXRq9wrg0=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: eb97100d-6d53-4bce-fa22-08ddaa06c592 X-MS-Exchange-CrossTenant-AuthSource: SN7PR01MB7903.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 23:13:41.9556 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Kc6RnUWWzHO8xgd8XxGVG9YH6FJRwTABe+Wa6vStLid/qPClpq77sz7Ait+UEDJ3cArhVqxAFI85i/HM+E7IxrnLuudpx1+auLjbcHX6Fa8C6und7+7e4sUEH+wZZRKo X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR01MB9364 Content-Type: text/plain; charset="utf-8" This patch fixes the kernel test robot warning reported here: Link: https://lore.kernel.org/all/202410241620.oApALow5-lkp@intel.com/ Use pointers annotated with the __iomem marker for all iomem map calls, and creates a local copy of the mapped IO memory for future access in the code. memcpy_fromio() and memcpy_toio() are used to read/write data from/to mapped IO memory. Reviewed-by: Ira Weiny Reviewed-by: Jonathan Cameron Reviewed-by: Tony Luck Signed-off-by: Zaid Alali --- drivers/acpi/apei/einj-core.c | 106 +++++++++++++++++++--------------- 1 file changed, 60 insertions(+), 46 deletions(-) diff --git a/drivers/acpi/apei/einj-core.c b/drivers/acpi/apei/einj-core.c index fea11a35eea3..b9cdd3e44855 100644 --- a/drivers/acpi/apei/einj-core.c +++ b/drivers/acpi/apei/einj-core.c @@ -151,7 +151,7 @@ static DEFINE_MUTEX(einj_mutex); */ bool einj_initialized __ro_after_init; =20 -static void *einj_param; +static void __iomem *einj_param; =20 static void einj_exec_ctx_init(struct apei_exec_context *ctx) { @@ -216,24 +216,26 @@ static void check_vendor_extension(u64 paddr, struct set_error_type_with_address *v5param) { int offset =3D v5param->vendor_extension; - struct vendor_error_type_extension *v; + struct vendor_error_type_extension v; + struct vendor_error_type_extension __iomem *p; u32 sbdf; =20 if (!offset) return; - v =3D acpi_os_map_iomem(paddr + offset, sizeof(*v)); - if (!v) + p =3D acpi_os_map_iomem(paddr + offset, sizeof(*p)); + if (!p) return; - get_oem_vendor_struct(paddr, offset, v); - sbdf =3D v->pcie_sbdf; + memcpy_fromio(&v, p, sizeof(v)); + get_oem_vendor_struct(paddr, offset, &v); + sbdf =3D v.pcie_sbdf; sprintf(vendor_dev, "%x:%x:%x.%x vendor_id=3D%x device_id=3D%x rev_id=3D%= x\n", sbdf >> 24, (sbdf >> 16) & 0xff, (sbdf >> 11) & 0x1f, (sbdf >> 8) & 0x7, - v->vendor_id, v->device_id, v->rev_id); - acpi_os_unmap_iomem(v, sizeof(*v)); + v.vendor_id, v.device_id, v.rev_id); + acpi_os_unmap_iomem(p, sizeof(v)); } =20 -static void *einj_get_parameter_address(void) +static void __iomem *einj_get_parameter_address(void) { int i; u64 pa_v4 =3D 0, pa_v5 =3D 0; @@ -254,26 +256,30 @@ static void *einj_get_parameter_address(void) entry++; } if (pa_v5) { - struct set_error_type_with_address *v5param; + struct set_error_type_with_address v5param; + struct set_error_type_with_address __iomem *p; =20 - v5param =3D acpi_os_map_iomem(pa_v5, sizeof(*v5param)); - if (v5param) { + p =3D acpi_os_map_iomem(pa_v5, sizeof(*p)); + if (p) { + memcpy_fromio(&v5param, p, sizeof(v5param)); acpi5 =3D 1; - check_vendor_extension(pa_v5, v5param); - return v5param; + check_vendor_extension(pa_v5, &v5param); + return p; } } if (param_extension && pa_v4) { - struct einj_parameter *v4param; + struct einj_parameter v4param; + struct einj_parameter __iomem *p; =20 - v4param =3D acpi_os_map_iomem(pa_v4, sizeof(*v4param)); - if (!v4param) + p =3D acpi_os_map_iomem(pa_v4, sizeof(*p)); + if (!p) return NULL; - if (v4param->reserved1 || v4param->reserved2) { - acpi_os_unmap_iomem(v4param, sizeof(*v4param)); + memcpy_fromio(&v4param, p, sizeof(v4param)); + if (v4param.reserved1 || v4param.reserved2) { + acpi_os_unmap_iomem(p, sizeof(v4param)); return NULL; } - return v4param; + return p; } =20 return NULL; @@ -319,7 +325,7 @@ static struct acpi_generic_address *einj_get_trigger_pa= rameter_region( static int __einj_error_trigger(u64 trigger_paddr, u32 type, u64 param1, u64 param2) { - struct acpi_einj_trigger *trigger_tab =3D NULL; + struct acpi_einj_trigger trigger_tab; struct apei_exec_context trigger_ctx; struct apei_resources trigger_resources; struct acpi_whea_header *trigger_entry; @@ -327,54 +333,57 @@ static int __einj_error_trigger(u64 trigger_paddr, u3= 2 type, u32 table_size; int rc =3D -EIO; struct acpi_generic_address *trigger_param_region =3D NULL; + struct acpi_einj_trigger __iomem *p; =20 - r =3D request_mem_region(trigger_paddr, sizeof(*trigger_tab), + r =3D request_mem_region(trigger_paddr, sizeof(trigger_tab), "APEI EINJ Trigger Table"); if (!r) { pr_err("Can not request [mem %#010llx-%#010llx] for Trigger table\n", (unsigned long long)trigger_paddr, (unsigned long long)trigger_paddr + - sizeof(*trigger_tab) - 1); + sizeof(trigger_tab) - 1); goto out; } - trigger_tab =3D ioremap_cache(trigger_paddr, sizeof(*trigger_tab)); - if (!trigger_tab) { + p =3D ioremap_cache(trigger_paddr, sizeof(*p)); + if (!p) { pr_err("Failed to map trigger table!\n"); goto out_rel_header; } - rc =3D einj_check_trigger_header(trigger_tab); + memcpy_fromio(&trigger_tab, p, sizeof(trigger_tab)); + rc =3D einj_check_trigger_header(&trigger_tab); if (rc) { pr_warn(FW_BUG "Invalid trigger error action table.\n"); goto out_rel_header; } =20 /* No action structures in the TRIGGER_ERROR table, nothing to do */ - if (!trigger_tab->entry_count) + if (!trigger_tab.entry_count) goto out_rel_header; =20 rc =3D -EIO; - table_size =3D trigger_tab->table_size; - r =3D request_mem_region(trigger_paddr + sizeof(*trigger_tab), - table_size - sizeof(*trigger_tab), + table_size =3D trigger_tab.table_size; + r =3D request_mem_region(trigger_paddr + sizeof(trigger_tab), + table_size - sizeof(trigger_tab), "APEI EINJ Trigger Table"); if (!r) { pr_err("Can not request [mem %#010llx-%#010llx] for Trigger Table Entry\= n", - (unsigned long long)trigger_paddr + sizeof(*trigger_tab), + (unsigned long long)trigger_paddr + sizeof(trigger_tab), (unsigned long long)trigger_paddr + table_size - 1); goto out_rel_header; } - iounmap(trigger_tab); - trigger_tab =3D ioremap_cache(trigger_paddr, table_size); - if (!trigger_tab) { + iounmap(p); + p =3D ioremap_cache(trigger_paddr, table_size); + if (!p) { pr_err("Failed to map trigger table!\n"); goto out_rel_entry; } + memcpy_fromio(&trigger_tab, p, sizeof(trigger_tab)); trigger_entry =3D (struct acpi_whea_header *) - ((char *)trigger_tab + sizeof(struct acpi_einj_trigger)); + ((char *)&trigger_tab + sizeof(struct acpi_einj_trigger)); apei_resources_init(&trigger_resources); apei_exec_ctx_init(&trigger_ctx, einj_ins_type, ARRAY_SIZE(einj_ins_type), - trigger_entry, trigger_tab->entry_count); + trigger_entry, trigger_tab.entry_count); rc =3D apei_exec_collect_resources(&trigger_ctx, &trigger_resources); if (rc) goto out_fini; @@ -392,7 +401,7 @@ static int __einj_error_trigger(u64 trigger_paddr, u32 = type, =20 apei_resources_init(&addr_resources); trigger_param_region =3D einj_get_trigger_parameter_region( - trigger_tab, param1, param2); + &trigger_tab, param1, param2); if (trigger_param_region) { rc =3D apei_resources_add(&addr_resources, trigger_param_region->address, @@ -421,13 +430,13 @@ static int __einj_error_trigger(u64 trigger_paddr, u3= 2 type, out_fini: apei_resources_fini(&trigger_resources); out_rel_entry: - release_mem_region(trigger_paddr + sizeof(*trigger_tab), - table_size - sizeof(*trigger_tab)); + release_mem_region(trigger_paddr + sizeof(trigger_tab), + table_size - sizeof(trigger_tab)); out_rel_header: - release_mem_region(trigger_paddr, sizeof(*trigger_tab)); + release_mem_region(trigger_paddr, sizeof(trigger_tab)); out: - if (trigger_tab) - iounmap(trigger_tab); + if (p) + iounmap(p); =20 return rc; } @@ -446,8 +455,10 @@ static int __einj_error_inject(u32 type, u32 flags, u6= 4 param1, u64 param2, return rc; apei_exec_ctx_set_input(&ctx, type); if (acpi5) { - struct set_error_type_with_address *v5param =3D einj_param; + struct set_error_type_with_address *v5param, v5_struct; =20 + v5param =3D &v5_struct; + memcpy_fromio(v5param, einj_param, sizeof(*v5param)); v5param->type =3D type; if (type & ACPI5_VENDOR_BIT) { switch (vendor_flags) { @@ -492,15 +503,18 @@ static int __einj_error_inject(u32 type, u32 flags, u= 64 param1, u64 param2, break; } } + memcpy_toio(einj_param, v5param, sizeof(*v5param)); } else { rc =3D apei_exec_run(&ctx, ACPI_EINJ_SET_ERROR_TYPE); if (rc) return rc; if (einj_param) { - struct einj_parameter *v4param =3D einj_param; + struct einj_parameter v4param; =20 - v4param->param1 =3D param1; - v4param->param2 =3D param2; + memcpy_fromio(&v4param, einj_param, sizeof(v4param)); + v4param.param1 =3D param1; + v4param.param2 =3D param2; + memcpy_toio(einj_param, &v4param, sizeof(v4param)); } } rc =3D apei_exec_run(&ctx, ACPI_EINJ_EXECUTE_OPERATION); --=20 2.43.0 From nobody Fri Oct 10 17:26:53 2025 Received: from SJ2PR03CU002.outbound.protection.outlook.com (mail-westusazon11023120.outbound.protection.outlook.com [52.101.44.120]) (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 DF9132DECD0; Thu, 12 Jun 2025 23:13:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.44.120 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749770028; cv=fail; b=cbAKQcGc0XqcIbXQEnSg+i8DoA3ekDeGFk9YPQ95iX7U8wezgwjCxws1Vdq/J/TvejVwrEm/r+hOHhD4BWWSotUsVWpN9FQpYKRHed7msCMOuCWUqLheLcNUD2q4tH+uayC9jwadq0x8Ck4BHrzuOzQicBvPRAD/vMj8MytzexI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749770028; c=relaxed/simple; bh=VE4XGtYRsUOe9f60ySOgDCJPtO+rS/KYrzEme4zvNCY=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=lezW6QvDWTAu7SytoKULAyDDzclSP5xcTaxLZ2B4OA8V+KCfhLwGomYZAaUb0z3SIs2cC0NbufDcwzG/Md/EsV34yi1IK5sYPYiwG2jf9AClIH5g7vRROhgym4fWHCyFl/pwmmbD0zNBKHhleWht7YYekQnKqvOyjgr829Ck3eA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com; spf=pass smtp.mailfrom=os.amperecomputing.com; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b=sQeFecMX; arc=fail smtp.client-ip=52.101.44.120 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b="sQeFecMX" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=X0aO6nRuOeM/WwUt6cl0u6+Dc/CIfpREAf2yPnvmW0sgUSNjkZv9MX12va7j7x7ch7EprXA2MZH6iZgGARQlOc67SVwAOGQvlJfoRM025NBBklBYJcU1z95sStPC0lH5I5cVROMCNw5/Ll09Sd4x83TiLo6yWgdHSYiv/siJyx+py1KfS9MbabxOjCgm/dZXx+Tbbpib+NIR270BUir3/bCMBXvGr+BfyhE3HK/W1XvHQ+CEAfkK/Mspql+tipvFfs5wIVaM4pmo7pNDZer1bhVfEP4B82B8N1vOPX/B76nEe3BxG/2rhdhSdlRoj+0prTOb/wwnOsiDltqeYTTmlQ== 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=0aV42x5o1xI2VHsjrdNiltl0pyAvBvPV48bTRuL7RrM=; b=NTCVcMem5pG9jWoFqn31GKPOpl4CuZSCH21Op+odEV8QKvMwt2cVIwi0H39840D/A6MHtH77DAEZ54zhSdqT9E+ybAKsgazl02MEmCcdgWCx3yE73LoBDyhXSanvil+OUjMveT9hOdRO2Bkgr2BWET51ncSZ8udFqW8rypv9OlT5KjTHVZh5zxT/1PxQ87UwWLxxXgT3uCPKRINAWcaVLnWhNmv5eN7C3RnbBAvLXL2/IV0GJ4Y4W0z3VvZ9aih3TQrimwqCuuLj0tWIIhQWM+4+2rlHWkzWMyxj1IEX2B9yVQCiuFoc/AZYwjwEJd0ZnG7x0IO/XMkAdbu/PLf16g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0aV42x5o1xI2VHsjrdNiltl0pyAvBvPV48bTRuL7RrM=; b=sQeFecMXlQ9PFdoMXWHhFZ8tXhZpW4GdCJphckOsrjC24EYFLMBCsSBEnYX9BzcYPiSO8S3vjdqRl8/HbbOkW0ZEZPwiaHVfuCLtxcd6nqPryXniTXUYmH6YPq07Vd08145ghE2iQq0kBktO6JrFMDPXXwDV86R7907EgLXj27E= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; Received: from SN7PR01MB7903.prod.exchangelabs.com (2603:10b6:806:34f::17) by DS7PR01MB9364.prod.exchangelabs.com (2603:10b6:8:24f::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.19; Thu, 12 Jun 2025 23:13:44 +0000 Received: from SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f]) by SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f%7]) with mapi id 15.20.8835.019; Thu, 12 Jun 2025 23:13:44 +0000 From: Zaid Alali To: rafael@kernel.org, lenb@kernel.org, james.morse@arm.com, tony.luck@intel.com, bp@alien8.de, kees@kernel.org, gustavoars@kernel.org, zaidal@os.amperecomputing.com, Jonathan.Cameron@huawei.com, sudeep.holla@arm.com, jonathanh@nvidia.com, u.kleine-koenig@baylibre.com, dan.carpenter@linaro.org, viro@zeniv.linux.org.uk, ira.weiny@intel.com, alison.schofield@intel.com, dan.j.williams@intel.com, gregkh@linuxfoundation.org, peterz@infradead.org, dave.jiang@intel.com, Benjamin.Cheatham@amd.com, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: [PATCH v9 2/7] ACPI: APEI: EINJ: Enable the discovery of EINJv2 capabilities Date: Thu, 12 Jun 2025 16:13:22 -0700 Message-ID: <20250612231327.84360-3-zaidal@os.amperecomputing.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250612231327.84360-1-zaidal@os.amperecomputing.com> References: <20250612231327.84360-1-zaidal@os.amperecomputing.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4P223CA0030.NAMP223.PROD.OUTLOOK.COM (2603:10b6:303:80::35) To SN7PR01MB7903.prod.exchangelabs.com (2603:10b6:806:34f::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN7PR01MB7903:EE_|DS7PR01MB9364:EE_ X-MS-Office365-Filtering-Correlation-Id: 76614012-4413-4db6-8b3c-08ddaa06c726 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|1800799024|7416014|376014|366016|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?pPAORS3aOan6smV/SDZJ/07bTHxE9R9Szu4PfHu+YPusyVNSs99AA9VE2Te6?= =?us-ascii?Q?oilVyIJ2+K5sTOK1q/QXRhLoVuYNqme1V2AAbqoPk7e8m49Par5133qCvlTg?= =?us-ascii?Q?BW7B2IMLkBANTMmyCIu21JXvmpaotXuQ9+CL1GbmspOeeTRh8REP+75qDkuv?= =?us-ascii?Q?69eGPUHr7imf10A+2TPzZj5zl24a5P9tB2dzXHGdzm1ugs7u3vRq6j09E/Hh?= =?us-ascii?Q?teJk2DEBL2jFNjhQiQimIxEQ+cRlOYQKtLqIpLzAY2K7AP4e15RO82hMcEvf?= =?us-ascii?Q?NBIq3+1rB+NeoW6bvw4rHKDUJr+5K8t2MoSohHgdiiUBrTKIuUNZ2aOskOGC?= =?us-ascii?Q?MHPYrLANuVzg17TwNwfIcZfXz+5cD5xu++RJE6FhHRf9FVIvRVwta3BrntQQ?= =?us-ascii?Q?yyaV65E2rth2lIzaL5Ixtvl8unutvjGvpsHgruK1gVc4l30v2LAAHHFYjUXK?= =?us-ascii?Q?Vimyb7Xbc/bYb96BoSWnFDwraK5fj/kO8O/j+aGYHpMVnLnMx7a1bRzBh+Ju?= =?us-ascii?Q?QYjz4crEjUeYkiAQpCzx9JvndTZe/M4rHwFmPNSgd4jYpLCBJfzChqZHEpzY?= =?us-ascii?Q?uLvzPpPCWPkc3ZBwvmJgwO+rln4JIXC2TDzjZBTIvrR8Ky0iQjOvYboXGXiM?= =?us-ascii?Q?0arvlj9sRQkRIZOQYXQanN+Muue54Zc1Ou8wTwTmyuroFJPbVIk3egLyO206?= =?us-ascii?Q?hGkmXfSdoVoIYBCsEIyCutdUVZibufHLxmxzMGvIA9rEj8Ncwls2wKDn41Xe?= =?us-ascii?Q?wkbYvx+q/Ba2HOCDE6m+VrXuiQllA0sqV++g4txX1U+rIclpgKcT97aoK8vL?= =?us-ascii?Q?iJCImKfti/uJEaah9WnYbdjwuf3Bbtl/S0RKRFoC5y+fw5hvXcyAbIcColaA?= =?us-ascii?Q?zoepMZlSgl2DWZWi6MRmOU0bS2ND3xfFtgQaiDmpEMjqLPkCG675SMvFHHLf?= =?us-ascii?Q?QSnF6mOPEsSa3KMvHgM/6ie9vGhp3OGdbJ8dVIgfyzSaC7JeUz+o5TUSvWbB?= =?us-ascii?Q?dCZ/TCKMVVCXpRBMi0oXQvp/XLCTokRAHEofpt9KsJo4YBuW6dobaZ1uswzI?= =?us-ascii?Q?Z6ZJhixgtEpGtTHv35Nw0tGmGEExgYXjty7KVy7Ybf6I6Z5Hm6xv35rmf29n?= =?us-ascii?Q?flSagQFgH3qeonV3eIZcwx2S7pwVqBmrnJj65q5oYZXJnmi1enIDuRK1tHVU?= =?us-ascii?Q?cM+t3llIdeY3sqRG66T4XKf4DMtzoYCg7FlDJAPk4GhDl7aWhGNe6CXw9S80?= =?us-ascii?Q?0FaKbCrs0RNGsP6DYusNH68eDA9HG6xefiyuvbUW/b7PCV6BxmzLVUJB9JSt?= =?us-ascii?Q?1nyRRaF0ZU7FG7E7AQMqOyftj+4Un68bhi0NpA1iJJYmZH6kJAAffvRL7IMD?= =?us-ascii?Q?KDULd3GyLb8j/Ll48wdodCBWj8t1KkBueSaPYIFNvSre38GjdI9GskMal0L7?= =?us-ascii?Q?ZJTl+x+SQRbJ8b+UfCCOP8/2vlybLGGR+aGR1irsMRsE1rt0Jgu+a9Z710Cx?= =?us-ascii?Q?M6Nd+SOkFYGaiHU=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR01MB7903.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(1800799024)(7416014)(376014)(366016)(38350700014)(921020);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?0E1HdhdN5vo57kF/EXXrRXYPRd8VkHm/wGCeXVbaGQvuFZo8vI2x+UyEYyOP?= =?us-ascii?Q?IRpVNGwu5QFJo8+2db2OCIT5Sjrmv6ylaOs49/YWhCrJsdNZ76BnlrBy/La+?= =?us-ascii?Q?zF+pLIjq6+4FDGiacZAL6lVN5INSF3ZpEfQ1P7+P0Tyq/25iSDiZ5YY72tS4?= =?us-ascii?Q?BG48B4m3urF5BwMCIpWIOdpTm9VRRuCgSQxNVGSRc4vokxhdipaQxoVz+v/e?= =?us-ascii?Q?ked/nhsBD3RHXyfHXIHXM7g9HcUvAOgHXCglz4YnyXjaB7nfiFRkzEj3aprb?= =?us-ascii?Q?SlZ/K6w31pxE+nRR5JLCxor6vpoTkRK1FIHOWan1NqZkG1Rx5gI+s56E5v1c?= =?us-ascii?Q?uLH63uWi1lZCv4f07FRYUUMdF3WKsU8J+CyONlTZy5FUEVF+nJdEHrJWt4lt?= =?us-ascii?Q?KMQpInVVsSgAq9raXbqWu7AluZTO8er5VWA659LlHGpIvDfgI+FuBuf7GB6c?= =?us-ascii?Q?D8JpX5p6F0u91JMyY18xAlqSRJ3K0mItFaugqiQb5o+H8A7Yf79WuF2VvK4/?= =?us-ascii?Q?yjF3UC4i6s8i51+E9z1towApm71zNx9HTgiPzjqoCiRRZC352tEwi11zJ6PK?= =?us-ascii?Q?Qt6jx5LDUHtFkAaJ7aINLyMSLr00HogqVyj6VWmYJNUn15kuCf+GYdhJ5m5d?= =?us-ascii?Q?8GXnjIq43ROHMNxjEls0OPGmtl02K6hWgcxkq4d/iUBSCaK17XO4cFuMSWLA?= =?us-ascii?Q?4pPRfkxMqUgodT/M8zaNFUtUQ8SfOKxpkSNeP5WaFp+XEzTmvyzGZ1ujRtlL?= =?us-ascii?Q?3g3D//LRDOWIH1A3Po618RA6nT0gkhR1sRrOwzOplsyW511RnKoB5vpQSWmt?= =?us-ascii?Q?f9F2RP8y6c0bNseqXl4KLACQD0dbSfpdni66cpAnDjWFWjF1N3KU4eUkzmtL?= =?us-ascii?Q?Pirj1E1zLDXrksTOX8ZhyIRqaKkOZRdHqtidFMs4GJ4uCN6vYZtis4KMlEvL?= =?us-ascii?Q?akm/unwlvLrbvsRI0+Qe3fM5F9WJLStySWy02cDmlD1OC3xcplog/nX5S0I1?= =?us-ascii?Q?kbcuYYV/ewaJZkhfvn3leYCO99Km9+fDx6ATpL/YEeJ3VTqbf1ThUzB+ZXpy?= =?us-ascii?Q?tsbU/YMhubQfzlni8BD/0aNInCrHA/wvctwgMWC5iTcN56p5BEKVkD9x6Otq?= =?us-ascii?Q?m/pls3A0vRSOerg7OIlA+d9Y6iiIm9vWTxE+zzztOsBBnE+ml7TIyJk096pA?= =?us-ascii?Q?itIT4xaM/aYnJdk1By/P2V8yr65ZbDCQTObRm3DSFAnm0MZnYeiITVWFym69?= =?us-ascii?Q?H39mqO5+rP+yXuUv7hZeUdtk50obUfK9EP4yL1WgfXFSrz0A0Z8xksgRFq4l?= =?us-ascii?Q?2q2a3G6BOBcbWKOcqj0q6jzeU6DH322GzjZGDd96qtrwLAbmmFr1Ngd2FH3l?= =?us-ascii?Q?WJLvMXXwfTwbZa/qQb+Exp1NfxJZMT52US3ZtmQHpzM9uyuxZ2b2/Xgxv09D?= =?us-ascii?Q?yuOxDafm+u1Ir5ZMv2AwB9u3p8sQaftavNp0sxe3XyOD1y8MlQL70z0aOmgS?= =?us-ascii?Q?3+jqg3W5DWAJFMTtKg/fCbMtfZ4mYAG2cdh+FqODIoMKMWQZJz4bdXgb55FH?= =?us-ascii?Q?KsKvjcH91eI021ThH5usWM84YP9pVUInX2W2yOEJjswAjNBgwADuo9/p78gL?= =?us-ascii?Q?SYFtJ0I7WvWc7lHSX1EGoBE=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 76614012-4413-4db6-8b3c-08ddaa06c726 X-MS-Exchange-CrossTenant-AuthSource: SN7PR01MB7903.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 23:13:44.6111 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: dBRW6FqRN44TWW1o86+E5HzWzCou+DJq4wOF69t+v4V6FV0J23GFMsDXnRX1tDotqeR7OB7Tmg683EnH2zu5+Rqhm2FUsq7JIoz0+TVMmRyRGpbWLdcgINNSo7CuMPF3 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR01MB9364 Content-Type: text/plain; charset="utf-8" Enable the driver to show all supported error injections for EINJ and EINJv2 at the same time. EINJv2 capabilities can be discovered by checking the return value of get_error_type, where bit 30 set indicates EINJv2 support. Reviewed-by: Jonathan Cameron Reviewed-by: Tony Luck Signed-off-by: Zaid Alali Reviewed-by: Ira Weiny --- drivers/acpi/apei/apei-internal.h | 2 +- drivers/acpi/apei/einj-core.c | 75 +++++++++++++++++++++++++------ drivers/acpi/apei/einj-cxl.c | 2 +- 3 files changed, 63 insertions(+), 16 deletions(-) diff --git a/drivers/acpi/apei/apei-internal.h b/drivers/acpi/apei/apei-int= ernal.h index cd2766c69d78..77c10a7a7a9f 100644 --- a/drivers/acpi/apei/apei-internal.h +++ b/drivers/acpi/apei/apei-internal.h @@ -131,7 +131,7 @@ static inline u32 cper_estatus_len(struct acpi_hest_gen= eric_status *estatus) =20 int apei_osc_setup(void); =20 -int einj_get_available_error_type(u32 *type); +int einj_get_available_error_type(u32 *type, int einj_action); int einj_error_inject(u32 type, u32 flags, u64 param1, u64 param2, u64 par= am3, u64 param4); int einj_cxl_rch_error_inject(u32 type, u32 flags, u64 param1, u64 param2, diff --git a/drivers/acpi/apei/einj-core.c b/drivers/acpi/apei/einj-core.c index b9cdd3e44855..f018d3970de8 100644 --- a/drivers/acpi/apei/einj-core.c +++ b/drivers/acpi/apei/einj-core.c @@ -33,6 +33,7 @@ #define SLEEP_UNIT_MAX 5000 /* 5ms */ /* Firmware should respond within 1 seconds */ #define FIRMWARE_TIMEOUT (1 * USEC_PER_SEC) +#define ACPI65_EINJV2_SUPP BIT(30) #define ACPI5_VENDOR_BIT BIT(31) #define MEM_ERROR_MASK (ACPI_EINJ_MEMORY_CORRECTABLE | \ ACPI_EINJ_MEMORY_UNCORRECTABLE | \ @@ -84,6 +85,7 @@ static struct debugfs_blob_wrapper vendor_errors; static char vendor_dev[64]; =20 static u32 available_error_type; +static u32 available_error_type_v2; =20 /* * Some BIOSes allow parameters to the SET_ERROR_TYPE entries in the @@ -159,13 +161,13 @@ static void einj_exec_ctx_init(struct apei_exec_conte= xt *ctx) EINJ_TAB_ENTRY(einj_tab), einj_tab->entries); } =20 -static int __einj_get_available_error_type(u32 *type) +static int __einj_get_available_error_type(u32 *type, int einj_action) { struct apei_exec_context ctx; int rc; =20 einj_exec_ctx_init(&ctx); - rc =3D apei_exec_run(&ctx, ACPI_EINJ_GET_ERROR_TYPE); + rc =3D apei_exec_run(&ctx, einj_action); if (rc) return rc; *type =3D apei_exec_ctx_get_output(&ctx); @@ -174,17 +176,34 @@ static int __einj_get_available_error_type(u32 *type) } =20 /* Get error injection capabilities of the platform */ -int einj_get_available_error_type(u32 *type) +int einj_get_available_error_type(u32 *type, int einj_action) { int rc; =20 mutex_lock(&einj_mutex); - rc =3D __einj_get_available_error_type(type); + rc =3D __einj_get_available_error_type(type, einj_action); mutex_unlock(&einj_mutex); =20 return rc; } =20 +static int einj_get_available_error_types(u32 *type1, u32 *type2) +{ + int rc; + + rc =3D einj_get_available_error_type(type1, ACPI_EINJ_GET_ERROR_TYPE); + if (rc) + return rc; + if (*type1 & ACPI65_EINJV2_SUPP) { + rc =3D einj_get_available_error_type(type2, + ACPI_EINJV2_GET_ERROR_TYPE); + if (rc) + return rc; + } + + return 0; +} + static int einj_timedout(u64 *t) { if ((s64)*t < SLEEP_UNIT_MIN) { @@ -646,6 +665,7 @@ static u64 error_param2; static u64 error_param3; static u64 error_param4; static struct dentry *einj_debug_dir; +static char einj_buf[32]; static struct { u32 mask; const char *str; } const einj_error_type_string[= ] =3D { { BIT(0), "Processor Correctable" }, { BIT(1), "Processor Uncorrectable non-fatal" }, @@ -662,6 +682,12 @@ static struct { u32 mask; const char *str; } const ein= j_error_type_string[] =3D { { BIT(31), "Vendor Defined Error Types" }, }; =20 +static struct { u32 mask; const char *str; } const einjv2_error_type_strin= g[] =3D { + { BIT(0), "EINJV2 Processor Error" }, + { BIT(1), "EINJV2 Memory Error" }, + { BIT(2), "EINJV2 PCI Express Error" }, +}; + static int available_error_type_show(struct seq_file *m, void *v) { =20 @@ -669,17 +695,22 @@ static int available_error_type_show(struct seq_file = *m, void *v) if (available_error_type & einj_error_type_string[pos].mask) seq_printf(m, "0x%08x\t%s\n", einj_error_type_string[pos].mask, einj_error_type_string[pos].str); - + if (available_error_type & ACPI65_EINJV2_SUPP) { + for (int pos =3D 0; pos < ARRAY_SIZE(einjv2_error_type_string); pos++) { + if (available_error_type_v2 & einjv2_error_type_string[pos].mask) + seq_printf(m, "V2_0x%08x\t%s\n", einjv2_error_type_string[pos].mask, + einjv2_error_type_string[pos].str); + } + } return 0; } =20 DEFINE_SHOW_ATTRIBUTE(available_error_type); =20 -static int error_type_get(void *data, u64 *val) +static ssize_t error_type_get(struct file *file, char __user *buf, + size_t count, loff_t *ppos) { - *val =3D error_type; - - return 0; + return simple_read_from_buffer(buf, count, ppos, einj_buf, strlen(einj_bu= f)); } =20 bool einj_is_cxl_error_type(u64 type) @@ -712,9 +743,23 @@ int einj_validate_error_type(u64 type) return 0; } =20 -static int error_type_set(void *data, u64 val) +static ssize_t error_type_set(struct file *file, const char __user *buf, + size_t count, loff_t *ppos) { int rc; + u64 val; + + memset(einj_buf, 0, sizeof(einj_buf)); + if (copy_from_user(einj_buf, buf, count)) + return -EFAULT; + + if (strncmp(einj_buf, "V2_", 3) =3D=3D 0) { + if (!sscanf(einj_buf, "V2_%llx", &val)) + return -EINVAL; + } else { + if (!sscanf(einj_buf, "%llx", &val)) + return -EINVAL; + } =20 rc =3D einj_validate_error_type(val); if (rc) @@ -722,11 +767,13 @@ static int error_type_set(void *data, u64 val) =20 error_type =3D val; =20 - return 0; + return count; } =20 -DEFINE_DEBUGFS_ATTRIBUTE(error_type_fops, error_type_get, error_type_set, - "0x%llx\n"); +static const struct file_operations error_type_fops =3D { + .read =3D error_type_get, + .write =3D error_type_set, +}; =20 static int error_inject_set(void *data, u64 val) { @@ -778,7 +825,7 @@ static int __init einj_probe(struct faux_device *fdev) goto err_put_table; } =20 - rc =3D einj_get_available_error_type(&available_error_type); + rc =3D einj_get_available_error_types(&available_error_type, &available_e= rror_type_v2); if (rc) goto err_put_table; =20 diff --git a/drivers/acpi/apei/einj-cxl.c b/drivers/acpi/apei/einj-cxl.c index 78da9ae543a2..e70a416ec925 100644 --- a/drivers/acpi/apei/einj-cxl.c +++ b/drivers/acpi/apei/einj-cxl.c @@ -30,7 +30,7 @@ int einj_cxl_available_error_type_show(struct seq_file *m= , void *v) int cxl_err, rc; u32 available_error_type =3D 0; =20 - rc =3D einj_get_available_error_type(&available_error_type); + rc =3D einj_get_available_error_type(&available_error_type, ACPI_EINJ_GET= _ERROR_TYPE); if (rc) return rc; =20 --=20 2.43.0 From nobody Fri Oct 10 17:26:53 2025 Received: from SJ2PR03CU002.outbound.protection.outlook.com (mail-westusazon11023120.outbound.protection.outlook.com [52.101.44.120]) (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 CBEBF2E1720; Thu, 12 Jun 2025 23:13:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.44.120 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749770030; cv=fail; b=BHyVGrKwkGkWMyk4d74ci99w2VFngrFKCMHuzKHqM8G9JGHFSfw2MS3GfVxAH0tt/oZa9KuhYH3As+eHkeuY01YKO+NR1ksc/zm2A7xzI14oScL+RMG8/cITbMInt0bqS5sDehd62KkPks5lY+nADx78mG3N+5cRkANZ1I3S9EQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749770030; c=relaxed/simple; bh=xgI3jeDtaD2/q4xq3FJpaOuIeBpIb7N2i4WLk9hKe1Q=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=sne/13hUx0Xfud1D94nXHTZ4/0u6hvmQEaq4ehFivFRQZBe6xmdfPe0FogBcyf4owiVt1s1U5mRmZqpWgn/yH5ZsSc6i7IyLB3Tx846fvhzyUmKAnDF70NuijdL/P+JJ7MkKwrwFHViCsX8G2sNN3lQW6P4bYwqj/g3EGPfhSoA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com; spf=pass smtp.mailfrom=os.amperecomputing.com; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b=j2A1i5DV; arc=fail smtp.client-ip=52.101.44.120 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b="j2A1i5DV" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YH46rTmPReFbazvE+pbG+Q2mUNkR51DcH1CbbE5V1dESGsYC2cJznvHP1B4SIW9uEdbyyNymE2VoDFPXMMaKxy5UbbeJernIIKScD2+mEZTs2iNlyuxqurNCxgjyuPw2Ywy8UCX+QFWhWNk8/qaQ3aykT8hdX4Jynn+KMmDPaECko9FB+nOC24aEgERNvuiB7X1RNLDxF1MTn8mNcyWE0oyMwiisOqwhtLKUXACd2m0KQRcAvK1VuExt68La+j6oyeRcKjRPcUdCZQJZY2zBKovZ0zqhHO1hgsv/nV++kEbXY5/lkCME3zSn4hS9LLWOijvFHAybJba6Am/vqSJPBg== 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=U0o/WDau3piXchYih4pUzWzLIaKvM1V/8K5qhhdLFzw=; b=brqOhiEPGHqiMPc0OnMSsmSZkEhgnbZKwc6leYYwIKJB+1oyOZz2RlPdp2H5eGX7Xo0EmoMt6cWl/ghSE9z8uzOcI2JXYXoXwSHiSsdM/6KUHWTYHREJM9P5USz70883fxzmDJ0I/dgmaZws/8vKRJ7cXuSpzRqqX3ciwwhEFmrRx526M+whc2KfL/YadVZlssk+t/WI2FlxTMfXNSjrC7L8e+XjLZgA46Veov4irifS4rFAXjrH89H1vRKBUtOlCUTgu457SWdFEfUdE8CQh0ysV91XzcfVAjo6Yqtcol/szffIZRY/XG8OIDFgR3GnnhmsN8fnx53mts/gFlL+dA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=U0o/WDau3piXchYih4pUzWzLIaKvM1V/8K5qhhdLFzw=; b=j2A1i5DVTpTSwKhrHERfJeK+/FXZj8HkdVhpjNvbRm9Yd12HAsbA+amUb84JTuZydiPzVYY+dF1P/ao9F8KYv0sIwWJpPR7a6EZO2O5GNUmscXkgXYEJgPpAd8WWi0ZsLuzrdwuCEo89HJZtd9KMUhL6RS4R9w7K2Kh1A8cjJI0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; Received: from SN7PR01MB7903.prod.exchangelabs.com (2603:10b6:806:34f::17) by DS7PR01MB9364.prod.exchangelabs.com (2603:10b6:8:24f::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.19; Thu, 12 Jun 2025 23:13:47 +0000 Received: from SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f]) by SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f%7]) with mapi id 15.20.8835.019; Thu, 12 Jun 2025 23:13:46 +0000 From: Zaid Alali To: rafael@kernel.org, lenb@kernel.org, james.morse@arm.com, tony.luck@intel.com, bp@alien8.de, kees@kernel.org, gustavoars@kernel.org, zaidal@os.amperecomputing.com, Jonathan.Cameron@huawei.com, sudeep.holla@arm.com, jonathanh@nvidia.com, u.kleine-koenig@baylibre.com, dan.carpenter@linaro.org, viro@zeniv.linux.org.uk, ira.weiny@intel.com, alison.schofield@intel.com, dan.j.williams@intel.com, gregkh@linuxfoundation.org, peterz@infradead.org, dave.jiang@intel.com, Benjamin.Cheatham@amd.com, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: [PATCH v9 3/7] ACPI: APEI: EINJ: Add einjv2 extension struct Date: Thu, 12 Jun 2025 16:13:23 -0700 Message-ID: <20250612231327.84360-4-zaidal@os.amperecomputing.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250612231327.84360-1-zaidal@os.amperecomputing.com> References: <20250612231327.84360-1-zaidal@os.amperecomputing.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4P223CA0030.NAMP223.PROD.OUTLOOK.COM (2603:10b6:303:80::35) To SN7PR01MB7903.prod.exchangelabs.com (2603:10b6:806:34f::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN7PR01MB7903:EE_|DS7PR01MB9364:EE_ X-MS-Office365-Filtering-Correlation-Id: 8e18c859-7983-499d-5826-08ddaa06c888 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|1800799024|7416014|376014|366016|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?UOJlD+AAEBcsideVWruxdWAfztR3fk8nPYwF5mUVIvj6b6yjycBJAN2X9xov?= =?us-ascii?Q?baaAhEVPE/dXDOrdekkiYb/yRsP8NMjYWG4z4OMkiV8S71pMc3QoSj7dxT7d?= =?us-ascii?Q?dCJW1V8EeuvfbVArV4MjwMO3vzgZce8RPn+y35TVNKju+MmL2OkelBMmjC8+?= =?us-ascii?Q?rdUsXdryOiKBQTCrRHYSdznc2YAFjYce+gI2uWS9cITEt0EUyyFCjiRPOF57?= =?us-ascii?Q?XOyVHDJ4cyVlf/COlOMZGReQLkjCwTk5GMHCsxo47bsiw8KG4DePbq1vKI2x?= =?us-ascii?Q?WbeJpyaE7b4jcrMYK2+gJ1ywPjtmIlUBSAhpoVHpQoMzkgnlkHjeYRudsUAf?= =?us-ascii?Q?KGEzm7TXdhfVrjo5TRRcoSbrTBs57YR3ND/Rzb5D0kiRijRJV18buPNIDPip?= =?us-ascii?Q?M35kb0ZUaK6OiyzJ1jzSle/mI+0DhzwFSEB5mrycZ5L0r5Xo7PRsFGYM23PQ?= =?us-ascii?Q?UcxV879pUIM7ZpapcAcNkqnkMunvKMLsUteTHbBtxJ/O1H2ELF5vPzsmTSPq?= =?us-ascii?Q?Yq0oR4OR2mxQNQzpDW444JqdP7uEjaojc/fs9zsHkGkh+hSuZNxX4cPXMz/v?= =?us-ascii?Q?Q085OOuGNBviG2BBvqhNzUMet4U3ljOHkP6RI1nCDEIHD0Neodoj7Fk9KRYI?= =?us-ascii?Q?RxX/4GehGG0EyLusB2Qws6Wu8haodxTTqrYbHY9t8pf3TqdqiJkLGknYJKG4?= =?us-ascii?Q?eH6W6Ipp8DFVx1covWtSl4r50Wu5oW1pe2UCPfOhjJqoZ1lN4mwMyuyRKBq4?= =?us-ascii?Q?7vU8jZ5DstBbICYZc/nrD8YQyKU4jAMFLvCCkYqLJYrdzpNrmTKabjyekkQE?= =?us-ascii?Q?TrdlniQWEuQQPb3NU6Vq074ITz973vpNQTv/3vCcWMMQitPEfKnxOdGTjgIa?= =?us-ascii?Q?wjPH7m4dcPlK0HPH1/SoMnoH2bVkuwJ5Ifxg1R47fwUNVI6FVAaUk42CjcVc?= =?us-ascii?Q?B0bVXVXNLyRaTnXKLMjZaDpGS4f3/6uheA+uTXzn7QrfK1jq1vOQ+1fuyDgs?= =?us-ascii?Q?gexQXDy5yx/YY/EhwN2RsKB3QfqTAhEUx4Nm92tJGP07GAUJV8WjQqAj1ifo?= =?us-ascii?Q?xvOzlsG7Rmirh6aKbHhJyL+XUIb1dJ9G8fSnk8l7RupWB0KTdGwEbIT/2v7Q?= =?us-ascii?Q?IV6QXaIsWh2N6F0quHBPytqS9+6OI9MJBWFjNni4YZoAldHll4qBGBlqyTi3?= =?us-ascii?Q?ikkcFSqm3RwYbGWa3k36pUN/zme/j2LfC457MzWaZXgrYI69zDlM3duQZuFP?= =?us-ascii?Q?XRWpxHHha2pLyAbDtQmHUn76p68CbZ9fikSIMjxoiX76WAWXrBmPEVcB1+Jt?= =?us-ascii?Q?elhVsOYTkA07YCSdl+0mx/almUl5B8SAbI/Dis1ia79vMHZkpgJF43Toknb+?= =?us-ascii?Q?IocNyMBMrAChb+6pU93THEbWibPr2l+EYLeD3CUbnDUkqlStY+db5D49phdq?= =?us-ascii?Q?5YMhyfmPpqn4KKm/k03nB46TM0/N90k8?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR01MB7903.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(1800799024)(7416014)(376014)(366016)(38350700014)(921020);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Nl4Dx2syYPHiH05+eHVSeOO3GW5LUHFtlRP/USs1BnvS+byDk3m+1/FHuT81?= =?us-ascii?Q?Pqwk1Se93FjGclMOnuJII2YWZXTQig9d/Z+cOFDrq5oNeVoKPEBZKita9Kz4?= =?us-ascii?Q?jmJthovm3xiiOFLsVsdveCsf5p1/dBHN/ZtPepzHeBD26PrjFpD22aIU2/1p?= =?us-ascii?Q?esnJnimKP5VT+TSzp7CV2csBvDpGx2GsLrl+1mHacTbLVhIW4KCco7r6AgE5?= =?us-ascii?Q?q891AH4sxIAjlah5NzoI2QMvNgDVZiNfVXg3S1P2d3wMZ0Br1roqw3s35cjR?= =?us-ascii?Q?W3C3iU7gX6ZJSV0bDF2RGABhETMy7wO3L4U7wB7OdlQphtW6hSoEPh5X2W9i?= =?us-ascii?Q?xzhDAjX2AHj65QGw9zDsp4hTAPah9qm7FAKB1ErmY+TfswGGLRKqzuh1dPEv?= =?us-ascii?Q?IEiY6FkMfc6wJeEQ/NBbtqK8erw0r40A2lZF2bDOjU2rVfksy9smMH0liuXP?= =?us-ascii?Q?nMHIr+bi1hGGbGTgOjSZDQDR8fwwBhaJ+9z2xVP2HaBtwUjJO80OfWVybs3d?= =?us-ascii?Q?t1FivB32xqjXcLCcWsO2ZHjpKwAVN/74ap0xk/MGDCbgi6cxdsoVQJKQbpJQ?= =?us-ascii?Q?OofK/xvk8q/+LQg/6qeRx1RAIimbYFBMKdAa4S6dcWHl3uQhh2DmH4x/Rzdq?= =?us-ascii?Q?IxdWiGcrdyHUJ+/hl//FoVyQjuOvCebVnnmeg4He/7RXvvRwilYGGF9qAMX9?= =?us-ascii?Q?IsQYEOiD+W6A7OmLmriTVs4nFbd3rVFWQp314mufssZAFdrdCmXC+bSLAtSO?= =?us-ascii?Q?H2tLhkPZHDlgQ/p5AIPwRLQk73ZTCbQJ5r59+FzMxY8n0+p9XaTgMNuOezcj?= =?us-ascii?Q?e1MAaguP/OoG2yH4FsYmUZhSxpGYct27dROm2Fsw4m4s8ug2SmZSOdRskvgM?= =?us-ascii?Q?gUEh66HPpDn/BN0D5F+hSxuQxik+uKxwWst2OdrmYf1qD1rmik5ytX+Z9mf2?= =?us-ascii?Q?JMWW4P9exbpE9u9HrhJf2IO3Hyp/oUfxCYLoJYVP6BLM6H5qZ0jqgp2++iNG?= =?us-ascii?Q?UTavLfz06RWzo1B3WJ3pzguS0xedcllkbU5WSuCzwnrtzFIb4C9RUzZsbUH8?= =?us-ascii?Q?XGoP0NNJVEGvnjdASdUC1/1n4zaGDLV96BHMKx8Lmuke/LRHM0L/3gY22BE1?= =?us-ascii?Q?dUiNNHKVRTssq9crKnTuoCquVwmwRJzqCT9BIMe0Bo70efRznj6KnrVusaso?= =?us-ascii?Q?fC4kRs286ufme6UR7KrAWREzWTJGVVbwO8Kso3CleTpnuGK/z4LIFLHp100Z?= =?us-ascii?Q?3M7/duLArswkk+BdbWArkdDwOwEZer9WDCbfUWYR/LroNINFSY9oKwf0S266?= =?us-ascii?Q?1+qqKCVLvs2ZiqM3l6nWGrrDe2IgMe0ZnUMKoCYWrf1ahvzHOOxtZP665cBF?= =?us-ascii?Q?RNhG/v8CS4LsXFvSf/r0ieJ36vddHXHB5bTfFG3zMt2/yn0IViUb8mDrw6J2?= =?us-ascii?Q?49cEub/ZuxvK9s7gmWDhuWgzb8286tWAVBxZlJ5xjpbOPqIiIHehcNG+UVTr?= =?us-ascii?Q?86FwSxeJVreUM9bSogsH/rYSDFKPkr/2ZKDwdI9InLm6NsyIOOyG9tdSPQxe?= =?us-ascii?Q?S7nvs+pSS/otgGrAZhoL5CDDbDG15/YFByz6skA28X29YbitUYIGZ4X6SPUr?= =?us-ascii?Q?xck3e3JAI4mAIwz/6mFB4/4=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8e18c859-7983-499d-5826-08ddaa06c888 X-MS-Exchange-CrossTenant-AuthSource: SN7PR01MB7903.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 23:13:46.8975 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: BbC/4iantws2cXIXu7Usyh8lpuwlA3Gj17oJKx40mAf680OTHQk1j5cNLR5WRh2Q4sccQFdL1nk48CD1nTNYVtrTV4Xb7R89hTJAKtJusWJdQIN5JpQ76wYTkgCbb1GU X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR01MB9364 Content-Type: text/plain; charset="utf-8" Add einjv2 extension struct and EINJv2 error types to prepare the driver for EINJv2 support. ACPI specifications[1] enables EINJv2 by extending set_error_type_with_address struct. Link: https://uefi.org/specs/ACPI/6.6/18_Platform_Error_Interfaces.html#ein= jv2-extension-structure [1] Reviewed-by: Jonathan Cameron Reviewed-by: Tony Luck Signed-off-by: Zaid Alali --- drivers/acpi/apei/einj-core.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/drivers/acpi/apei/einj-core.c b/drivers/acpi/apei/einj-core.c index f018d3970de8..e74281f5044e 100644 --- a/drivers/acpi/apei/einj-core.c +++ b/drivers/acpi/apei/einj-core.c @@ -50,6 +50,28 @@ */ static int acpi5; =20 +struct syndrome_array { + union { + u8 acpi_id[16]; + u8 device_id[16]; + u8 pcie_sbdf[16]; + u8 vendor_id[16]; + } comp_id; + union { + u8 proc_synd[16]; + u8 mem_synd[16]; + u8 pcie_synd[16]; + u8 vendor_synd[16]; + } comp_synd; +}; + +struct einjv2_extension_struct { + u32 length; + u16 revision; + u16 component_arr_count; + struct syndrome_array component_arr[] __counted_by(component_arr_count); +}; + struct set_error_type_with_address { u32 type; u32 vendor_extension; @@ -58,6 +80,7 @@ struct set_error_type_with_address { u64 memory_address; u64 memory_address_range; u32 pcie_sbdf; + struct einjv2_extension_struct einjv2_struct; }; enum { SETWA_FLAGS_APICID =3D 1, --=20 2.43.0 From nobody Fri Oct 10 17:26:53 2025 Received: from SJ2PR03CU002.outbound.protection.outlook.com (mail-westusazon11023101.outbound.protection.outlook.com [52.101.44.101]) (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 E27CF2E1759; Thu, 12 Jun 2025 23:13:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.44.101 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749770033; cv=fail; b=oWh6bUxrKxjJAuf5dXp/BgIVfjh0XMtn7/FL4+BMW2g4kxHEuYsTVnqvxfEDcgRVUdoi/tmoFgsILJWQ8uhj8b7kmZI1m180w4zQzn/U234TJYPVcnA1FmJNLxsc7a8yKGmdSODLF9nuGFEo4LhoMdU3Xqp0WATIJqp/L7emr0A= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749770033; c=relaxed/simple; bh=clFLvbJC5Js9y3RhwUbikYdlJBkVml2Y9Fdjt/yDoEc=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=SIhVeB6G8QlzueqIZE/JmM+I/LBfjgmi+wJvpkYIH4RbC7TxFfPqQjW1nqLLoZaCJE96GUeroMG2yEaC+3QqMgGmqXSiKzzSDq1CTLOXG6lIYYvLSV9AoYxwpAWoQq8q3Z2ATol6OOPylWyOg3vNtOuELLGpKzVCJEro6g5f304= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com; spf=pass smtp.mailfrom=os.amperecomputing.com; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b=ZZtYv0+O; arc=fail smtp.client-ip=52.101.44.101 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b="ZZtYv0+O" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jiUpLTkVEi+YHvdUZ+DQhBYBDzCn0wArms1AX7HnjBfA0ww9tQ4Q2Afj6UyL9iwZXSGI0SScSe29yI2X/LBbzyCP3rHG7uix07eH334cY+bIyGi6nqaY3YvQbs3X2mKscHXqs7CIm3Yg4rrfsBBiaJbya9mXXW9LTOiC+pYr/yaTHczaOvCy80VHlsH6fZWoMfMfF98FIbcClUuTXs/TkOMZdHcg+i3zHQqlA2UVmM6W8MHydQRulukUbQeHgP3MxLMM9IiDFJG4bo83XZFKIiS5/AB2w8nZcLOCkYn9ZSefPru2Qr11Mds/R/5XYMdKbHz5gLUQ9NkEcO0j+LY86g== 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=WnpjU/5erDTMU0FOiBoKfz4SW2lHS2hC8wZP4mFVIeE=; b=elgFDFWsgbby2x2s+0g2PEDQG6Q/pkwUxoFLL/xESKRWw32reAl6JmzcBK9H58p3B7XduADOJaZzP0+7XXjLTAiB5Af12kQAJDjSZQGZme5z+sWXtm+9rseNthjabYC115dKwB7WqQGUXXc8/2B8O2vwBffEK5+76cXQ4oPxucDQFv+CjRQW13RmSKZ/0Nx33blCSI/YfteWM0i/HvH4f70t2Bjqvk8GP0vBxAYRlbmMVNQddDt1sfLu3GL1Ws3OX8cMQ+hEtwG08C/gCvbJznhIlD2s8P73RZTVQAAPhKOsnKmBRd5Eo0Y/HwDjQav3Ow8A0RbwdcWbehcjksLomA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WnpjU/5erDTMU0FOiBoKfz4SW2lHS2hC8wZP4mFVIeE=; b=ZZtYv0+O41MCj/Cej0rS6ud3BYs6g524jbBxfelzgbiXqY5BLBoCx8fzIHdG7z+UnSAkeW0T9PYgoFLQYlY6WaqtDtTxfWu5/iiFWalx6WKHD2mGjflCxDHE1wRZDpSeMqXUuBWhXZK/6Sp4ZYR/obm+H1HsDKja/pNoUMZ30UI= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; Received: from SN7PR01MB7903.prod.exchangelabs.com (2603:10b6:806:34f::17) by DS7PR01MB9364.prod.exchangelabs.com (2603:10b6:8:24f::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.19; Thu, 12 Jun 2025 23:13:49 +0000 Received: from SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f]) by SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f%7]) with mapi id 15.20.8835.019; Thu, 12 Jun 2025 23:13:49 +0000 From: Zaid Alali To: rafael@kernel.org, lenb@kernel.org, james.morse@arm.com, tony.luck@intel.com, bp@alien8.de, kees@kernel.org, gustavoars@kernel.org, zaidal@os.amperecomputing.com, Jonathan.Cameron@huawei.com, sudeep.holla@arm.com, jonathanh@nvidia.com, u.kleine-koenig@baylibre.com, dan.carpenter@linaro.org, viro@zeniv.linux.org.uk, ira.weiny@intel.com, alison.schofield@intel.com, dan.j.williams@intel.com, gregkh@linuxfoundation.org, peterz@infradead.org, dave.jiang@intel.com, Benjamin.Cheatham@amd.com, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: [PATCH v9 4/7] ACPI: APEI: EINJ: Discover EINJv2 parameters Date: Thu, 12 Jun 2025 16:13:24 -0700 Message-ID: <20250612231327.84360-5-zaidal@os.amperecomputing.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250612231327.84360-1-zaidal@os.amperecomputing.com> References: <20250612231327.84360-1-zaidal@os.amperecomputing.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4P223CA0030.NAMP223.PROD.OUTLOOK.COM (2603:10b6:303:80::35) To SN7PR01MB7903.prod.exchangelabs.com (2603:10b6:806:34f::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN7PR01MB7903:EE_|DS7PR01MB9364:EE_ X-MS-Office365-Filtering-Correlation-Id: e10ff6d2-0b14-488a-5839-08ddaa06c9dd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|1800799024|7416014|376014|366016|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?lhA7fnfdVetw0M8kYae+iZGeiZcVSpqzEwKFKJqLb1xt1052uGKHmdyqBs5P?= =?us-ascii?Q?X1jXE/jI9wh1xT89O+PuhDUfrHBowW5pAvO3w3mkG9aFNZpkSmPbD6pUtP38?= =?us-ascii?Q?O/nBLCxO1SVXhM4UNoRyg4TZ/Rdsd3bodVdzfhtSo1Bv/XQ3y3RHpwnO6Tmc?= =?us-ascii?Q?NwOnrGu5PBcg8xZhXVARJMbme/+lavHEAlP4JtqYOBN9Dyoy0Uk8Zeh82qfT?= =?us-ascii?Q?OemDpG45g6A0HB9mItpjey86rt+UMWSItDSeODzoa9uPfSUkxOkun7mem43x?= =?us-ascii?Q?9HP8Uyy0Wv3BYFAwQSnoSxvTBESn2HKsF6WaHiFHTslXoa06LIzWA17iQ8dT?= =?us-ascii?Q?SoZ3pK1xuMaMfGhLEQxdqbH5egAbGKPYflawkrOaMtEH1z5gLDVkhABeNoQ+?= =?us-ascii?Q?KB0RjLsP7RZWei+7o3XQ9o1pnYA6q0X2TjjzFxVCfc+u5B8ud+Byshqn9VXp?= =?us-ascii?Q?p3Vb733L7r6j3ffJ19gyOSaKNsGQF2V89BL24DpKtNI2ipuOLWnr6EOw/G9i?= =?us-ascii?Q?eqoJpZxvEiqaX3qIhIP/W+YXeIAddu+ihAvLqjCOIzHvzc2DrysMrddhDcg3?= =?us-ascii?Q?T2KL1lYqjzVU5MwRhPmoUPI9WITY9163gRXQ+OB9RlIRLN5R6xkV8fFFbYPo?= =?us-ascii?Q?u0knCo/P/fXBVlooQeuL3NSIivUDo48PZ6HHgv6D1Sf8XjEsh1VKlDNsEr4R?= =?us-ascii?Q?tYZCv1ny0T0MQGwtJiTNpVp5WijcsxYuV5kBJ3wcPLMCb3/icww/onUQSoN6?= =?us-ascii?Q?/cfT9FqChYVsttHwta5wA1jUYSwR/ynqCrw4I58cx6AmFOiOg8ROFdyxHkAN?= =?us-ascii?Q?W0TeECaVKarqicJNXOJ4AA1De4v4aV1IOGnfY44ceb6UkU88jthG4Z0uYq04?= =?us-ascii?Q?9MjtGA7Gssu0lTTY/me1DoOl9Fzya9rKwyLdHpVSj31Zppsi+1iC6pnC8tyE?= =?us-ascii?Q?DP4iMS4yhcgwO3p9A28GmuA1eGR72HdYNKxfK+US04id0Ky1bvdvsrk0GmQ3?= =?us-ascii?Q?CMiy0ynOeWmCCbgZONIMUT1S01Ze5bx5FLCEFlaBbPaNbHnfovCrKxYCpwJQ?= =?us-ascii?Q?ufxSwkPsM+GTVhlx1KKZpcKb5pwny2gDqIFnO7tLufpp18CDjbdiDC6oiUCM?= =?us-ascii?Q?Bo7c2TlLmsG3N31ljACYlee98r++vzTvkVVVOUbdMPb1MmwoYhIYc50X72lm?= =?us-ascii?Q?G8x+HtwV7fCoHDiUszVAqnuQ6uEnij4KhlxJN5mQPVUDX1EOkR601oPeHylb?= =?us-ascii?Q?vOBBhhzhxTdT501ckph67Ys+wxo9Rxc/QXpebilG8RxvULpc7piJsdXNLQto?= =?us-ascii?Q?G7NcSCi+kn+OxnMhMTfcwk8cVix5Lsa9zMrDmPQZ0KK33zRA+a/bttgLv9CK?= =?us-ascii?Q?acWXxzhnfbr1TSAb4UqkQgkAw7Q0FA1DqVYPWNNeaIxFIrGykKIfnQTXQbfK?= =?us-ascii?Q?e9+NthSw4mkqSSmh79ZUMAsWy/3MkGoeF3vadX2wRVvrfFkcq7IsE5SKyanR?= =?us-ascii?Q?oEBxXSvwPiaGmmw=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR01MB7903.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(1800799024)(7416014)(376014)(366016)(38350700014)(921020);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?z4nXoX+99BKLANSomjhUzbVliVH/JI+0lGACnZ/xcqfy82iCdk50pyxTRUTZ?= =?us-ascii?Q?BGnFJ2aEb3hxL6b+A5drlsEU90OYaSq+z8P+/+1W8cWkS0VDbTf6WZGzoLmG?= =?us-ascii?Q?JIjigowW5VF0UMYZFzt9YMXC0ukMOSpkdYre3IoPyIgeCaWKZv5XWvutcHf+?= =?us-ascii?Q?G3pHKf96s5wDWp79ysmg4IU/t4ue9rFfzZniAn3g0gOPsD6MYhfomME2bEbL?= =?us-ascii?Q?EmqilNGJMgvpiX3x/E4XsIxvE7ISSB81Bf8dkYCWZJsltPbVCVEa4C3Lm7wD?= =?us-ascii?Q?1NQarhvxuIIJJhqbh24TPgHi1gb/1qmO5ySw3LdHLuBmo8aaxLyk0HZVVTbA?= =?us-ascii?Q?sYSbE15kqZ02BCXRjkKgrFP73rm5Al1rQS6vgDJLUsAOHElU0X4P3/52+m/u?= =?us-ascii?Q?4Yjb4oLtDkyPFbmDDYgUtSWeCOdUJQeMLNboillOoOsS6HlPKLlpqdfylSXB?= =?us-ascii?Q?8xDU6lueLHFqyYkzOXMTTC6AFZo2Hy+kr02FFkamxD+wPVMG/AsYGf9Y5ocL?= =?us-ascii?Q?hSNTYjJYGMYeaeUM8E7F956+Z44hYNJeBCW/bhz2P7Lex3mgo8cdsEc2ncX6?= =?us-ascii?Q?7CEHY+We4ML9KXk7nUMmOO2lsSo3lanox4ES+JZ/38xj4EutAaBuJE++hgUe?= =?us-ascii?Q?dPocG3ive3Uuai4cPYpgPOKlVOsRMH909EGbEZOCS7/ndFpcgT5jaBaJwCIJ?= =?us-ascii?Q?BaFT03nOT/Bs/qEMTtQdOtjtPiYUIcLafH1opOVCXavBRgqRSdS9K+zqt9I1?= =?us-ascii?Q?NbJYOxZo6Gr+g1xaEdbph1ntj8oKad5av7crgR+AsgLGeAjTfvXdZ9zeTCVj?= =?us-ascii?Q?8g0JZWaqcs2aSnH0ppmP6bhB3H25TkQlJaso7+upZ632ypBBium7YDLuDP6d?= =?us-ascii?Q?ZvMXqtIxBHsdUro6FzM9vHmdeUdz+qbPnhYbZZwWxK+43AUnpP2MBypuHzqq?= =?us-ascii?Q?Z9Pte2DLZop7RrbG3lbhP6+qDnM9g4fF/2MHh2qVIpr3buBZp3+vS+/mVSM1?= =?us-ascii?Q?CT31b23QpJi5r5RrQCqCeuewX5fJ9F7o4O04K9eiAaOibdDIw5B/0s8tLqKA?= =?us-ascii?Q?VQU9XhZ971un441PuebKhb6wYzVb2l4cMnMLZwKoV5UTm3Y/yJWVaSbifWnP?= =?us-ascii?Q?BXMN3R6quHh1zLEFgP3d2ixDyLF5O5ig6LCHyFCOKngRTbxpX2kyuQLQzVwE?= =?us-ascii?Q?OkrzsUHmThaez4cfHa0NS5QOtSxbQETW9AWUsOhDbBZiI91dk01kwf5VDHIW?= =?us-ascii?Q?mtyPnrHLafWpZ+5HyyPT5xCyPIMWmap97bvs39bCfJUCHJqwpDQhCblVTP5A?= =?us-ascii?Q?2wErjbmizebX+bwwc2MX1/uTR6o2a00CLdY8LNcNjD3svNgJaxJXUy83N7Dj?= =?us-ascii?Q?9EAMpnV9wlN3Ec0YXm7JIs1VwrI6BcTMfk3pYsEZTAAAu/j/jjpVhGvGRhtp?= =?us-ascii?Q?YtjPuUDZVfldUaX8l4VJyjUU9a33NxxnFlTYJMZtnmxzJtpexJ4tUhE5QVFd?= =?us-ascii?Q?xr9XRwmb+2/qWldRv/5kVuFnns0dqP/OMgzYb9gQ012nVYi3fT4Z7XZ+xbif?= =?us-ascii?Q?kXQUR+Phr63l6MRo4hehzvaq+i4ETaql93fEwE095GgXqO1J7dWDN4WL4fzf?= =?us-ascii?Q?LTXSoCZjnZucyl3+GzNO4pw=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: e10ff6d2-0b14-488a-5839-08ddaa06c9dd X-MS-Exchange-CrossTenant-AuthSource: SN7PR01MB7903.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 23:13:49.1233 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 5c3DjdgGnX7UXzY4Qoo1SN9xDZjoV7PmNJzWjk6GeQlNSkF+7Z9gZPlHcHPR5XB0xxYxVwWOireXrOGxbcRSX5JOwaQzVBILcczBIkG1+4WI1SOiTFrbczg7ogwHQQTq X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR01MB9364 Content-Type: text/plain; charset="utf-8" The EINJv2 set_error_type_with_address structure has a flex array to hold the component IDs and syndrome values used when injecting multiple errors at once. Discover the size of this array by taking the address from the ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS entry in the EINJ table and reading the BIOS copy of the structure. Derive the maximum number of components from the length field in the einjv2_extension_struct at the end of the BIOS copy. Map the whole of the structure into kernel memory (and unmap on module unload). [Tony: Code unchanged from Zaid's original. New commit message] Reviewed-by: Tony Luck Signed-off-by: Zaid Alali Reviewed-by: Ira Weiny --- drivers/acpi/apei/einj-core.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/drivers/acpi/apei/einj-core.c b/drivers/acpi/apei/einj-core.c index e74281f5044e..08cac48293a2 100644 --- a/drivers/acpi/apei/einj-core.c +++ b/drivers/acpi/apei/einj-core.c @@ -107,6 +107,7 @@ static struct debugfs_blob_wrapper vendor_blob; static struct debugfs_blob_wrapper vendor_errors; static char vendor_dev[64]; =20 +static u32 max_nr_components; static u32 available_error_type; static u32 available_error_type_v2; =20 @@ -177,6 +178,7 @@ static DEFINE_MUTEX(einj_mutex); bool einj_initialized __ro_after_init; =20 static void __iomem *einj_param; +static u32 v5param_size; =20 static void einj_exec_ctx_init(struct apei_exec_context *ctx) { @@ -301,11 +303,31 @@ static void __iomem *einj_get_parameter_address(void) struct set_error_type_with_address v5param; struct set_error_type_with_address __iomem *p; =20 + v5param_size =3D sizeof(v5param); p =3D acpi_os_map_iomem(pa_v5, sizeof(*p)); if (p) { - memcpy_fromio(&v5param, p, sizeof(v5param)); + int offset, len; + + memcpy_fromio(&v5param, p, v5param_size); acpi5 =3D 1; check_vendor_extension(pa_v5, &v5param); + if (available_error_type & ACPI65_EINJV2_SUPP) { + len =3D v5param.einjv2_struct.length; + offset =3D offsetof(struct einjv2_extension_struct, component_arr); + max_nr_components =3D (len - offset) / + sizeof(v5param.einjv2_struct.component_arr[0]); + /* + * The first call to acpi_os_map_iomem above does not include the + * component array, instead it is used to read and calculate maximum + * number of components supported by the system. Below, the mapping + * is expanded to include the component array. + */ + acpi_os_unmap_iomem(p, v5param_size); + offset =3D offsetof(struct set_error_type_with_address, einjv2_struct); + v5param_size =3D offset + struct_size(&v5param.einjv2_struct, + component_arr, max_nr_components); + p =3D acpi_os_map_iomem(pa_v5, v5param_size); + } return p; } } @@ -932,7 +954,7 @@ static void __exit einj_remove(struct faux_device *fdev) =20 if (einj_param) { acpi_size size =3D (acpi5) ? - sizeof(struct set_error_type_with_address) : + v5param_size : sizeof(struct einj_parameter); =20 acpi_os_unmap_iomem(einj_param, size); --=20 2.43.0 From nobody Fri Oct 10 17:26:53 2025 Received: from SJ2PR03CU002.outbound.protection.outlook.com (mail-westusazon11023101.outbound.protection.outlook.com [52.101.44.101]) (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 B4DE22E2EF4; Thu, 12 Jun 2025 23:13:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.44.101 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749770035; cv=fail; b=Xeo+LfE/julIfcidbbG5ksGsmt4RlwCuH3QzA4Yj+ZMP/XW3dsTcNC8h4r178z7LhqP1i3cDmh0+ejK/Acw6tXc/Xg2uCGikmy+Uc7C5fh/ZawaO3vZCaLX2kqQ3etgpt0k5nODKjxOTiqdU9L90/MYNsoq1zrln2OrWPLqkL3Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749770035; c=relaxed/simple; bh=PuAstvfzSZ+Xv8JNyoid1C2KdE57FrOuGQREJg8fOXo=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=kGIeVezkeiDbwS0QeIvR6V/ErMSekw1+q5P8+QuNzL/vU6CWRTMQXRxbWXeTr28CHCgUCsMI9hw0EgSDXLgyHuNNChbUQSnXT/16NxyxzvJ7+Fzyf5gTeVOJ6BZpnDZkTx255OLz55317x+J5CHX+TYEg86ZEocr7iiJ6YBTvcQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com; spf=pass smtp.mailfrom=os.amperecomputing.com; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b=D/HSKD1V; arc=fail smtp.client-ip=52.101.44.101 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b="D/HSKD1V" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KouXXdyT22i/63akpin/emijynxQAH5j5T9LbbOBKpKzHz82jkQwycSyYIlfCA3byuCcELJZRlahOLZCzYvZclXoUb1gGY988puyzCuPX/YMcpV+ctsD2sSCRmCd8nmSCYpGveE5zh+QD4Y/xvlUs8mjbGUsGR+6OEqFe9kqYPuYAoGM0wiGDhFL+OwRyMQQ9/8eiAIKMsHAE3vOxNqOH+E9a9P4R3j+aJK8DVR8hivJ0q0ceme20fP8c2eWdlvsef8+bqRo3MEjV/15qX2vgAHb7CWFdTrS1igDQiiNBw0s9yjlRD8blOq4PdaVgMCXY3qaNHznHRINfwYsXihKXw== 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=BP4jsgzUxaemQyb8N9sXH3giTLCs5orhfORAS1wCAZM=; b=jhDGf5BWSLv1cYgmn0hW7wwwwQWgD52Q9fTCdXRL7FC/mnszRrSixh4GeYcQFgI2iPN6ujtlJY7SUtFN0Ge02cae75b1rtQUinEaBtONQbe02jKgVKCbfQL1T182tIPKTabJfi2xS7H7bfZCcdqBOgmaXIhLJRrCTVkkLqhiONZp2ikwVDrgmCcr/eMMHzR6gELDJ96ZuTYZAhZGT6tcJNOedKdZRV0Gn0ysylIrASGcJQ88MlDGAhyd1Sj9t2VfAuc63V56KXsiPjC3yuHhMkWzbzAkUDbg7US+/IoRy67nrFVL/EvRicqD9SLb3FUKhHioxt2fbEveikiKGSFZeA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BP4jsgzUxaemQyb8N9sXH3giTLCs5orhfORAS1wCAZM=; b=D/HSKD1Vn2B6DB564EBIjjWTqmost0bYD2gJExd3BbogOtMOnfn+SDdZkuW6jrP+F27DiFBdI0dbJ5sZbLrXqSzu59wv/nkuRwaohnHAHnda+soxGIyC7OsU4W13b0HKEAElSAej0qW278t5oJbkK+fis4nQqIcsZyg9EGpWraA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; Received: from SN7PR01MB7903.prod.exchangelabs.com (2603:10b6:806:34f::17) by DS7PR01MB9364.prod.exchangelabs.com (2603:10b6:8:24f::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.19; Thu, 12 Jun 2025 23:13:51 +0000 Received: from SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f]) by SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f%7]) with mapi id 15.20.8835.019; Thu, 12 Jun 2025 23:13:51 +0000 From: Zaid Alali To: rafael@kernel.org, lenb@kernel.org, james.morse@arm.com, tony.luck@intel.com, bp@alien8.de, kees@kernel.org, gustavoars@kernel.org, zaidal@os.amperecomputing.com, Jonathan.Cameron@huawei.com, sudeep.holla@arm.com, jonathanh@nvidia.com, u.kleine-koenig@baylibre.com, dan.carpenter@linaro.org, viro@zeniv.linux.org.uk, ira.weiny@intel.com, alison.schofield@intel.com, dan.j.williams@intel.com, gregkh@linuxfoundation.org, peterz@infradead.org, dave.jiang@intel.com, Benjamin.Cheatham@amd.com, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: [PATCH v9 5/7] ACPI: APEI: EINJ: Create debugfs files to enter device id and syndrome Date: Thu, 12 Jun 2025 16:13:25 -0700 Message-ID: <20250612231327.84360-6-zaidal@os.amperecomputing.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250612231327.84360-1-zaidal@os.amperecomputing.com> References: <20250612231327.84360-1-zaidal@os.amperecomputing.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4P223CA0030.NAMP223.PROD.OUTLOOK.COM (2603:10b6:303:80::35) To SN7PR01MB7903.prod.exchangelabs.com (2603:10b6:806:34f::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN7PR01MB7903:EE_|DS7PR01MB9364:EE_ X-MS-Office365-Filtering-Correlation-Id: decf65e0-c2dd-4869-3f7f-08ddaa06cb2b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|1800799024|7416014|376014|366016|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?fVmwEgisR8oJ+JJQb59SOTmNF+nbIjx6ZkQ8YePS+JmXzCsIq3eQpyWbLoqv?= =?us-ascii?Q?AtBg68aUBGSJ4ekiadQfjzniQa4oFgJ0ja4hqV15b/hFQg9FXhXe+47ytj6A?= =?us-ascii?Q?CLXrylVBQfXYPbTQRntU0c4+dJRKO2VKyOCspe9Cb3rujhcapznOQTYex3zO?= =?us-ascii?Q?xb2eS8Y5BWkVlww+8ZirFoYaN7R0e28/ZqVIfBvor9QdFjwNScHgvhGEp55+?= =?us-ascii?Q?EaZDFM261rCFg+Z9ke6/d9fiJte98K6hSyN+pldwXdH58oXJnM3Qn83+DUOR?= =?us-ascii?Q?kXSM2TzKQLUIgyC5Fxob076+nCw/Bua5hhEgiRhrwI3L57LB7aSIxRFrO6rl?= =?us-ascii?Q?wduNoTPwSP2dr3JndqGtP98kTaKJ5Cnu0KxaxSO8gxInlg0gZGBR92JRFifZ?= =?us-ascii?Q?0y1fP2zCbTHb0ir1qOIGRk0o25m3aTrXVHfnqcbuSyZqeAZPBd6lljl11h8K?= =?us-ascii?Q?i81PHpBLgA6QnulDM4WcrHDa1eLwYN5emPcMilxa6G/PxV2e+XDXLd2SoFUX?= =?us-ascii?Q?Miz8US47ZCKSK28oIF4g0WBsPnEUVOl5myo7sJkVjSDiJ2xw7rb1eqzYM/AL?= =?us-ascii?Q?8rDqTlZXCyqSSd2pnjBbHYKBaMrysGD5B/jfPRx+gkOB6Rqqxk0idYWFQKsd?= =?us-ascii?Q?TWUgqIRAjYLnQcZhFwmJZMUmmTFE7b79DoxHuUMgFvOtg9lQIcm4w/ISiirX?= =?us-ascii?Q?IvFCkCZguQJ2sbJZ6tw2+LdqAT+tkXPCLFucHrc0lN/h7tgsbJK5L+zOYgT+?= =?us-ascii?Q?I+t8C0stA2Yf+kf4Rp81020pNdp4bt/1elVtRIhVbRW/DVpKcZh3oIe2MnCz?= =?us-ascii?Q?miuq8ClPrtAbjZZQgx6mmXt6ly/v5aPFKk9IaNdzDj7VYgeb6qvtKrb8/6Ag?= =?us-ascii?Q?eKsQaaAe4R3CElgz17gUB96HmXzhpETrvKzl1zTkSzLclwX4r3iP9l4Y/r/l?= =?us-ascii?Q?pKLpM6qO5Sa5q0f3Kulc1dlnMa8xfmZEG7jMOZw+cjZIGDodKx7VGuKYq1FQ?= =?us-ascii?Q?BeH3bhnV0aNWyKzghvD0Aia6ib4GcrKAayQDzVapz6fWVt2MIEGE3cbq0gEu?= =?us-ascii?Q?cGAYNK9P9ugMSnIZbKrkfGZYx54+OlrGUZ5IFkPF0AbansbdG6985fH36Y4E?= =?us-ascii?Q?bN0R4ZScy/fuDVUhwbUehdJBJZymSJmUYjyVuho4HxSGvNwHJXlYVym4vVH8?= =?us-ascii?Q?Hnynx9Ut666/PUPwehzcRgKIcTySlYIy0LnK25om/BEiHYk6Pyn0YBx9QKUm?= =?us-ascii?Q?d+lODfgDjvKq4TekwrdWXVMMqFhrn+bsU23YisGU9BEVlMODGDqj9LfGBMZV?= =?us-ascii?Q?WVOiJNgcMmO45RgGkiE8cj5lgNOGwf+ix1J51wEe6mgCdPY5Yjf+UcrLuNur?= =?us-ascii?Q?DEst2NRR3TFjHEYQNO5Em/MEUkGDk5ifB7LScYMD2UzGS5GX93yaZlnF1EDE?= =?us-ascii?Q?R4hmsKmMsWeI6NnfQAXYWmclA8qPzX28WO9RpgB3gYdBC5EZwj98wfbgF2rj?= =?us-ascii?Q?bCiuuEbLMGwYoRY=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR01MB7903.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(1800799024)(7416014)(376014)(366016)(38350700014)(921020);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?hO9ucTRdNVWDDqfvMBvhdr6+VkLcQCD1YPNP9rgc/bt+sGZTJnGbKJ8fNwfj?= =?us-ascii?Q?AywTq50oKXXmKV7sDxUpSPCcPIOfkR9q/gIvmZ4tCjAytMRuVA2//6ChXf4S?= =?us-ascii?Q?y5HpNT4GZJHyXwEm5x1UUKrmGRHcQDK7hOailI/pFTq5Q+xvN3Oh+Pdk4Rx7?= =?us-ascii?Q?ed/d57n0UZ6pAM/GG5A1Rn2oSqfmghMZHgOtlC3FO3867ivxOPS1CEcH26J/?= =?us-ascii?Q?47EyTZ+TJeHWnmI/dGCLejyg2awd6g3B6SmgIGbSl+lUBPdRv1tUofv1Wc+9?= =?us-ascii?Q?4JGXNyzMgI6XLmPq4XacJ9nN2d3QjTiu8cBD3eWO5vriS8Rx9T18GvneGKvQ?= =?us-ascii?Q?oqUJAMBVPw1bSCrbWtSPg406JXiVOI7vwp/1mM5lMKMPwyxQmM4GPW9R1Icr?= =?us-ascii?Q?IgO/RP7wcdBmLRf2MQhKw6Jmzv+bLYP+p8p0Mjn+YsQrvQSzD/RMqjtgFooe?= =?us-ascii?Q?AKQ3xjTYwEQSWKS7129RhaESW9V9tLiWgHOXFpFG0vch5J9tqEzBitySG3F/?= =?us-ascii?Q?ulwa25FBxCGw4dRqFoJWVhuSI4cVzuDdhKqejXVwsIHTPC3092vT0E/9JFH9?= =?us-ascii?Q?OmojjalkwFa/bbRa670q5Tx7kSc1qjV0RziI7e0KuzlDMvBjGTnOsomOeN7P?= =?us-ascii?Q?SrF64WksvedsRZxGOgG1qWFgo6uoVG95aDRmbY/491Gg7C92KTSRpkh/znAj?= =?us-ascii?Q?OqdMZKGTcDoCvPZluA0c395kTzW+frG4HVthK+vrVIeG5fK+YCsVxQMPAZUu?= =?us-ascii?Q?R5u8qbSxHyA5JqLlvKbQhDYrwIIUHJXv8JrsyDzYnyUqpkxKkTHzzTdh4Xrv?= =?us-ascii?Q?Zo78GUflG8cLiCVCRM9zPD0Ozw89qaIAWzOc5+1EPLjQUFbJKVxfhlPDvnhI?= =?us-ascii?Q?9l2OPyvFjCE46NYqWWHEhqdnKmufYoR3rI0jtefin7yXJXeumhx8p4NxJVb5?= =?us-ascii?Q?r3GTboHgP8uB64mNb1keTSoryGWAXzJ3xFjjG5e0ma/liygWWp13e2lw2Ex4?= =?us-ascii?Q?4aXvc+O5fPy/mC9WHj2a928S/wtS5S/oHx5wVOsuEgcKBbYMNFyc8LgQnvTi?= =?us-ascii?Q?/97JI5OrS3IP0KdhcYpaX8Hd/5Y/xie2m+sD1Mj7mcEf3FRkrmTaj4u+2ha1?= =?us-ascii?Q?Dcy+DrraZBDd2BHW+UC/SXZtrpNnro6I35iCm/efuslD7rpbSXKcK76kuzc+?= =?us-ascii?Q?sQIOL+arDZ7bCyJp/7YAoAtQ9XyVkSNOkNy+jdxw8xrtZYM65PrfHcQ0aFN8?= =?us-ascii?Q?CmSXdU39zYTVFinNoMiZDYESv57VDdA4riwstXWRR6qg+Sz5QK0l85yAtyDO?= =?us-ascii?Q?0/N244M7wPvcFvO+z60zXI9sFaYWXkx9gy43miAU96J1U+4Eq4A3y6LGXVN1?= =?us-ascii?Q?cw8B97O6U7ebMe184AQFd7ZFtjF+nVTRZpcfWTggNuwRlJFlXn1nWI6nJUYs?= =?us-ascii?Q?RoozipkgvUu9kTFvePUwODaDkCKEKimtVics5KImHZZ6L873X5Ejda16iYER?= =?us-ascii?Q?CTmrW2/jWlL/uY4kVC20nP0+eLtsfe2mRD8Pik5IIAZNb67bf8J+ft5BQvqp?= =?us-ascii?Q?YsJTZzpxpL9RX6qAGWJhn2DnYDgtgN9BoJNxnl+Hc8ir6tZBoPLuU4Vu0M3m?= =?us-ascii?Q?N0cEN25y2z9Ewyo7CMesTWc=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: decf65e0-c2dd-4869-3f7f-08ddaa06cb2b X-MS-Exchange-CrossTenant-AuthSource: SN7PR01MB7903.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 23:13:51.3315 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: D+y2h65CpzoLquXNw7uFs/jLKVMFOeT+aIjJA2T0ocHaPQIUhYOc7CE5/BTiL5ncmtSbXpT9imQefW+SzesGoOJkUx6GAgYYSb841/VUpHJ6FeflKLe/QujhnwGDDx8n X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR01MB9364 Content-Type: text/plain; charset="utf-8" From: Tony Luck EINJv2 allows users to inject multiple errors at the same time by specifying the device id and syndrome bits for each error in a flex array. Create files in the einj debugfs directory to enter data for each device id and syndrome value. Note that the specification says these are 128-bit little-endian values. Linux doesn't have a handy helper to manage objects of this type. Signed-off-by: Tony Luck Signed-off-by: Zaid Alali Reviewed-by: Ira Weiny --- drivers/acpi/apei/einj-core.c | 98 +++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/drivers/acpi/apei/einj-core.c b/drivers/acpi/apei/einj-core.c index 08cac48293a2..8d60e5f1785c 100644 --- a/drivers/acpi/apei/einj-core.c +++ b/drivers/acpi/apei/einj-core.c @@ -33,6 +33,7 @@ #define SLEEP_UNIT_MAX 5000 /* 5ms */ /* Firmware should respond within 1 seconds */ #define FIRMWARE_TIMEOUT (1 * USEC_PER_SEC) +#define COMPONENT_LEN 16 #define ACPI65_EINJV2_SUPP BIT(30) #define ACPI5_VENDOR_BIT BIT(31) #define MEM_ERROR_MASK (ACPI_EINJ_MEMORY_CORRECTABLE | \ @@ -110,6 +111,7 @@ static char vendor_dev[64]; static u32 max_nr_components; static u32 available_error_type; static u32 available_error_type_v2; +static struct syndrome_array *syndrome_data; =20 /* * Some BIOSes allow parameters to the SET_ERROR_TYPE entries in the @@ -711,6 +713,7 @@ static u64 error_param3; static u64 error_param4; static struct dentry *einj_debug_dir; static char einj_buf[32]; +static bool einj_v2_enabled; static struct { u32 mask; const char *str; } const einj_error_type_string[= ] =3D { { BIT(0), "Processor Correctable" }, { BIT(1), "Processor Uncorrectable non-fatal" }, @@ -847,6 +850,98 @@ static int einj_check_table(struct acpi_table_einj *ei= nj_tab) return 0; } =20 +static ssize_t u128_read(struct file *f, char __user *buf, size_t count, l= off_t *off) +{ + char output[2 * COMPONENT_LEN + 1]; + u8 *data =3D f->f_inode->i_private; + int i; + + if (*off >=3D sizeof(output)) + return 0; + + for (i =3D 0; i < COMPONENT_LEN; i++) + sprintf(output + 2 * i, "%.02x", data[COMPONENT_LEN - i - 1]); + output[2 * COMPONENT_LEN] =3D '\n'; + + return simple_read_from_buffer(buf, count, off, output, sizeof(output)); +} + +static ssize_t u128_write(struct file *f, const char __user *buf, size_t c= ount, loff_t *off) +{ + char input[2 + 2 * COMPONENT_LEN + 2]; + u8 *save =3D f->f_inode->i_private; + u8 tmp[COMPONENT_LEN]; + char byte[3] =3D {}; + char *s, *e; + size_t c; + long val; + int i; + + /* Require that user supply whole input line in one write(2) syscall */ + if (*off) + return -EINVAL; + + c =3D simple_write_to_buffer(input, sizeof(input), off, buf, count); + if (c < 0) + return c; + + if (c < 1 || input[c - 1] !=3D '\n') + return -EINVAL; + + /* Empty line means invalidate this entry */ + if (c =3D=3D 1) { + memset(save, 0xff, COMPONENT_LEN); + return c; + } + + if (input[0] =3D=3D '0' && (input[1] =3D=3D 'x' || input[1] =3D=3D 'X')) + s =3D input + 2; + else + s =3D input; + e =3D input + c - 1; + + for (i =3D 0; i < COMPONENT_LEN; i++) { + byte[1] =3D *--e; + byte[0] =3D e > s ? *--e : '0'; + if (kstrtol(byte, 16, &val)) + return -EINVAL; + tmp[i] =3D val; + if (e <=3D s) + break; + } + while (++i < COMPONENT_LEN) + tmp[i] =3D 0; + + memcpy(save, tmp, COMPONENT_LEN); + + return c; +} + +static const struct file_operations u128_fops =3D { + .read =3D u128_read, + .write =3D u128_write, +}; + +static bool setup_einjv2_component_files(void) +{ + char name[32]; + + syndrome_data =3D kcalloc(max_nr_components, sizeof(syndrome_data[0]), GF= P_KERNEL); + if (!syndrome_data) + return false; + + for (int i =3D 0; i < max_nr_components; i++) { + sprintf(name, "component_id%d", i); + debugfs_create_file(name, 0600, einj_debug_dir, + &syndrome_data[i].comp_id, &u128_fops); + sprintf(name, "component_syndrome%d", i); + debugfs_create_file(name, 0600, einj_debug_dir, + &syndrome_data[i].comp_synd, &u128_fops); + } + + return true; +} + static int __init einj_probe(struct faux_device *fdev) { int rc; @@ -918,6 +1013,8 @@ static int __init einj_probe(struct faux_device *fdev) &error_param4); debugfs_create_x32("notrigger", S_IRUSR | S_IWUSR, einj_debug_dir, ¬rigger); + if (available_error_type & ACPI65_EINJV2_SUPP) + einj_v2_enabled =3D setup_einjv2_component_files(); } =20 if (vendor_dev[0]) { @@ -966,6 +1063,7 @@ static void __exit einj_remove(struct faux_device *fde= v) apei_resources_release(&einj_resources); apei_resources_fini(&einj_resources); debugfs_remove_recursive(einj_debug_dir); + kfree(syndrome_data); acpi_put_table((struct acpi_table_header *)einj_tab); } =20 --=20 2.43.0 From nobody Fri Oct 10 17:26:53 2025 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2115.outbound.protection.outlook.com [40.107.94.115]) (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 B088B2E1759; Thu, 12 Jun 2025 23:13:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.94.115 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749770040; cv=fail; b=p91WWMarrd65mTC97yS5JAgbbSFDJ7ugt61XrpZ6Dal+sqg/WypNx0z/ALhG2jEL5jEuDylbUMjY19/P7iIgkzBa7cTJyCQZ4KL4UojsaQwkUnMDgTR98yvpFuPhkEIeBdtPrFyBt7684EAc3g7zRb87IXD+3QCBfOIQtVM3qwQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749770040; c=relaxed/simple; bh=75wpIZ6Te8LkEPmcVHvuzGO4W8cYfdVxWbM6hs9pm3A=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=SvUo1Dh2rIhGUbvvN7nHkfiffSLh+83mmTYnMbJBudHJRaKKYxZX/WBLVgXb6Lg9yf/Vk1tgkPb2qqDKx/7qOyK5fVkip8fd1awZ8dvM2njjtNlFWx9vkBmOySAudDRddk6Sy1jx0m1hYn+nYMGj3JL2Ql06zjEP+usYcujP070= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com; spf=pass smtp.mailfrom=os.amperecomputing.com; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b=HgdARVkJ; arc=fail smtp.client-ip=40.107.94.115 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b="HgdARVkJ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wTFxDSbuhUlw9pv/Ks+5JJLSNFicFaw8ybhX2E6zbIKwW5HQ9BKyDh0Rjs21lt3A1MG6l2tzbSqc5z3GFzR2f5gb9muLydUX5DLFAR3FjiIZqWK9vLcjG3hnwGZ75fIHNl8Xl61V+pD5mw3yhhKPCUHimFIXtUQaACgAz0qN5jglbqUGxHwNpZSsb2E5PGNQjSOHWJ/SNijWlasG4xkM4qbeURYJ/+hmXuArbc4rBvRDxoKitteiQEiO8wWhBIB06uerogDJGaQOgjSq1zakgJRBS/IYhn+WkdNANFXJl/44qiYLenljvj91VJ/VIRZIRn5KmpdCmVECveWGhTd/ow== 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=1pmjJ+WmZlRIODULlPCaE2smD2KclfxSOQh9AnYSwj8=; b=Po9e2YeTgAZHwSUAPt87tKask1ovbF9qzQ9TBxDwWuTJtGuvHhrKgYA4ZmA8gkEjOy5kqypg0Pz4XA2e546vyPMzECR79AnjlQW+uwS9ujZpys9gZOU4cCGm8I+PCaDMjzVTnPlKVexBas/6867b30MdfDzMWP9RdpvTqHiHrYa58OMK3htkfzubWNvYklBg5MpjmX/02EyBCX88SJxAGUjm72+xqY+uRwEDkR+D3NZIwy6GPAshu6Dy7PAdyP13e4jsB6PH6QvV7NEQjJiZULxkDxU2vIYOp7itvJnZzycauYWmcjTxNm31kN2twLHy8M90tDIFh/ih/MCEp/F0aQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1pmjJ+WmZlRIODULlPCaE2smD2KclfxSOQh9AnYSwj8=; b=HgdARVkJoCdEQdepqLyMtn7Z0uU1njvoEsR1iTgln5ZY3HEuSnocOw8wn9fdTPuSdkD5wioUYFdq+TrH32SCkV8R957xJ9Fy/DuYGjcdzclXUZAJe0VPhRdAxbEyIFX/z8MoPebPe/CBd5uJYuRMaFspJaB0oxQMhMmInRzRWHo= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; Received: from SN7PR01MB7903.prod.exchangelabs.com (2603:10b6:806:34f::17) by SJ0PR01MB6382.prod.exchangelabs.com (2603:10b6:a03:2a0::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.18; Thu, 12 Jun 2025 23:13:53 +0000 Received: from SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f]) by SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f%7]) with mapi id 15.20.8835.019; Thu, 12 Jun 2025 23:13:53 +0000 From: Zaid Alali To: rafael@kernel.org, lenb@kernel.org, james.morse@arm.com, tony.luck@intel.com, bp@alien8.de, kees@kernel.org, gustavoars@kernel.org, zaidal@os.amperecomputing.com, Jonathan.Cameron@huawei.com, sudeep.holla@arm.com, jonathanh@nvidia.com, u.kleine-koenig@baylibre.com, dan.carpenter@linaro.org, viro@zeniv.linux.org.uk, ira.weiny@intel.com, alison.schofield@intel.com, dan.j.williams@intel.com, gregkh@linuxfoundation.org, peterz@infradead.org, dave.jiang@intel.com, Benjamin.Cheatham@amd.com, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: [PATCH v9 6/7] ACPI: APEI: EINJ: Enable EINJv2 error injections Date: Thu, 12 Jun 2025 16:13:26 -0700 Message-ID: <20250612231327.84360-7-zaidal@os.amperecomputing.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250612231327.84360-1-zaidal@os.amperecomputing.com> References: <20250612231327.84360-1-zaidal@os.amperecomputing.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4P223CA0030.NAMP223.PROD.OUTLOOK.COM (2603:10b6:303:80::35) To SN7PR01MB7903.prod.exchangelabs.com (2603:10b6:806:34f::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN7PR01MB7903:EE_|SJ0PR01MB6382:EE_ X-MS-Office365-Filtering-Correlation-Id: d9d13148-32f0-4192-5d05-08ddaa06cc73 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|52116014|366016|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?rA4jGIAF3d2XTFD1U/DYqbxxhbFM7W1anmETtOLG+BM/avVbAdKhLvoLxLPc?= =?us-ascii?Q?7l8SMA5nPO0aVZLAhHlrlYMs4dvwWIx2AtM/AWcZ1WH8FtyDht2V48ea7iGr?= =?us-ascii?Q?ZI8wuP2DVR4Y8X+zGDyR+zCWZ/zKvL3WaxEJfjvyu6GPdNv/AiBwqU2OzT2T?= =?us-ascii?Q?LhCIEi0XON73i2JHWordNGoY4OhjfIolFY0+KKk1muO+0CauL7yF3qB4HIER?= =?us-ascii?Q?PhmVoQgc7WKCHW2LayQcDf871Kmllb45bBbpazXDKAHlbwZ2UV9pCZ9RbHRz?= =?us-ascii?Q?wQBfAt2M+glIOzH+9xijO1EH/2cNmxUjG2yNgHDTfumpWhN9ggtWrowWZyNv?= =?us-ascii?Q?zck96AOsLbwLXlZbI7mlPLmyrXsiWh+rcxgdtZFsHgDBwTCSi7zTbFTOrSy7?= =?us-ascii?Q?v2IpIgycW6//lrsLVa0p5m9/jT1dOdWzYNVDcsSsFzwSefUbz3ZwCkgQlj8Y?= =?us-ascii?Q?2tLU1euo0q6nUzUhLErjaqEfciYZh3dvgg/tQ+Wrx6S3A5zQXoNtnfejyR7d?= =?us-ascii?Q?zYV728VMhsMrAon2cnnhzpcSMz4s8tSNcvW9Ee+3clRlVuZvoQDxehlzzkn9?= =?us-ascii?Q?CIaUVEVRs4ItK2h0H21ofJ9fFt0fJ0Pi26pNkgekFP3JlLOGNLeKYsS4Yymr?= =?us-ascii?Q?KmYpcvZoRlh+XnjRqfZGsoDkqRFGhTporqQSYlAnnQ15ToUqu9tAVLvPDujt?= =?us-ascii?Q?8tX8bORItTKw5ymL8mSkcfLaLjRgt1aF8wQQ2lsuvgKLufPecnTZ9780hVtF?= =?us-ascii?Q?iW3rJtumPMaujZufhHLvCcW8/axAS8J9ANhnPsODIv/nwHEWBv0MQgi+fqj7?= =?us-ascii?Q?Ru39lxY3r7meXhyEYLpYApGwkazGgknnB0N58+HeszADs75Y5aV/iGvCqqEE?= =?us-ascii?Q?L1mGBOpFlPruU1PCQaQXc5wZAC2xFKEFZ2mcvzciwcPXkvTfdeEv8WYYC/Ag?= =?us-ascii?Q?j0ZGV98cNWPP/T2wKePTF3AhvDE2bESXhIhpUXJk4lUgY7Yvf2oNYAJRDI8q?= =?us-ascii?Q?tj156XSSw+DOtB1lFe2zNAmCBuYpjAk0QC+0+R3VGxY4e1N9bUAkfWky0RH3?= =?us-ascii?Q?3H/w7NsJ7+UIvm7BgAZkHEwdrMFZ0hb/AAUg7NS5blTf08WzDqQ6QaK1Tb2v?= =?us-ascii?Q?U6Xs3Dme0EZ8xbQ4I6MkLob3CsfImXTJQVfMSmz/kMAiDzotKS48n0c7zAws?= =?us-ascii?Q?ZUXTUPV03rSSmzlVrQnvd4tRzOcBIibL4q8jcG3PC/MEXKDwlrDWj/YDgYyc?= =?us-ascii?Q?Ui2o3R/+vIAd/nYImHAAIydBZ7mPncIE++75IEFcLQI+JCR1cbRScl3Ruv5q?= =?us-ascii?Q?y6ctS/T93ivI452UnbkOm65P9oHzOSTyTmlMZ2MHOFIncR9DL4i/GSeNEscY?= =?us-ascii?Q?XAzRVnbslrHJNrMR3SkDz1ND/ABPHXQ11AF7t2vxJCjFcFTRrTgBegJLJqEU?= =?us-ascii?Q?d8TpJg8Oh5BT3v6Lw6YGWD5gOrT/OtskOim+jFL6tbHWBc81QDFqyOtrVeQk?= =?us-ascii?Q?SK1f9x+Ndz63GOc=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR01MB7903.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(52116014)(366016)(921020)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?RuV9Xs6oaol2iGJs+sSrmuv2kQ6iZCXzvSva5Ht+zfCdRuVdw4TzOQpi75j/?= =?us-ascii?Q?aSxU7zjyKcyQBtWy6gEUzKnG0rluy2VqIiQ00KZkA+jK/Gx32QhOIsySXnYc?= =?us-ascii?Q?cLUmtzROgcZdGdl0fDCMr38ancpoxvvdYHHJmLmHFG7AOY7qc/qZHr+NLOCW?= =?us-ascii?Q?K7t1tfdgZLh9d7HSjFp5wTbxJmA3XNvQKQKrAqreDFQiB9FpP1hjdsvfThxy?= =?us-ascii?Q?/bYgx9BbmKFS3XJ+hxHA+QVYhVQUkdVVb9NI2lQz+kDw6jfa9QvEm1/wIx0O?= =?us-ascii?Q?XrUhpOW3nKnKuhcBTId5fvj2pWfNDSGtpgTTc0BmdXttVgxkIgLgiHPuO9mU?= =?us-ascii?Q?49w8QUXPMRZ2rPskYZOgrtDi6/RQxeC1zOqrv32sQU8Vs3vUqkW+zXDGbjaO?= =?us-ascii?Q?XCmQ/KoLyXisAVa8IuwsNznZzBtyDT5vdGWN5sPoPQ2toYEWHV1R4kqazj80?= =?us-ascii?Q?4pt+mvCIn4pIRMOeTuNnOb5JL7bR5HFD47l8RAGV47XKAJ3/ZvcTq7+jB0kH?= =?us-ascii?Q?JMcO9Yim2AD11uRlacKGrvw5JGWLME7ZRGYgd8fGwXchwnYB3MNXI9IE9A/o?= =?us-ascii?Q?jimB9avIP0JJDBqmYI8qTl20wB8DGVPCs9JL3KzjJvAoCjoOetqtqhq/7yld?= =?us-ascii?Q?G82nqifn7LQrJsp4YM9VaSqe2S2F0dd1iU9Ov+10N/dKjcHgOt21MycUJaJe?= =?us-ascii?Q?krdGPCivrY4FH7/WiDUz/T+B1MzAmdjM3Q+L7PHfdf6azHC64/8Zd6FcRszP?= =?us-ascii?Q?OpwBEmYuTgQoMD2O3Gkg2Fo0Im/khNK5b9xUtCDhQtLCIiHEdYS5pfc6KMbh?= =?us-ascii?Q?eBEiO26Lm+BzwayEd4KM5nuDIGHyti/xII/9UWCvbKIYG1/w7/WJcPOOz5Lg?= =?us-ascii?Q?JgfZXgh14RxlIcb/SSiZmRwrTgkfyxpGDXgY9iLfg/TUHMsPvDhMEocXhKrf?= =?us-ascii?Q?SgeONW/qgfvA4HqtDsvhplQ4j/FGYnX4xQc5yvJGD4zuiLa3+Uu/OXy7Fy31?= =?us-ascii?Q?+Qwm5xakHT9IMYtjA6QovUkNOqJRDcLcZD7Z1dPmQx+bY/kLPZtHnWpFdOXo?= =?us-ascii?Q?cRxRqG2v5il7wemQ08tQPxWH+4TnX37GdFC2xjcRR4iaMc6P3HyfWZF0Z/Li?= =?us-ascii?Q?yp2upsPvUxn3h9RgU9pCJqNCVoVhiz/2MbJwBagjtxjErivWix5lqY4/Peex?= =?us-ascii?Q?PKzGXqt6WtD8txO/N2m0+VfaCQ/2C4efhTmOgWIV40Nxy9aTFlEX3F/+smqC?= =?us-ascii?Q?otY6cqTvW8hGd+8AnJAvgcjWK3zMjOMtElgQqbWp071c015TEOmCJ2X/NJac?= =?us-ascii?Q?UF0E/4QogqHWmbKG0BdOjHvYcBs/Xsc41LkGIZWhgWV9QUPp9VYclEjwADzs?= =?us-ascii?Q?Co6Z0EqWw+U0XKv3lLbW1r9VskrT2/BCVUs99m4S2Lgpz6hiiVIs2kKentVR?= =?us-ascii?Q?efn1X0LqhCuvaS33/bSxT0WjGsVuAmpxzBISHVNQ+22tEG0rLPe6kULDscCF?= =?us-ascii?Q?7tc91D+7fn9Te8x9O8Gdb4nPlFabLEtoZdQ9DQ47+CML8rRNh8fDSiZ/893A?= =?us-ascii?Q?RaqU6xbb9vXFwqk4eZNZcgJFon5s1ZoEkgsMe0LEmbg6MuT1xjjIj7KPM9mp?= =?us-ascii?Q?ZjOuNl4hPP1ECMlsLwZn1JU=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: d9d13148-32f0-4192-5d05-08ddaa06cc73 X-MS-Exchange-CrossTenant-AuthSource: SN7PR01MB7903.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 23:13:53.4921 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 9H4kUiM7igu0t/TMrOKT+RXMT11z99BGFVxwFaiW0843LxBzB4ZBfo2JYsANMlHtOXFMnkHODFpaOXpdSt7rvev9J7nZmxY7svWaYfXK4ZvYorX9QJeOOLB5VMaTTSCa X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR01MB6382 Content-Type: text/plain; charset="utf-8" Enable injection using EINJv2 mode of operation. [Tony: Mostly Zaid's original code. I just changed how the error ID and syndrome bits are implemented. Also swapped out some camelcase variable names] Co-developed-by: Tony Luck Signed-off-by: Tony Luck Signed-off-by: Zaid Alali --- drivers/acpi/apei/einj-core.c | 56 ++++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 11 deletions(-) diff --git a/drivers/acpi/apei/einj-core.c b/drivers/acpi/apei/einj-core.c index 8d60e5f1785c..7741c2082f33 100644 --- a/drivers/acpi/apei/einj-core.c +++ b/drivers/acpi/apei/einj-core.c @@ -87,6 +87,7 @@ enum { SETWA_FLAGS_APICID =3D 1, SETWA_FLAGS_MEM =3D 2, SETWA_FLAGS_PCIE_SBDF =3D 4, + SETWA_FLAGS_EINJV2 =3D 8, }; =20 /* @@ -181,6 +182,7 @@ bool einj_initialized __ro_after_init; =20 static void __iomem *einj_param; static u32 v5param_size; +static bool is_v2; =20 static void einj_exec_ctx_init(struct apei_exec_context *ctx) { @@ -507,12 +509,20 @@ static int __einj_error_trigger(u64 trigger_paddr, u3= 2 type, return rc; } =20 +static bool is_end_of_list(u8 *val) +{ + for (int i =3D 0; i < COMPONENT_LEN; ++i) { + if (val[i] !=3D 0xFF) + return false; + } + return true; +} static int __einj_error_inject(u32 type, u32 flags, u64 param1, u64 param2, u64 param3, u64 param4) { struct apei_exec_context ctx; u64 val, trigger_paddr, timeout =3D FIRMWARE_TIMEOUT; - int rc; + int i, rc; =20 einj_exec_ctx_init(&ctx); =20 @@ -521,10 +531,10 @@ static int __einj_error_inject(u32 type, u32 flags, u= 64 param1, u64 param2, return rc; apei_exec_ctx_set_input(&ctx, type); if (acpi5) { - struct set_error_type_with_address *v5param, v5_struct; + struct set_error_type_with_address *v5param; =20 - v5param =3D &v5_struct; - memcpy_fromio(v5param, einj_param, sizeof(*v5param)); + v5param =3D kmalloc(v5param_size, GFP_KERNEL); + memcpy_fromio(v5param, einj_param, v5param_size); v5param->type =3D type; if (type & ACPI5_VENDOR_BIT) { switch (vendor_flags) { @@ -544,8 +554,21 @@ static int __einj_error_inject(u32 type, u32 flags, u6= 4 param1, u64 param2, v5param->flags =3D flags; v5param->memory_address =3D param1; v5param->memory_address_range =3D param2; - v5param->apicid =3D param3; - v5param->pcie_sbdf =3D param4; + + if (is_v2) { + for (i =3D 0; i < max_nr_components; i++) { + if (is_end_of_list(syndrome_data[i].comp_id.acpi_id)) + break; + v5param->einjv2_struct.component_arr[i].comp_id =3D + syndrome_data[i].comp_id; + v5param->einjv2_struct.component_arr[i].comp_synd =3D + syndrome_data[i].comp_synd; + } + v5param->einjv2_struct.component_arr_count =3D i; + } else { + v5param->apicid =3D param3; + v5param->pcie_sbdf =3D param4; + } } else { switch (type) { case ACPI_EINJ_PROCESSOR_CORRECTABLE: @@ -569,7 +592,8 @@ static int __einj_error_inject(u32 type, u32 flags, u64= param1, u64 param2, break; } } - memcpy_toio(einj_param, v5param, sizeof(*v5param)); + memcpy_toio(einj_param, v5param, v5param_size); + kfree(v5param); } else { rc =3D apei_exec_run(&ctx, ACPI_EINJ_SET_ERROR_TYPE); if (rc) @@ -631,10 +655,15 @@ int einj_error_inject(u32 type, u32 flags, u64 param1= , u64 param2, u64 param3, u64 base_addr, size; =20 /* If user manually set "flags", make sure it is legal */ - if (flags && (flags & - ~(SETWA_FLAGS_APICID|SETWA_FLAGS_MEM|SETWA_FLAGS_PCIE_SBDF))) + if (flags && (flags & ~(SETWA_FLAGS_APICID | SETWA_FLAGS_MEM | + SETWA_FLAGS_PCIE_SBDF | SETWA_FLAGS_EINJV2))) return -EINVAL; =20 + /* check if type is a valid EINJv2 error type */ + if (is_v2) { + if (!(type & available_error_type_v2)) + return -EINVAL; + } /* * We need extra sanity checks for memory errors. * Other types leap directly to injection. @@ -743,7 +772,7 @@ static int available_error_type_show(struct seq_file *m= , void *v) if (available_error_type & einj_error_type_string[pos].mask) seq_printf(m, "0x%08x\t%s\n", einj_error_type_string[pos].mask, einj_error_type_string[pos].str); - if (available_error_type & ACPI65_EINJV2_SUPP) { + if ((available_error_type & ACPI65_EINJV2_SUPP) && einj_v2_enabled) { for (int pos =3D 0; pos < ARRAY_SIZE(einjv2_error_type_string); pos++) { if (available_error_type_v2 & einjv2_error_type_string[pos].mask) seq_printf(m, "V2_0x%08x\t%s\n", einjv2_error_type_string[pos].mask, @@ -785,7 +814,7 @@ int einj_validate_error_type(u64 type) if (tval & (tval - 1)) return -EINVAL; if (!vendor) - if (!(type & available_error_type)) + if (!(type & (available_error_type | available_error_type_v2))) return -EINVAL; =20 return 0; @@ -804,9 +833,11 @@ static ssize_t error_type_set(struct file *file, const= char __user *buf, if (strncmp(einj_buf, "V2_", 3) =3D=3D 0) { if (!sscanf(einj_buf, "V2_%llx", &val)) return -EINVAL; + is_v2 =3D true; } else { if (!sscanf(einj_buf, "%llx", &val)) return -EINVAL; + is_v2 =3D false; } =20 rc =3D einj_validate_error_type(val); @@ -828,6 +859,9 @@ static int error_inject_set(void *data, u64 val) if (!error_type) return -EINVAL; =20 + if (is_v2) + error_flags |=3D SETWA_FLAGS_EINJV2; + return einj_error_inject(error_type, error_flags, error_param1, error_par= am2, error_param3, error_param4); } --=20 2.43.0 From nobody Fri Oct 10 17:26:53 2025 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2115.outbound.protection.outlook.com [40.107.94.115]) (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 96F632E3385; Thu, 12 Jun 2025 23:14:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.94.115 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749770042; cv=fail; b=XBZrch46bI6xmYF9/juoNrqQ6i5dkYxSKsVFPbh8A7XIF3mh63S3iJ8kJOufxtZp1JuXYTgaZsrqJJLQqm372k64UU0zM4FfWCfKp5ub60c9vyhVVcSjQpiwq9oOxZL0tS0cg6ycPJEaJkbUXLkooVxnddbfLAFxkRptQ8vhuP8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749770042; c=relaxed/simple; bh=oLJQbI1EF4mkNGO3lt/Qbq+9IYNag87qeJ9lC7J0GOQ=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=l+I0zH5tOP42aYt2GedUoaigMTkZx52J9ZlE3UZ95gk62yyUJBxbb48yjVneb2Rh6876iWmvvg7ABDB6N1/dtVRF57FK1g+Uc6dXHK5FPInqolZuuPvH+GUByEgIpDLi7YPcmIOhbD3DhNPmZ0T0zrsW8uHZ8nrd/WZLIfOyJOg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com; spf=pass smtp.mailfrom=os.amperecomputing.com; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b=d8swLLh7; arc=fail smtp.client-ip=40.107.94.115 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b="d8swLLh7" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Axfv6Ei0SKBKFnVSAtRqrhFymwo0yRQryrxLUAtb+6F0gL5SSU4jdt7XXF+7SbrF7QLjoEc+nXmOWs2AHPzp6GQw8BoGAq9yBh9fDYKdHo3JzrD7kkqVtCQbq14Gr02r26Nrkj1A6oYx6TcoW9SHCWps+Haf1ONvfkKSGXK/POKeY+Ia6l7HT782vwz8O0K7xuAnaEnGclUH03a5QN/vfw+i95epgpOkhNkWXynf+s5u+aZVzSf0KtxbQl6ICaWW+KDbxXYNOHvoRFlo+Pj4jZc9yL8dz+ylCpmIlZE8xG2JmPavxntG9BWFgSqtRJNRMLjcGXCfoyXj63/lRpMSiQ== 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=pSPKTTiBIc8YfRhqV87VCulc/UzyuXW8QrhaqF3yRAs=; b=DPa4Su07uFIXnF59huDOic4v876PlYR+05wV4Sret/7uMK+9+V1IPu49wh0lxG16FjQFPJG2UaIYJG01plIn73CaSan1DQzRMD4Cra1u3TfDs+XgGkRcN63Djnai/IvZahJIFgZdjzKjNwhKUt+mCkIYxwZh3KEwaM+iHAxfkkwsNiclsS+frscKbfWprj0eMCVDvTWOE+VEjr4LcAUdRZMDXaP2Su9Xxc2duqvtVlnmUJ64FFTsz5eCrM4Z1gaJYEKJIRr16YYGcPZ3uH+AJf363DtCyiTZjUhYvDIasze9nZ288rEl6y1ZtMI1tKkjIEMRZ7YoLwfFD+hUoY+D5g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pSPKTTiBIc8YfRhqV87VCulc/UzyuXW8QrhaqF3yRAs=; b=d8swLLh7YYqkx+jzzwT02uAtIjta275pOo0tZ6mYihfdbvHEDgkCTpmleHGevGS/zniImdfO0pa9quPodgTRi+xpPqFR+AJmeWA0Y2AjHVS8JunrlNcODWlE/LmZwVb7MeivZZpyNuQ+W5rWnguc3jTkmTnVhX0IkkVu2AbwWjA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; Received: from SN7PR01MB7903.prod.exchangelabs.com (2603:10b6:806:34f::17) by SJ0PR01MB6382.prod.exchangelabs.com (2603:10b6:a03:2a0::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.18; Thu, 12 Jun 2025 23:13:55 +0000 Received: from SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f]) by SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f%7]) with mapi id 15.20.8835.019; Thu, 12 Jun 2025 23:13:55 +0000 From: Zaid Alali To: rafael@kernel.org, lenb@kernel.org, james.morse@arm.com, tony.luck@intel.com, bp@alien8.de, kees@kernel.org, gustavoars@kernel.org, zaidal@os.amperecomputing.com, Jonathan.Cameron@huawei.com, sudeep.holla@arm.com, jonathanh@nvidia.com, u.kleine-koenig@baylibre.com, dan.carpenter@linaro.org, viro@zeniv.linux.org.uk, ira.weiny@intel.com, alison.schofield@intel.com, dan.j.williams@intel.com, gregkh@linuxfoundation.org, peterz@infradead.org, dave.jiang@intel.com, Benjamin.Cheatham@amd.com, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: [PATCH v9 7/7] ACPI: APEI: EINJ: Update the documentation for EINJv2 support Date: Thu, 12 Jun 2025 16:13:27 -0700 Message-ID: <20250612231327.84360-8-zaidal@os.amperecomputing.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250612231327.84360-1-zaidal@os.amperecomputing.com> References: <20250612231327.84360-1-zaidal@os.amperecomputing.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4P223CA0030.NAMP223.PROD.OUTLOOK.COM (2603:10b6:303:80::35) To SN7PR01MB7903.prod.exchangelabs.com (2603:10b6:806:34f::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN7PR01MB7903:EE_|SJ0PR01MB6382:EE_ X-MS-Office365-Filtering-Correlation-Id: 3e46b068-b58c-4217-5110-08ddaa06cddb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|52116014|366016|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?6Oe5GaYeFqOsd9vdsyERNhTdGpqN95l5qVTkphTyKgoTyV89ZjUzDqFSSpEt?= =?us-ascii?Q?dRQNRT1l5oKFCHGsp+hp0j5DwvPd0hTkTslXa7fRYVeFyfRyLssmlmh6ElzR?= =?us-ascii?Q?mNo8uGHbFCKvzE8hVnUZMdbmZCH+IiFod5w2O4qbd9BgF9Xnur+6X73WVqcc?= =?us-ascii?Q?d9HVcwZWWiJvXaEwzko9ET3cmtO8sjew6SYFzPO4V1WCktM+zXNdCqQMuWni?= =?us-ascii?Q?5fJfU3OnkVaJS/lNF9v1Aj3nJMdnVblJKcj79xnYgZ9YTlqeIK0dpsM+ko0K?= =?us-ascii?Q?dOlnFe4+DNJ3KPh5DRoZMcvdMXCUuOrOQhWgGzGdgP23L/LAumX0pSVxMFkC?= =?us-ascii?Q?+UWyXI8015GLW66q7PSsujNHqU/0Q0+akcDvTnjcDemY1RqDnWikpNbS9/d4?= =?us-ascii?Q?y2s0wtnZkqvBYX2iuK1xwgnIC0e3fjvlplvxGe29j8NvfnmDv0x3QyBvTpqO?= =?us-ascii?Q?X5TKar4hi8CV6sA+ZZhnR6GQaONB9eVlrZxGk2ixc/GqhaYJddMcSOnXQi8t?= =?us-ascii?Q?PGGR8bckKRRsVURB3F3Ei6uiS6cgv0nYSC4STwdKhN7z/tYTjb4OKpT0mKEC?= =?us-ascii?Q?xCJV5Czu6wk4ZcNxk5R+rVyJPygiKuxbkWlCFL3eHFATJSq6Xw8Or0E+t/rI?= =?us-ascii?Q?b0CErHrTLCuZQvf/w36faKjY6E7Un/aiCnuvZMA1XF4EcoXlO0spxRh6nOf3?= =?us-ascii?Q?sE3LqFWx/+Rilj/CToSOg+DDI62lRH15bmDYvMJUtbIe7/40z1Hoq21SqG/G?= =?us-ascii?Q?lv6NRNyKAuM3JbDHc5FXY23Np8ArPNr2+0nKId8s0nh4wCMV5Xqjaj2O2hR+?= =?us-ascii?Q?96cTHm68xqNvLSEmjLDIq5X0xNgE++l4XHgpc9l6wSH3m8PzivaAo8EpAQ+t?= =?us-ascii?Q?a2Xd+i7LnfcQyg6VkhC3S5WGH47XtAEA7ec3UIgh9hOG8cibd9hwwSJxO/60?= =?us-ascii?Q?TTGHFDlUq++9TCDULg9O3FINRLFxLVaYy9+7BHOdASI1sBxIWXbQ1AaAa8OO?= =?us-ascii?Q?0BHIx28+MKnjloFNmBKe9J/EzTNIm5KsE6Drt7CKtzMurERS8OduR+ynbz05?= =?us-ascii?Q?45LLcY1Uxh7gQAjVBCUGDw0NYuJquexdNpW+0bfTrvuJ+Z+QAmqYVwXq48v6?= =?us-ascii?Q?FTXa9cIKFprSsyxNoRQR40DVR9biddmBqZZ01z29FNaNG4a5YhejL3HvXF8h?= =?us-ascii?Q?49IQTFjsiIHYUOCjIHcUnJE9OuAwFraVg711YS55BIR1In6YPcA+cW+GZrEM?= =?us-ascii?Q?F5uKZhYFPwLMwjkDi5ZyN89b38bnTpve3oddIutQ0JpnnZ87Ww/rXieZduwQ?= =?us-ascii?Q?lO3CI4W7tW3jOFfc/8V7RJbOLLEJGzhPFS48iffHmbormJt/qRWg6lq9fxDN?= =?us-ascii?Q?x/dU64v5GGbUDBRfr6LvpLA9rtPh1tW2f0u2WT5wEVk8D1r9zdG0i/asbheX?= =?us-ascii?Q?4HO7cMteYwONWP/bBp5pOPNdHhfGU/LL?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR01MB7903.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(52116014)(366016)(921020)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Bz8K52AZcd3xdbSxDRN0JBZDEhYrNwe/SW8OP+7f0Ss6wFPj4gOFh/GlTURE?= =?us-ascii?Q?XcyIiolc8OXgpE8/uz62JzUzm0TgFWY3lfgYUTK3wrInVFUOoEe/SQPtHxw4?= =?us-ascii?Q?+wBdJZ/a5+sNvuQ4jPW7XZgPFG01fj9KN8W75qIhH5WTUi722sS1PgZiHN5V?= =?us-ascii?Q?A0x2S1OTePq9PHtVPYqCHc2YY1Kbl0KWKdMfhfR1SilV0Ys5utLP3Xir3MV5?= =?us-ascii?Q?7VNdRRsLSW8ijL0/0GAGLOmXWAgH8C9mcoed+SRzzJVEWr3sXQW+OI6SDQ4c?= =?us-ascii?Q?CCuWn7qGWpYDT72v/RRfyLb2CBFJTsQGgupbpe/1b6OgUvAstwfxps5ol3IF?= =?us-ascii?Q?FsnnjP8Q5VLSa5kgorzGzku0KRTFez7Z2VX+j/ekOaZ7r4skD/CW3YitIVwX?= =?us-ascii?Q?9mKqpa1jiALH5hs+wjbIw8huGshL0iM+ye8QGXExkhJo3bmkJMevytNTQ3RO?= =?us-ascii?Q?Vy/SIYDI/cYCx0gMAJHeMh/Swa84mtRtaEAg3wPFr/5lmVLwcE/G2ZxySTMc?= =?us-ascii?Q?QcNXlneTSzOrjBzAaDvdCmx68DgAR9yhScaDNYSo/jLkd8r2R6N6Kd9XjO36?= =?us-ascii?Q?sjNAlFWmv8PRKFmmXCDUiJbF1j6lYcVwl4E8fDP+T5SisJpjIPIBqhWR1UDv?= =?us-ascii?Q?GJneBF/4QKZSorW/JD82CMtS1OVbxeyRpph48Ah1XQAC/fB9w/9KhEmEtfLK?= =?us-ascii?Q?4PSs8osyrNBoohoBC5pLh/1hqvgvKuwZH6UxS6QXe6Yr3Wu64XVBDh78V0ms?= =?us-ascii?Q?4FGMwAimCxY4QLC3ZytGHHdfg0brkpSyMCkTHbPe1j02H019AASpxdlkj+7/?= =?us-ascii?Q?KSGudXhfsvizKHaa0tWcWkt+bjinWcIm/x1W37Ya6Py5AJs3lcAbVfoG1+aK?= =?us-ascii?Q?vY2VndqIwst8Z3R9ar012Ra3czpsfihVKbeSDfflWD1nAZzcH/XzePLgoGQP?= =?us-ascii?Q?t5fmV0xQEdvVQneVayRm7poyIxqiUPEIM9N1K3txBGeUD4MHBS+7FgluOxy7?= =?us-ascii?Q?DiYSHO+mxgXCyFEJTTOUcrR+IOpG38C+WZdTWhhez3VBrL3fR+wH+fjlSPnQ?= =?us-ascii?Q?1XZG5OcnCc7Ml2ODLWjxvlpNAYNL8fwRfNzUrXxDV+VoK4qnnYOg6kI9XiVH?= =?us-ascii?Q?j9tR/K+m2rC+tU9o+0B6n1Qa/+9hDjj99c9UNfAwATo1ySKiEBBURI6HYN5q?= =?us-ascii?Q?/XrRyRyT6Q+EIEEIadxP1rXF94w+1EVhfWVoMrSuWBYpv4CiIs6fcNjh33xz?= =?us-ascii?Q?wReRjRHb0ugNvayOQd5EPJV/aMkwjBEeEbMYVYLcwvgMWLSxsISz3/5HcQ1Z?= =?us-ascii?Q?hBO9D+BTX2d1atq83zokgAWM8ybJaeA0WNVIZRAhi9JnPIX25zOYcMhnBVHI?= =?us-ascii?Q?7+RSEpNyFNndt2msp6F3g11Ygp5CX0O5xF4RY+Jxn7Sjd8AqT1/JQ57NusbM?= =?us-ascii?Q?+KFpXAjaI4J+oePJcgPyCx5v+nBDDRmaGhUWaJ7tKLjSVsx4vpU9f3Xwy3bU?= =?us-ascii?Q?FgKNrVMtvuqM8RFUrv0wjhSmwHEOjceyd+JzfUSn13Cb3L7R2/vLm6btTAL+?= =?us-ascii?Q?KCl8HmYHpUOJNI1ChwSYNqK31C1wVeV7L7tKcOx0cWsVrtmILK9wpuI4sIwR?= =?us-ascii?Q?LrMcCbQDV2K+I/WEqSibuoM=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e46b068-b58c-4217-5110-08ddaa06cddb X-MS-Exchange-CrossTenant-AuthSource: SN7PR01MB7903.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 23:13:55.7722 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 9oGhP7uwEzG3Th9QXQRDiqOuk7IaJEkFtPHjn2edLBemaqv3iqtQRfVKVrD7yGMsIok+ckwYtSMo6kl4kjU8QAVpSBEri0HNEKJ8kje5h58JuHOZFCHs/iLK646NgLGw X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR01MB6382 Content-Type: text/plain; charset="utf-8" Add documentation based on implemenation of EINJv2 as described in ACPI 6.5.A specification. Link: https://uefi.org/specs/ACPI/6.5_A/18_Platform_Error_Interfaces.html#e= rror-injection [Tony: New user interface for device id and syndrome] Co-developed-by: Tony Luck Signed-off-by: Tony Luck Signed-off-by: Zaid Alali --- .../firmware-guide/acpi/apei/einj.rst | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/Documentation/firmware-guide/acpi/apei/einj.rst b/Documentatio= n/firmware-guide/acpi/apei/einj.rst index c52b9da08fa9..7d8435d35a18 100644 --- a/Documentation/firmware-guide/acpi/apei/einj.rst +++ b/Documentation/firmware-guide/acpi/apei/einj.rst @@ -59,6 +59,9 @@ The following files belong to it: 0x00000200 Platform Correctable 0x00000400 Platform Uncorrectable non-fatal 0x00000800 Platform Uncorrectable fatal + V2_0x00000001 EINJV2 Processor Error + V2_0x00000002 EINJV2 Memory Error + V2_0x00000004 EINJV2 PCI Express Error =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D =20 The format of the file contents are as above, except present are only @@ -88,6 +91,8 @@ The following files belong to it: Memory address and mask valid (param1 and param2). Bit 2 PCIe (seg,bus,dev,fn) valid (see param4 below). + Bit 3 + EINJv2 extension structure is valid =20 If set to zero, legacy behavior is mimicked where the type of injection specifies just one bit set, and param1 is multiplexed. @@ -122,6 +127,13 @@ The following files belong to it: this actually works depends on what operations the BIOS actually includes in the trigger phase. =20 +- component_id0 .. component_idN, component_syndrome0 .. component_syndrom= eN + + These files are used to set the "Component Array" field + of the EINJv2 Extension Structure. Each holds a 128-bit + hex value. Writing just a newline to any of these files + sets an invalid (all-ones) value. + CXL error types are supported from ACPI 6.5 onwards (given a CXL port is present). The EINJ user interface for CXL error types is at /cxl. The following files belong to it: @@ -194,6 +206,27 @@ An error injection example:: # echo 0x8 > error_type # Choose correctable memory error # echo 1 > error_inject # Inject now =20 +An EINJv2 error injection example:: + + # cd /sys/kernel/debug/apei/einj + # cat available_error_type # See which errors can be injected + 0x00000002 Processor Uncorrectable non-fatal + 0x00000008 Memory Correctable + 0x00000010 Memory Uncorrectable non-fatal + V2_0x00000001 EINJV2 Processor Error + V2_0x00000002 EINJV2 Memory Error + + # echo 0x12345000 > param1 # Set memory address for injection + # echo 0xfffffffffffff000 > param2 # Range - anywhere in this page + # echo 0x1 > component_id0 # First device ID + # echo 0x4 > component_syndrome0 # First error syndrome + # echo 0x2 > component_id1 # Second device ID + # echo 0x4 > component_syndrome1 # Second error syndrome + # echo '' > component_id2 # Mark id2 invalid to terminate list + # echo V2_0x2 > error_type # Choose EINJv2 memory error + # echo 0xa > flags # set flags to indicate EINJv2 + # echo 1 > error_inject # Inject now + You should see something like this in dmesg:: =20 [22715.830801] EDAC sbridge MC3: HANDLING MCE MEMORY ERROR --=20 2.43.0