From nobody Fri Dec 19 19:21:21 2025 Received: from CY3PR05CU001.outbound.protection.outlook.com (mail-westcentralusazon11023110.outbound.protection.outlook.com [40.93.201.110]) (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 6C85E213220; Wed, 4 Jun 2025 22:38:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.201.110 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749076703; cv=fail; b=cJdP2BR1739U4oObs0XtolYH0p8sa7XTYLX/rQsq0RHHDGh1DkXg6mzEiXvwBP6d5anr4WG226VXO7m7ZN0zxxvf9vrG3jIUABN9Md0809WRH5ynsG1LDRxaCLLKda96KYitFgeUojX5gI/FrGoeFuTMWNDRa3urtoFcOUMIL2c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749076703; c=relaxed/simple; bh=q09/G6gujr2DP9gFYjlnU7Wiw8ziZ4QgoXCESk1J8Wg=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=E+UWjxbrLBsgGJUlkH7KdosSeGX30FmJ6MTwjk1lDJPzc+K0UmFKNCxjuLRvkqOxwOWnWTvsDXD3frQgmVFwOQypZnf2UR92GhVznY/o3agIdGfGSN+rocvIQ3Hs1NY+b9u51JinHVyG0eqlnnH/R9rje3qBakaW1x1njGOx8HY= 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=Xp+sEbyn; arc=fail smtp.client-ip=40.93.201.110 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="Xp+sEbyn" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KMnsnmAVLOpe9WVALZ1sYnljdthboZ6HN6d0yKB+qDVwnF0l4yKJX+3WArhEMH6+KCd2L6IMwI24nojd29Y9GPp+HDard63oRUttOK6o6oOFuUX9BnLBgXBQ+Mwi6SzHuRYeUW6zjtUKsvmXARFLxCfWdbemgt+AlAkUrm5OHaNf8hDWbIRcyrKU1r3rM3sfOOytPtHuXxEErd6xtbJqgM3tBvbtrdHjvt6T23AGvZwfLigqAQzXex7VIhq7/i0RCzhNIuxMkJ6LJy41E1LcQixG8VFPu6UbWBHbToBv+p4LyccRvdmucfoe0oNtybZrHhbnCaGW5H2fUxUW91AKUw== 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=lqQ2pH/ZH+5sUkOfH6ltcAJH94eurveAuVDsjoJAleI=; b=mVFyJzEv7o4btA4T9eYpM4budoWXLNEFQAC31YS8bOMty6oCcZ2Wtl4oWrcHNCEgwbAK00dhM7TaVPJdq1E1oAn/foc8ys9z/Rjnio9G+Gvi1LdpLZ4l4j3UL8/p+16NvZpvHoPrxOFN7glBZebmhhplzP7He4tV5xN5d8HnQp8JcIYsh172WnB9oOKWlzfkh1aqdVzfYPEpT2Awrt5/2WgA99I/DmPPr7BF9iNwB1bGGjqt499nYk/Yhc5w9gnbdHp8FlZagYkS7bSXYKqGxxRe3K54L92iPBlu+G4H22M/rFn4/wLr8tH1bxWQTwgavcsv0j2AHNL7gUKELEZ7Yg== 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=lqQ2pH/ZH+5sUkOfH6ltcAJH94eurveAuVDsjoJAleI=; b=Xp+sEbyn9vd/ngVPvIx1UmrgcFYihrIKSj75eUP2BiWebhpXA78i9M8C2xX3/+nuA+9coyC/fVQuqWrS4KkS6C4fni0KVKWwS1MKIazbB+MWerdiYmlnuzmxmR9A6QHotLDA2/iykMXMR042y6Zx9Nf/Y2aO+ZdmEBqtWTkCt8A= 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 CH7PR01MB8810.prod.exchangelabs.com (2603:10b6:610:24a::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8792.34; Wed, 4 Jun 2025 22:38:18 +0000 Received: from SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f]) by SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f%6]) with mapi id 15.20.8792.034; Wed, 4 Jun 2025 22:38:18 +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, u.kleine-koenig@baylibre.com, jonathanh@nvidia.com, viro@zeniv.linux.org.uk, ira.weiny@intel.com, peterz@infradead.org, sthanneeru.opensrc@micron.com, gregkh@linuxfoundation.org, Benjamin.Cheatham@amd.com, dave.jiang@intel.com, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: [PATCH v8 1/7] ACPI: APEI: EINJ: Fix kernel test sparse warnings Date: Wed, 4 Jun 2025 15:37:58 -0700 Message-ID: <20250604223804.842501-2-zaidal@os.amperecomputing.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250604223804.842501-1-zaidal@os.amperecomputing.com> References: <20250604223804.842501-1-zaidal@os.amperecomputing.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR03CA0308.namprd03.prod.outlook.com (2603:10b6:303:dd::13) 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_|CH7PR01MB8810:EE_ X-MS-Office365-Filtering-Correlation-Id: 32b35e6e-1309-4359-ec32-08dda3b880d7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|1800799024|7416014|366016|376014|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?aKx8D9C+wIS5FLzqbCTOUrviU7kQoldxFaqEYDQ5e7f0oagshB6l9qmmUu5a?= =?us-ascii?Q?feAYSqtgXdb7e9Gh1dOpYxaRMSSkFiTTGe1n+Msiq1OnzYe5KWCEfO+UN/1v?= =?us-ascii?Q?fi9ZJl+U8BnKKmeV10I94liPnSDRBjRB3rGByax2HSikuTraAF2tt9d2uSIs?= =?us-ascii?Q?DzaYMNc/ZKwb+Ix50xU05kgedBc3jVdtDSyDb4iTy3yoy7crZ3ZeWSurJcXq?= =?us-ascii?Q?WU9m/dSfT24sP7ak1rn2uGf/n1DJs5pEVk2cuonECYgX+5hPi3yT2eJl1Kb8?= =?us-ascii?Q?IUq5dKpfSGThae/cgYoRRr7215kCtBMfZSljM6/ngpHtNzgDrMf9KbAMo9Qt?= =?us-ascii?Q?Z03PIkRVdoxDT9I3dfGbA9HBqlqtKQuAsnmUiuvnhNeszrs1Y+2lQDo8KFza?= =?us-ascii?Q?Y6pcd3l3XHynpAljGgPFb0Hv63yFjMEVWFSVaVTGT93dXalAEqEYXgCM5vjU?= =?us-ascii?Q?25d1PuNiQOPOYyBrCFis00ZHVfjhKwGJGB2Pp3V2Js/WtEOXmKlqTRx2gVsh?= =?us-ascii?Q?cGeDPJBhF9awN/HJPiS0rtSgeY2cx6oPmFDUEA5pF+p/U9ucsl8jAwTZ69Zk?= =?us-ascii?Q?P7Tn/9j04e50ysqCIDC+HALn0eiy3y/TKAovvL7jBf5C/VJ0mgOUnDIzq4dN?= =?us-ascii?Q?zzpwATmiAtblPJPq/uVN08YvAn5mgIHIG+612WJrTprGLjqa4mKT95YM/G4f?= =?us-ascii?Q?u/Hv+0+ZFucs9WIJ+atu6Has35autFPM4VCVZvcynuyqVkJeq18WvTgMYgXc?= =?us-ascii?Q?iPbVv9uWZGbBun6Wc69CVpGH89xcvrNb0IRXg8kz18Sp7fOFgsHOEQn10RRP?= =?us-ascii?Q?vx2XDf5+i5T4DO5vOqeRNTlLkNR1nMV4QOmH3UVYqwGQ+BLxywf5eQXmlh6o?= =?us-ascii?Q?kmmnmYro+cGa1GrJI2hCKXM0uOAGwmbZp7r++zyC6mgoRAD00mg01D1jzXI3?= =?us-ascii?Q?vM0v8d+WHny/lafzOK0bT+BfBt17+gvKpjfvJdxbbYoFbaKOk4ODWFbjipQa?= =?us-ascii?Q?sqrfk5IxXCpF947mWvWA+Ukfoliu+5L0yVAPnXsHnP9+119qEijmLhtszzGY?= =?us-ascii?Q?sB68JljD1l6tUMt8zyRlQYE/Kboz7NojHtpw4uAupipTEiCHeFC+2NvFK9XH?= =?us-ascii?Q?sZWBPQK1JOotf+4HP3zV3DWVK5ZVa3C2bTr4ZbT1UqQpv5HjrmSc8ecHLRLi?= =?us-ascii?Q?wCGoCsx8BnioQqplw5id/FObtA6cjG/+A/Pi2qDMBTo/ZoII8wfIf4mpjaFv?= =?us-ascii?Q?LKdKeXwvIMmDx62J+E3GTgMdrO6anXsweuE2iRxA7SPEfMgTDLp7EC6SabSv?= =?us-ascii?Q?RvlDNwe3oByDw9yxZ+kP1kPu2zgTOZl1gga4148nVsjz4Oui8Y33K9vO4WXe?= =?us-ascii?Q?1A51mXQfNQDh/dnZWzyrEtKJuTz0FgtlcAo24wwItq5wl4s7ZSW2+Wk7V0AX?= =?us-ascii?Q?WJp5+l+SCbDuEynI9S7hhTgmx7IRoyVD7SVVRy2FE8cq8A6sgU20KlNAr+QM?= =?us-ascii?Q?7vqdcRJZYHItIG1CrqfVzvyxQ76XQFJrZkU7?= 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)(366016)(376014)(38350700014)(921020);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?iHL8b4+B8Y/tvO2xDAuE9lg1WQELoXe43ov6uhrC7gqWnLEc6xu4OSPzx/Kj?= =?us-ascii?Q?T1htvuP9hKdDryC/G074LRf7kZI6p3h5kNwXC9hFnDwA+rJvizrz6s0zOiRE?= =?us-ascii?Q?9S9f+coup0WVQLzVbSDctj/vIImG+1J8QsYhNjpgyITYXgwlp9IYBRBZs0AW?= =?us-ascii?Q?3wxkzLna5c/Ja+CdHbMaE7bGNaXJ0pvZpVfr9Bg4v5ml3CGHzENsTso54Uuq?= =?us-ascii?Q?iPjzRAETFZgCmfBGl4euvLHtLiobR/OhF4CyEYZiSV6V57tnjHkVJZT2Sl9q?= =?us-ascii?Q?0pu14FqJnr8k+lg0241nXBIyB8qxNqbME/LDMNlsFsWQSgfoyIfhHPGZJ44W?= =?us-ascii?Q?K1NVeLrxuXOHneqHISsO1z5jcymZYgsrPMwClDTd1j5TL6wX6P+IxlJFUnSV?= =?us-ascii?Q?OEia/jD+Y81LSJ8ciZTDLwhwvPyD9pAbOS/CBdUeBE7jJdIw+gy2QK9BuF3T?= =?us-ascii?Q?ynRxYPk3tXp5+0WzJAnTITbQKu/XuEzBW48Xe0iIV79vTZluWRomonPIXi1k?= =?us-ascii?Q?TV/Aghe+9bcLoAcFj5sts5olrN/jCojNxFGatbJbF6xBRtYxkWaIGfkQSwlw?= =?us-ascii?Q?4468iIbz/BKPC7O+ReVKqjllzoW/Wp9qU7GpaU6y48Pl/gbPvX70gwFh5Dw9?= =?us-ascii?Q?cdvQ7+R5dcr+tWOJlfo77FYdwPWJPTLAzmeaMlq8ftCiTLQfabJ5E6OXKBAy?= =?us-ascii?Q?czzzOwJoINFZ1jDU/t7uVxrcw/GekN0vOKzurq/QG52ouwR7u3lgU4Zc4ujv?= =?us-ascii?Q?wSzfYF+nIl2wHsHRoMhgGax5VsILYzMZSUssDJ7JRTFuZRI2tllluS82SjB1?= =?us-ascii?Q?9ifEsP0pWxOxcuDh+czfZco/H+jbYDUfqvy59icey7L1JxtkRWGrbQGA176e?= =?us-ascii?Q?V/h45Skyg/9P3mkZeiiHY1n3khU8H+MLnu5s2LkNSb2KY05WJgSjs5wQwkDX?= =?us-ascii?Q?ie5r+XGwR8ObEiN0cBwhKK5tlPvomQOMmWPWw9g2V4MN4uxUMj/EwBPjPBRy?= =?us-ascii?Q?Y9esv8sDSC3dx2OiS1ihvJt9/t5+XLs59bpuoeu5iVPOvW+2LKlzJbPNSza6?= =?us-ascii?Q?4+MytMQmWqaUQ7g2aJSIY2bPUM2iUNAjB/rzML+hQq6QOQAHBckiC7RG+BpW?= =?us-ascii?Q?mZpgWttILnrs5CEh50BJWtK+uMPNOggP0j3ZgxhbdcNYw2rIWEM6LCI41Uys?= =?us-ascii?Q?7qPViLi/thPGrkHhP8XD3wh+ilEEPosRC28AILEdZELpYZ8gZhKQRgt9gJmv?= =?us-ascii?Q?+ZJeRuK85fRnHoCR1w5MxmgFlWKn8I0Wr5G5UCpImCJBx7Upsf9spvEakcEl?= =?us-ascii?Q?XkYnJWKpfjs5NSGZo0EuM0sQkW7RadZi6RnZPExXkHYrE+THQqvURfI4PnG/?= =?us-ascii?Q?iE4wdvrWkuMrkTgkClvxHQ7ccb8MNUi5ZUndG9pq3lM9woTarUja23SdmI9t?= =?us-ascii?Q?OYZm1EBKj53KUOjYV4V8VgU5e0JnV9yiwzAsARpQlMPspY9IgM2LSHIZCmBW?= =?us-ascii?Q?JR7WTbrlIwecnd+OK3GA8/I2KAc4qZjbcUaJ03Z5532GUgVlt0PjfXeWgzHr?= =?us-ascii?Q?LlxU9KQLN+xQlD8j5Y73MmxPRVRTW3HytVqAqNJRhWFvXrnGx33b+tgiFe7f?= =?us-ascii?Q?sHg5NqBKajsbLgoa3SmK7jY=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 32b35e6e-1309-4359-ec32-08dda3b880d7 X-MS-Exchange-CrossTenant-AuthSource: SN7PR01MB7903.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jun 2025 22:38:18.8686 (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: HmgH2y/S500qOTjNoRwrfqern9vXqR+jV9ljEPJljg9wBhnaJFdP/Lb3fXv19t90xWMwmi1EyNtUZo/0JvScZLDCozU0DoqPbBd4Ufreg++eFidPJXN+YCBbG5rk1KGM X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH7PR01MB8810 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 Signed-off-by: Zaid Alali Signed-off-by: Tony Luck --- 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 Dec 19 19:21:21 2025 Received: from CY3PR05CU001.outbound.protection.outlook.com (mail-westcentralusazon11023110.outbound.protection.outlook.com [40.93.201.110]) (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 7C75822E402; Wed, 4 Jun 2025 22:38:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.201.110 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749076705; cv=fail; b=KfwCKBj2XCn5KIkWiiLRHBF9SAoxcS/P/dkFNsDJM11VJsAn5GjvLhrbIMKIdzGxZ24tqn54GAsZ4Gg1zFJhrp3IqJ6E/GTduDsCAcj4rzU2AhAfYPKduPKupIMBFQX8UDp/Cr+0pWm5BjxlC7bH2NhieuWum2bU4W7RHoN7uTo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749076705; c=relaxed/simple; bh=u/gHZ/oTKrn29Sm/I1DAL8Ho3MGqRSGOHLMGs82HCDc=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=O/HMtoiLvgQXLk7/I5f907olHjmz8/Pvy0T2DYqmhxeDhNiRK6jnZRlYJnypReUFtOCZmBswhmFVJnlYSdrj0e6E5cDWOjhZOTS5c3UWXxQDU559PT3g+xRkepgbKDetosM81hcLuTXO1F0PJXrlaJBLaMrpHNMvbIPgqdDXLwI= 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=jAx59wBD; arc=fail smtp.client-ip=40.93.201.110 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="jAx59wBD" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gwm3UMu+NRQBWumS0MDZDI/rFK24mGWCWQsAqCsfYLmS15gX5ZCgWsJcVL89Go73zOZ/s6psE34NQ2l/xm0tkQE7tz95bEffvEwKJQHacqsHckEiXSiV8t15bimvfVdUFl+7Bh47qKWgAIuUnNlWoaqz0bkGIMS4j6vzRWS+Ahaoah6RlhOxQxVnJyaxIU9++EmhoEsrVForYwKHbJi5LBgp4PoBUjNtdIk6Z6dPcirCROPPNtpgTnGNKqrG/pfWGVY+XYOdrmHDXXQbS5OhysqA/U19/thW0M4gUze8OZNKDkia5etJKEgJ9rOrXtIUvVVfE1JhUCp8mvD5pA+tZw== 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=xIoOjmjHCZUwbrQeji4v4hiCoy827hvx3i9UArmDi60=; b=C+jP1AeOldcLtqDTuPZno7Djrlgwc4t4j2OFCw8/61wZu4DDmGMy011Ik/7fIz1tZony8UcqTwPjE8Pa/KZOSXo/HLsHCAGF0mJaKgFiDaoWBbJv+QwDViv21LOkAHmDh7vKftCmff/BRrdM+IgJOYS6ATlQZIbP7z4lyi2kvpd0pkQ3htzt/O3npOiyCj5M0Gpc3OBCY9dwGAjXpw5zXoA0lgk+aLE+pzAIEgb6wDHqdY6Xu4w464GCftDDQq+IlM4z7Lx9hxQmwKw8NJo8KRwjDOrkMttql5r5GYV/k503IhIk2eYty+7JALdBMvRJABrLoDeyxJTOMJkp416qaw== 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=xIoOjmjHCZUwbrQeji4v4hiCoy827hvx3i9UArmDi60=; b=jAx59wBDq8o9I7+lIqLZ2MOkfd0aZnv0aez/cy4JFh1M7GdpORWn7iLumUVGfiJChI7M9uBv97jZhqH2cUlMoGo3mlYdfKWrnxk9TiQm+agCw9UJNI5P8NNT2Yjh+tJKAdOiwlR+k12UGxur20UjxqC1M7+v2wX8qZQQ57csQkE= 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 CH7PR01MB8810.prod.exchangelabs.com (2603:10b6:610:24a::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8792.34; Wed, 4 Jun 2025 22:38:20 +0000 Received: from SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f]) by SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f%6]) with mapi id 15.20.8792.034; Wed, 4 Jun 2025 22:38:20 +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, u.kleine-koenig@baylibre.com, jonathanh@nvidia.com, viro@zeniv.linux.org.uk, ira.weiny@intel.com, peterz@infradead.org, sthanneeru.opensrc@micron.com, gregkh@linuxfoundation.org, Benjamin.Cheatham@amd.com, dave.jiang@intel.com, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: [PATCH v8 2/7] ACPI: APEI: EINJ: Enable the discovery of EINJv2 capabilities Date: Wed, 4 Jun 2025 15:37:59 -0700 Message-ID: <20250604223804.842501-3-zaidal@os.amperecomputing.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250604223804.842501-1-zaidal@os.amperecomputing.com> References: <20250604223804.842501-1-zaidal@os.amperecomputing.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR03CA0308.namprd03.prod.outlook.com (2603:10b6:303:dd::13) 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_|CH7PR01MB8810:EE_ X-MS-Office365-Filtering-Correlation-Id: bb5e0911-cafe-42d1-2044-08dda3b881fd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|1800799024|7416014|366016|376014|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?/KKweepRgk0Vwyq/gy0NVo6PJ2s2dsPmITTu0eW108ExClaV3+BV/i0fyzxG?= =?us-ascii?Q?G1jPzVqvXq21nJGts7Pw4KIjzyaoY0Cf+NyVao/aUP2CJCxgl6GeXW3Vhlof?= =?us-ascii?Q?GmEnHxoH0OvaWC2+vlAwaC1i0gofMndelIE7vYQ5tfCwDRDme4I0jaWC+nIj?= =?us-ascii?Q?WAihfPO6Io70dIkU4FLGCLN9Oo1IrVFtxICjMw0WdHF8A4dcQkPuOWDQDeG/?= =?us-ascii?Q?IvUplHQflZ6CWLtc+1XDhtytZe6He+bfC/+ZYD5bUYKKGQFznI/FuewDaC2X?= =?us-ascii?Q?Rmzfli4gW1/72qbISvV1aNFIQlUU2PcPDMq1aiwg0uJWKRn7ZVCdMf3vcKe/?= =?us-ascii?Q?8wHNXaQb6/B0z1dpP6g61fEBG/57n6OasifcNUEYgMOveM9I0VGetGQIIxWe?= =?us-ascii?Q?zwV9+MxpNRXMi5Jsl6UDfa7uarSTsB1Z99NNlu37q1gznEPOZWA4972WGNAy?= =?us-ascii?Q?JpHK22j9Joe8r6YiX60t+zrXHa/3v21rSc9sHfQD4B2GmyZGbeqbHqDu0pGH?= =?us-ascii?Q?Tz7AvV3mu9mjxs8FY48sSoOkL3Z5hPh4+hZ/Xckwp2oEsVzCcp0Mc89eEshR?= =?us-ascii?Q?vjGlIw2JdBMiR+G82Z9x9BWMzv8jrSKhB8keB+eT6SlnUVDrNHCy+Z3lRGgv?= =?us-ascii?Q?E/f+WYi+OaHs+7qxXDKJswfgMNPKuMjuUhth2PMQxeROYJkuMOvxinJCRaqx?= =?us-ascii?Q?9JriQoSyrmlECUQ9XUa6zB/Be88UznFvJtl7RkV403mXvJdXQEDkBCy5yaxz?= =?us-ascii?Q?f0j5eAKxi7vE3kBz/PhP2fzBNRyoB9jQQ9S+IkKbN/S04jOQvt1/aJcz55Hx?= =?us-ascii?Q?iaj0JS8uZLuTXFBCdjp4KrbUBAHgVSNGM+wVjOLg6wJ2Bz+/DHZxzJ38jbpQ?= =?us-ascii?Q?s2O6De33YCB0qutuizd0cgwuTIopQJedVDllGPfhhQSvEIvFf1yP2H4s6jnn?= =?us-ascii?Q?iZd89ZY7ObeBMJNTk/wxJH9ZCohSS0dedp3jS5LsWuBtcTJK7XUdxKnyUr6l?= =?us-ascii?Q?Kcqu9aTcVKYP83gLStlVu0MkVaOozlvywqXAgtcEYb5gqXG+o16OdhD4rUr2?= =?us-ascii?Q?cnwz2YQWYhg9VZMaB5jOwBAiO5qedU96JbdzI4ZQbZmKHnEI8H32g4AL4Zs1?= =?us-ascii?Q?qtYjrxt6Y4QyGbD+U7TkjSXe5h/C+get+zT3iWKP2IS0aifuSFmipwjVbdQ+?= =?us-ascii?Q?eXP9kfi42IZqHTYynAd7HaY+/Wb5tVwd6PD38Fbn6j68c/qBPmL12qkcmVVs?= =?us-ascii?Q?fysvKnbf17QfFCpEGpU3PXZ69tCvW17sFnuD7RxEDN76W5jeOy9LRp8gPDb7?= =?us-ascii?Q?PlguZjLBtIO+bNcKqGaNodLJuviSb8/Rw8W6bFdV2eKSaZxf/EbBl6QSN3Nc?= =?us-ascii?Q?Gts0+OemxVLOxBABC5sSy5lCIUmwn2UKxCNmfy3ediNocCJmqW1/LGRSeyxc?= =?us-ascii?Q?wKs1Y28ePrXBFb8lt/QQnVKRl6UeKEU+4dOTsJRbD1EAfVnLY0HKOSMOhbSo?= =?us-ascii?Q?aosMHZeHY6i6E9A=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)(366016)(376014)(38350700014)(921020);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?GX4q62P0d2Cj96EsdK5Z6MyYWM8RLJyGp4T4rAVfNYokOwBl6Ommb2BKhBK8?= =?us-ascii?Q?0KBeo2xlxn+hJ9FaL2CBJjEtXTJCJXUFzziSEntmRXiZVgFTYdhsS5CwxZKA?= =?us-ascii?Q?oq3q53Tn6gYHT2OsfoFwIc5t4iEwjD2WNvSeEhaTK+I/z7GdKHxSE3QcdvZP?= =?us-ascii?Q?wiA3DPQ6EPNE95maXtRjYTef7NrKguLLHApvhhLJ34Qfeih+j60awQaeDYAA?= =?us-ascii?Q?IyCBJ2s05jcVlJaiM2/knh1FBU1/Feh2nTBGa9SoM6JF5iBj4VEmGdtZ4hou?= =?us-ascii?Q?B8ByhZmOPVloZ5kHjSZ0INO9vQlBXZ8MCz8NHcDKHKsJ3NzNSVG0c4+B+dJd?= =?us-ascii?Q?d3P5L2Lpn2JhkyFplN9qPrXXeStQcbJM4hj9jlTVSHsRWlf38xWGtIzcwYbY?= =?us-ascii?Q?MYQ00XteJzW/eMgEiW/r88/yd89zzqcxa8kXgcxypXWr8hNw+wS5J4NcFnjv?= =?us-ascii?Q?Vkm9rWKGrdfBLjFJEQFVYvNBvH1Eo3o251fjwMPO5422yxB15yTBtuFCz66K?= =?us-ascii?Q?hB4OK8ZTVNMn02SW2UhT2TukUO9Czk9hFXWgnh4q1ACYsKXJVbYRwymYTyh4?= =?us-ascii?Q?r8sK2bqSTTPGjMmgx0J9KNnwX0TBWn7HWtJIcqI0pnXedLdjKPrGq9oCBq2X?= =?us-ascii?Q?kH45Qwh50rXCLEkU14FcATcJ/cuWjAkzxUfKDYVwyqk8HOIpSfOuZQmCmHRd?= =?us-ascii?Q?2cuaYMa/OvW5/5umfw8Q4mLmJdUuSmOeizx6fWpONAipeS/sk7bGQneABlDd?= =?us-ascii?Q?/7uFjF9rT/pjbkHIoXkIAVZmB4xLn7vpqbCdNq+EagZDKoWfX77he9JFbV9/?= =?us-ascii?Q?rlq8LbQ0lzszjhzjB3n2gFJd5YZuKaVP0Kq9nu9N28vltlQkrB75aqPh8HBk?= =?us-ascii?Q?aR8a4zeuHgt2jtIdymHSnF1MSCGJ5d/D2XgTMojicg4jTrssS4ypjAWmse5M?= =?us-ascii?Q?6mjzMmpayVQ4Vy2SyJd/EBe6o11Mb23kKqGI79yHjMMZxESdWI5ZilHpEepu?= =?us-ascii?Q?ll2gx+f9R2AgILMPlHUSo2cqjBPJ7fKkCEbQvXfL7M3lShPiVRKatgZ+Po6z?= =?us-ascii?Q?r3hyPXQvSylYLf+TH7vHN4ZBxWNk1i0lGGqxSVa/ed2cD8tn75YYYKrnTTtY?= =?us-ascii?Q?BOS+rrOz8fcSx7JX/z733iTg3HFBRoNpfH82GsmRW5FRKVDPrZJtRR7SxTZU?= =?us-ascii?Q?vYgyn4O88vSRfyKgxnHEyUtJWhJDrtrOplJ5dWtf4KyWZJRH7Ad256dVw1ow?= =?us-ascii?Q?kbtWPVm6v13OLK3gKDsExrIp2BHoQ0CiDavhKJiE+qqUe4mhJu4tX583a/Iz?= =?us-ascii?Q?X0f83dAw6QjeumV4qvV6Zw/+vtAlCHFuiiUdcoi9uf0+fWnv3971WcjHfr2T?= =?us-ascii?Q?Genh+4rfX73SPfik8ZiWjCzHuX2XeqVkvlQIoih5YbM6yFvea+m6lqArGn58?= =?us-ascii?Q?EuPdu8Y4DwAZoHnXEUq+tGu1g5NzI5WHJb6ezkKG8P8QpHIr3pzJWZtRMkVd?= =?us-ascii?Q?v62yJm+jSdYZ212PSAS+Woa91PhO0g60YsVAagjo3GsQPMqVN6OrtMx4O+qs?= =?us-ascii?Q?bP5qdA/nk8nWjktmf2NB+XVEDaqpO6eVnUQQQCdN3WF2RHE/eOZ1z0BousvW?= =?us-ascii?Q?i2fQiDH8otHQ/NXD89zvuRg=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: bb5e0911-cafe-42d1-2044-08dda3b881fd X-MS-Exchange-CrossTenant-AuthSource: SN7PR01MB7903.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jun 2025 22:38:20.7966 (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: 1BuVxDb7PCnz93XzqVaVB4fqXxX3M/by+zKydp3sEGWUikvhm2xuZoMahxnW/038GbPJ7lS3h8JgO9m6mztKF7Z9rCBu4Ic2kIL7NRp3/11J+1tT5bWBNCIBBq+QtDcC X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH7PR01MB8810 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 Signed-off-by: Zaid Alali Signed-off-by: Tony Luck --- 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 Dec 19 19:21:21 2025 Received: from CY4PR02CU008.outbound.protection.outlook.com (mail-westcentralusazon11021134.outbound.protection.outlook.com [40.93.199.134]) (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 5A017215075; Wed, 4 Jun 2025 22:38:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.199.134 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749076707; cv=fail; b=STOzBFdlxh1rnWA8n/JB2Pb1bU/Mh4lyU8V54bFUSgGDYsKXJhuil9q95HSHyISCODrGxoiZOKvsRNzCDq5N1A8Moa7QKiO8FGkva2CfDFCVyxLAc8hr/JKVq0lciT7cmoCtO6Gs4fUjxxV3UoRbBhYzS0rXTJjbL/vf8HPCwUE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749076707; c=relaxed/simple; bh=MY7zhydBwQr5OVoF6PEWuCZ6Hb4iig1+gq0FON0GARg=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=D2hs+PceLI5QZN1/OTi+MJGHT6CDmJ71eFPVVLmDit9GZhpvI5bEaV7j0PGczRmQGVLD5jg7D6z52BsokqKRS66yP6/ex9gufuJPAikCpuiGClbM1ukhklmecMgB1A8jMIo9KYdvAykNpsorLaZ1cv/hHbL3EQubFb89An1Puj8= 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=aAqcw5B7; arc=fail smtp.client-ip=40.93.199.134 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="aAqcw5B7" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=W5NmlJA4gA5Xfxt7nel8lFubPNzGlCt8I0DDDjYVCYa9LAOKI4OlpZPu1Xg+DalJ9P4aQ2qz/UrTQM7s5IDB96GxVSOTFvnIgmlGbwEAHxsXju4+ItVVxq4uYvarY/MxNyslTQUMAg9YFeJnP8KnLDW7eEqeq4SxE+uVNnzuuQmb7o6Ozku3N0u0aXdmWhBdlxhwGh0juCiEhSC0JDVGdQJ7YDeMO8MvIxA/rFQD1DS+avY+Z8vkviz2N/xJ5IT3TEZhifl+2EBE+YkAprcLW88n1csztCSQaIylZsu0NMOBr4n8pmi1SyFfhjTRDH72/sd8/SBEU2MJi2jjbxD0Bg== 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=OqzwdDBv/ypc4ImH4iMG1Y3qlSrvinZHmdtYUIt+6HE=; b=sGqixeh7KTOKxLPTrz4i0jD3s9f+k43CEYB099NSZYdZGFoqgynvENxWCJSdMmBZGAD3YOfoHwa6UUHf9MdmRZLh/AJFhFrIXT9WYVC7VLOolZzZVkN6Ewzi9pwqhXCrWIZKoH7UkD19wjLUBYxMhajD8wpswpKZFGh3p/fuEJecT8xBuKQlhFag6KI2AMaaWdIf0uDIK+GaQ8/PnvB2Y85Q6cVxpwUN66r0pzFF3zfTx10Zd55zNgXSyEjm1aAVEDacceEuV8H2kVoktn2rkhXzJFfv6MKRQZ6eu6dDp0+8mmVChUsZWUz9tilKIUe4kDEIzUyot8/vRwoQ3A+rdw== 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=OqzwdDBv/ypc4ImH4iMG1Y3qlSrvinZHmdtYUIt+6HE=; b=aAqcw5B7LDOZJuotiZuX6Tdace8fwsVJmr7LwgyoI9BjZFfrn8HASmlYGsEyb1NUUvlXNbd82TE2lAwFYiBYMWCy4E5dBAnRFj9Q8d1RMVNyJbXSZDnRenfVDIbS8adYiu04Ie607WW5lS6uivqIicr0cl1Aay/b11XUmGMtR30= 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 CH7PR01MB8810.prod.exchangelabs.com (2603:10b6:610:24a::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8792.34; Wed, 4 Jun 2025 22:38:23 +0000 Received: from SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f]) by SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f%6]) with mapi id 15.20.8792.034; Wed, 4 Jun 2025 22:38:22 +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, u.kleine-koenig@baylibre.com, jonathanh@nvidia.com, viro@zeniv.linux.org.uk, ira.weiny@intel.com, peterz@infradead.org, sthanneeru.opensrc@micron.com, gregkh@linuxfoundation.org, Benjamin.Cheatham@amd.com, dave.jiang@intel.com, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: [PATCH v8 3/7] ACPI: APEI: EINJ: Add einjv2 extension struct Date: Wed, 4 Jun 2025 15:38:00 -0700 Message-ID: <20250604223804.842501-4-zaidal@os.amperecomputing.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250604223804.842501-1-zaidal@os.amperecomputing.com> References: <20250604223804.842501-1-zaidal@os.amperecomputing.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR03CA0308.namprd03.prod.outlook.com (2603:10b6:303:dd::13) 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_|CH7PR01MB8810:EE_ X-MS-Office365-Filtering-Correlation-Id: 990efeba-1cb1-401b-6207-08dda3b88345 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|1800799024|7416014|366016|376014|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?oDfPlmXLJF4wYgnAxFfi28l9Hq5WCDt6MbMsiJ2mGlvHkJScWyKR37wkaH2L?= =?us-ascii?Q?tYyGG+0pqr6nhXvM9Hg2Nl4JYEhdtdmewdTmHHr6JeRVx9V46AQn8U9P01yy?= =?us-ascii?Q?qlN1P6qG+SPC1cJ1EJtpo7yYpN0x2VEAIS60MXO5A2eO7Uu0GLu8aqfn5nER?= =?us-ascii?Q?RchqA7wrt8dOKN71+tGU6Z1SpiVn8YZuLAXeaCduXQ12QMPT0YAmZXgG/dqJ?= =?us-ascii?Q?Dp71AJSTLw0HhRnRphfTIO+hRe7SvxxUwvfPK++ocCfnv8SlpY4H3LOQIl++?= =?us-ascii?Q?C762bMtFajlLPknUbgk0GJ+A2fm8FUpQIwbxiHzPIai0e/KT4QG2M7oReDPa?= =?us-ascii?Q?+H6ZdQgaiex+CqiwOU52cOBmHihFx5DlPZ4rXThUy5iBEfnwm2gmWi5JKHoF?= =?us-ascii?Q?aqGW/hhpTLclCZpkGc/DBV+Zo074efbqB77o3P/vjNM5lo8v6lmHVuWVnWqr?= =?us-ascii?Q?Qp9JCkeHL0vGi7j7QL/Csrcx4R1byJIH/xN8kORMbkSyPtmZc4ajSo0fSbcX?= =?us-ascii?Q?7H9IwQCQpyRqqLh08IvjlgCf+qNE9Wp2o9KaQPY5u9gYjpK5KoFAz5yKDD58?= =?us-ascii?Q?xeyD75yTAlozs942k3V/EjZS+y1xSrmQQcDf4GkwVPWab6k6Gd0lzSKJmuDi?= =?us-ascii?Q?R1owPoCYEv2NjJiptJLXbYHstkQla5YayOnYVwG5cbgwoQy1Fr3AAgb5rDtn?= =?us-ascii?Q?nqq2J9P+s9ybgyqc/sr0EZ2gShP8OhDepZog6cANVQ9F3ypaJmnOkQuAIO8x?= =?us-ascii?Q?02+24PgaG0Ue8FPA84JZXKyHrUx1QndmnsE2yKMhZR5wdbrh8ntXEIc7sBPm?= =?us-ascii?Q?/W2hFgMGesHj+4HOVNzb2CqHVGgvTAlbcL02kECgfWRAnlSBqRXsO1GNiG3v?= =?us-ascii?Q?Y7aHfmFkci32dKySA85xe7pZpauoQ29XJ0BkCNKpDPSu4wpSB6kiQKwffAeE?= =?us-ascii?Q?XyX/o/Vp/K9zoqqyk8Y6MRPTRjlWa6Ej7DZIzNr5DkV93wabCwPqpy5q5n/z?= =?us-ascii?Q?YLdg9fz1n59Adjv9Y87QsuFTkZqOeQo0HxI8Ns4OcaYAMiIvYcXZS8SYjGB/?= =?us-ascii?Q?5RKajYvyjQiS40+OsUmR5t18tyyqX0AZQOlGvIiJ4oVCb4qYOqss/ZPQfocT?= =?us-ascii?Q?cgR5u0QHALm34nhMXKL5XcJlRYpUzJNfolSCz8a+B+iwgtF3fjqvLHshqN+O?= =?us-ascii?Q?AEhHn/2EgOdwdNTs/Hw2iAHR0MebQACtRqCgq/TBXuDYsXRbi7X9ccjDF5Gc?= =?us-ascii?Q?uS07flF07caode6mT5xzcQiCqSe/Dny7nNPulc25wxxYdBIzrHdCUlhNtoru?= =?us-ascii?Q?9E5SXGjEuLfRFFJDyNwrls0UlVrZq2DUsJBRMl1WjUrxf3dPTrKdj6WDzBJB?= =?us-ascii?Q?CDgz/4X8NYI6MVNImJuWzYNUgE7yjW8yEneeeL8tSZiy0Vc8BpZyH6V91Qmk?= =?us-ascii?Q?9YOxZsohaN2dgPqiJVBV12YLfVT37Mvi?= 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)(366016)(376014)(38350700014)(921020);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?/CathWYdqWtqCeJsBO5qmv2257UGzEzSIS67OTp76L6zRBLEV+T/x/TKaL6j?= =?us-ascii?Q?vBgkeFEF/XIh6iFDJQCkrp8aTRMRppeGn8N1bR9WSWxG0nXJF0BDCVLf4gOy?= =?us-ascii?Q?ojmmWnJG4quUjRwuthd4s/2BG8TrIA9qEopcePs0MKy+gyZsyYglR6B1CP7C?= =?us-ascii?Q?Cgosd8r+zwgKVCo48JVWqrmiUb//zroqrmn98XY3R3YQz8LDsUKtD6Onc0uG?= =?us-ascii?Q?uN8HB9dJYyptVbi4rH3ehoeo1oIc2t6d7fGs1ZsQS/W2KNXKJPztENLwVOL4?= =?us-ascii?Q?dIuq8UgaQNjmPgEIWYVoXNDRAq1FvOUJfNYmBSscj6T2/CFsmqJQY1vqpVWw?= =?us-ascii?Q?jbub3DeunckEeyA4azfn/pxv0r4myVz9rY1o3qobRqdNb926KgI9rkKcLOs2?= =?us-ascii?Q?NAgwzjKUofjaO/F5CTbtZwlWS2Jf1Jx5TZWZvdy2S8xpZIjYRfqSPASOHo3/?= =?us-ascii?Q?cgzyZatusv+Whk8SAhxrZ7laa0Ovk5/93ssgEC2v44ntTAe4SGwVCmBsdbZC?= =?us-ascii?Q?dSnPHgFRRNsfIKGCZBjERN3OXnm6Jkh9JHxtf2blOJ3pVwILE8e2FQs76N4A?= =?us-ascii?Q?Ova1S4Ad71zGKQ/cqVKCak4BhPOIMO6c1NlVtzfDkG+sanyWFII35xxBziVe?= =?us-ascii?Q?z2rF9NnNOn2tkL7+FyxlvrO9c/Aq1VzZ2gedvv+N1iGKVtHvCnFubFNn0sJt?= =?us-ascii?Q?DoYyqKr2vhvsvyv43HJmVj5egV8f8xSLvhYLKVrDc0odRfpUjkyOcdYfah7Y?= =?us-ascii?Q?a7u7b5UDjBmqaUg0OjYTT2mdVPM/dU/iseVgNHEzRQzJUfO+QwNL7VQWtS35?= =?us-ascii?Q?EAK0GUBNM9mOZsNMRx/DfcMjuUj5as2G2flE0R/IMo77fyIsM9/Ln84rvvjY?= =?us-ascii?Q?eYu92Lx0nUn3WiJ9GDSQjLFNyCLTajz6VNSJMZAlTvLVpgNSFSnbcd13EGE1?= =?us-ascii?Q?UGoImEzbEcuXlfLf7CM/y9FYW14lhh1/Y/Fxmq3f+LFY6lMe701MJCzuPHkT?= =?us-ascii?Q?PPeyXqZrIWkWU48+UbY5NGGWI3x6bjBmgyaE4QeBwlACOIE6cwkzDuuUy4xL?= =?us-ascii?Q?422BqWyyYUND4a/8VMPsBa6Myq0lzQIlpaPIrGCG76t0JyUMPV1k8C+ohNPx?= =?us-ascii?Q?cJvc+hCDPq36SPTL3nkbszZGznFWyI3thoLvdM6yNmbMRXcnYDYWWjlELgMo?= =?us-ascii?Q?PzRyL1qHr84SonSTDbCI+yKTTTQ4PGgGPH1ieoCtt46/fhlO5gY0xwqpNeLe?= =?us-ascii?Q?sBNvvCMChsIbJ0Uxs2TcLpHbl/dR0tUFfwXE31gXrtkV1LRN8QaCvFOz5rxy?= =?us-ascii?Q?rRRSrQ3eB1F2W/XHpoLxZEHP29xD2rc0CGM7Fzvm8dtKHG84ss3+joobuwl6?= =?us-ascii?Q?AvRjosmOf/x9htOVCsEx2zTwygEBaKJElGHFdwUi7Wp2YtZe8irIhG5wE+WF?= =?us-ascii?Q?HNMVIKCxR7J1dU0GaVhbImqE2n5gMbMUl5TzqiizWHiZDtT4FO+PocZHfFfv?= =?us-ascii?Q?+fSKaFYnNGPkyGeL1z5/tg+O54e2uqTUDpn+hUZixlEi6d6cW2AWc6JIV6Jo?= =?us-ascii?Q?rfxA+UWdLJhE5k/gOFOnUx1ApaI5RuPq6zEyOkXRz7kJs/zVTHhKJ7DB0hBx?= =?us-ascii?Q?6ldHDaVdWW0mVmDAXTPInao=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 990efeba-1cb1-401b-6207-08dda3b88345 X-MS-Exchange-CrossTenant-AuthSource: SN7PR01MB7903.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jun 2025 22:38:22.9441 (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: Z+M/+xa4fLGsQbAeFubMxfd6TO7LbQHvI/vdgfK5kXrIea51PORitP00sHOQ9kjB6DB1VwldkK1iFaeyw9X5PP0Rtil8zK8Zxou3RrojBt9ukwJbf5lp1RvIH6bmku1S X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH7PR01MB8810 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 Signed-off-by: Zaid Alali Signed-off-by: Tony Luck --- 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 Dec 19 19:21:21 2025 Received: from CY4PR02CU008.outbound.protection.outlook.com (mail-westcentralusazon11021134.outbound.protection.outlook.com [40.93.199.134]) (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 1C80123315A; Wed, 4 Jun 2025 22:38:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.199.134 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749076709; cv=fail; b=knphDN8QV708q6gbfcsCbyb6AxlWX++Z/AY4iv2JTYfi5oQYXhI1Olu5X+VEmvo3PtkwMxIoqizWfwHYYyMrC+UnArWO28APs5J3o/gyLFg0OgbeHICB2qT9xLCHyx7UG+xwzIOH7ZEkG+AhbTB0DQNReztrHmS+KyKXTYJDsJ8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749076709; c=relaxed/simple; bh=P7POluSR5lR1HcAphPdE4NxZm+3Jfy7S9jucuoannb4=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=DbiWbZ3+Tj0p1HAoTSE6IeEifz2qB7mA7XwJ3zVsZGUw0cgS90czWbsml+0hETSV30nC92oa5Gj4uK+Xv7Z77uNLuRpUwC8J5nlEABao+QuHR5ZGNfTOcNeI1hBe0LIlW6puUw7/CxkFK3ndI0qQQw7IBhzLg57fKpHAnlzUgjM= 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=udLpOuKf; arc=fail smtp.client-ip=40.93.199.134 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="udLpOuKf" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gP6JdDc+5JGwuIvX4sIUC0ZdVKdFsyA1zyUndzFOkGWb69eU1THLP2lz1aaTBB5t3pgp/OrHNUT4mXEn8Qbhdl/GSCG8RERJRZ623fJ0nJeJpoWZP6OXbLRIMfVjlJ3WJ6Q8Zvj334HwuWG01J0jGW0dLnCQFj4r8WimOIuFATv3lxfzz/8IlBvo7XQSX427z1QkzPtifQJtMa8KtbCLX/8nNI6wznJvof1yixJKQz7lXaAWvnpCY8zZU9B4gfey3nidxFttQC6W3HaTgXVf9rwMX5vn0+JACI9YZiaH3w2Mbr/dhfOOfWgYbPVIEmXFL1aarubHjyPy8x4cHWHTFQ== 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=9cOwpzADnERGAtsVCwKSoGTzd4fWgQxgIRe3OokAwJI=; b=CB8STu/TtrGmr89iAig2vMn4yYSYV9s1KYFbs10x7euhOUamVjiwdXM6U0PUUu40GqdL+YbDazgOKb1SV4V5+ZdbkjCaTJ+c14xy1aOwHUbdmWqWNXeJ86dqWYHXJUwuaxxC3wk9bCxLxkbRaX+DUyqlrtYl9FM70lhkSWnaH2XKYNCX+nte54WIWlYzjZgpoIOFfj1mlzE2PY0scz6AkHVkqyo8wgw2Mj4LNwnDY2HDYJvquTyjdjml2muSRAFawJg30L5wMhxbgSCmSwGhe56ZNxgxN5Xw0oAZuGMhVeBTpurnv1zkxLSWIaPvWVEPeHspJ1Zfril6jUAzK44HKg== 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=9cOwpzADnERGAtsVCwKSoGTzd4fWgQxgIRe3OokAwJI=; b=udLpOuKfsUCtttP5QqBjwhyU4QXTYDmHQr/enc6Oa/qkdpPW4QI+oTbEG2zAm4ohklKb6b8MxFWsqoFWkG4zGSo+FKNfVAIDLyi0NJaxDHKiQHmB2tNf7FCYvs7GuwHobxHsXehh0BVC16i7jq5QuVEIRa1VpRizKTfOlzlxxfo= 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 CH7PR01MB8810.prod.exchangelabs.com (2603:10b6:610:24a::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8792.34; Wed, 4 Jun 2025 22:38:24 +0000 Received: from SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f]) by SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f%6]) with mapi id 15.20.8792.034; Wed, 4 Jun 2025 22:38:24 +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, u.kleine-koenig@baylibre.com, jonathanh@nvidia.com, viro@zeniv.linux.org.uk, ira.weiny@intel.com, peterz@infradead.org, sthanneeru.opensrc@micron.com, gregkh@linuxfoundation.org, Benjamin.Cheatham@amd.com, dave.jiang@intel.com, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: [PATCH v8 4/7] ACPI: APEI: EINJ: Discover EINJv2 parameters Date: Wed, 4 Jun 2025 15:38:01 -0700 Message-ID: <20250604223804.842501-5-zaidal@os.amperecomputing.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250604223804.842501-1-zaidal@os.amperecomputing.com> References: <20250604223804.842501-1-zaidal@os.amperecomputing.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR03CA0308.namprd03.prod.outlook.com (2603:10b6:303:dd::13) 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_|CH7PR01MB8810:EE_ X-MS-Office365-Filtering-Correlation-Id: 5d939389-7aef-4f4b-2fc3-08dda3b88456 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|1800799024|7416014|366016|376014|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?tnCzrD/Ku6Wn/JkD72oVb5lQAmSYYmC/nMy6KAq0M6fnBDD3X7MrUslf3sMk?= =?us-ascii?Q?IUIaRURjkR+3+gLQKSF+U6uSwNk+/YaBHKtaFLxuux4ATbshoRbmZBJFL6PG?= =?us-ascii?Q?lKPi51lNmzdiET/KEktEymnS9Tas/Nlpcl0SMosIiAYUM01d2J1u4ctW6Uzy?= =?us-ascii?Q?euTQZcLgBKMGG6JojhcGF8UjGnfuMa4lgptPiPsPaGjsjZr0ngO9+beW/yoA?= =?us-ascii?Q?ARgYOGL4wi6WxMQiUmcvExI9jmpwx2tob5GwRcKSj+3FFEKRtBvO4qKEVvXD?= =?us-ascii?Q?HGhhLOLGaE6Welpy3BAowYz2MKqKIdqfXD0BsbBUEU/1ZCgkukjxp128VCKt?= =?us-ascii?Q?X0rY60viBdBL+EfPudYejjQD6OTiSDrOaR9Dhwv+rfgTeiKQcrnoG2VLa34s?= =?us-ascii?Q?fYzZGxiYZR/edRY5RPJNlDQFk7AylOIV9EhUb10uiNa2EK2JLNuDeY99Hp0N?= =?us-ascii?Q?yVhw2PzsJspjDQvWEnUE9+iVP1IG8h8Nq6+EqDIzVX1RJwLP+jJ1szh6G2YO?= =?us-ascii?Q?WhaLofvoFJx4Bwq3KK8UlhyayIAMyc8FWIHMWZEpTzZi6hGI0+7sFc4KQ8+5?= =?us-ascii?Q?8Sfd/qGAicIviYqlj8/s/tEjC0H3KgSg8BIVAUm1PpD1EaBdi8q7CiN3ZqnN?= =?us-ascii?Q?jql81oOgIoIQTnoEnpIipYZHny0XuEEqyJRGVwwHR5XacLbUtVacBSu78Zeq?= =?us-ascii?Q?yJQKR/CfSLWiqR0UQq/cgCSzP69HwWxLiZ032arwFoboGonuHnp499UoEqxV?= =?us-ascii?Q?RrPyGGKvHXwpBsYmk/p0p4aEZ29zbtUPSCL4evkBCYLA6rqwgjl1rTtmpfZ7?= =?us-ascii?Q?zJMMYXN0mvdP5XXW6aOFy3nwzIlPHEOV9ksHUWlsMcTQRQ5o8aiPgBIKbJSc?= =?us-ascii?Q?n/dWI97uWb/wDZWXJaQaquuoEJQOZWstZfoKijelpb8hhJMzAknX+hzgi3iD?= =?us-ascii?Q?BW4c5Go26wx5F946iiQGXUpRFvNqYI9dJsMsHcbEJ9n274XCSBpYoyyIYJx5?= =?us-ascii?Q?QpYD+2TqcGm2/rK8V98oEleQQjl8xv2SEwghK251WFno0wJpGimRq5JqQyh/?= =?us-ascii?Q?1zTt2JKUktCoyzgzWcTYC5VX2wnVWr2g1iFTPR3/UkdxXKwkHomrCkh5Pn11?= =?us-ascii?Q?wuGXq/2G1TZCWF+S2uTiQlhp9lEXdxanKau5CRMhr878KJjsd/O2jF1Jx7Mq?= =?us-ascii?Q?8WdCqPez68c8LBG0AsLMlFI3cOd15Dmf/7xZzExHVHlGXX0itqZjBHK2RBGU?= =?us-ascii?Q?H/Bm+0O0rPW0lfFnutMATM2+6gjM9iTV1Nt5SGOFtKHz1bPN8YG+/r05Kxy9?= =?us-ascii?Q?Y3FaMr9PKBy+xKEKTx75bb2U+uDb1yGe3vVeL89gEitpHpvpj5ZAle+g02WB?= =?us-ascii?Q?BC/ptlV08N9e40ekm0YeG2gAdTRO8iBmHMRnSMoz8q82Kfjp6qtjVcAzULGY?= =?us-ascii?Q?Rgjthq6ayPNH6zUO6IzAG2Xw+VS6oj/kQTGTYOWyIGL7ImHLNSc+4kaJ86SF?= =?us-ascii?Q?s6WSkDrV/VyxCQA=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)(366016)(376014)(38350700014)(921020);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?3gIW4g5HPzLaSscCSId+QHcGxuLdYGcHEBtbyr29GQ7fJS0E42BvziVxaJq/?= =?us-ascii?Q?2k7GhYCDtr50/gmrS4454HZbbxYWkX1p895J3cYGhFro66pCvawrdqf9t07v?= =?us-ascii?Q?SxMXpCwQy7tKLUCWZqM7f3xPgs46pVkVhMa98yd1si/mnlUNndc0zZ1pAaRw?= =?us-ascii?Q?ERPDcvZEY1PYWaUZTaOmF6wtF6YArw2MBZvUkVcRlNAxnHTxZ4isCUachTnB?= =?us-ascii?Q?KJ3Z5ZaeYd72EYdqe4CiubY5BMoKhL2FoB9iIIaOk6/0pgLMAWCB0iSuCX9l?= =?us-ascii?Q?/tywBaj9xqkAQPCeWVYw6OSzBual7VL8WScxM1LzvsqrHZJQE1JNj5eIdT79?= =?us-ascii?Q?30GyK5l9L6uYCPUok1zSifSLxnfjopqsRnXFq0m3nVf2cfJPvhcHSPaIoPs7?= =?us-ascii?Q?cKTZVJ3WpdDIOHBW/YWRqGn6vtbFoV3EwaMcstqwBFRhetWWrbpXCnkGsxoR?= =?us-ascii?Q?nH+Vt/PlSFx5TlVlyxFxCpfoHaRe/b9afV0p2zvOtS+9bQxfB1HXQ/8sxFRI?= =?us-ascii?Q?G5Wjl72L8SQOQxmvjJdmRZ4nESuScvZpELA2tpLTwhSrzaSgiUNGyNS2FM/w?= =?us-ascii?Q?M8Z+qzSigu507qoAkF2buI7ggI8+0BcRZAwunxyfVEhPIB8f0LxuEnTAr6dY?= =?us-ascii?Q?Juo3yYvDSbP1tKK3WgbxO61kcWtsGcy+NCrcl5+QRkdgXREZ2VvJ06WsRrP8?= =?us-ascii?Q?zEhDRFJ8UcW4wOhBGMAJtidWg1MIxuRUKasFdT7Jl2XCfON6QfJQJTZEtLMy?= =?us-ascii?Q?U4jSVGz7VsZzStmny0hl2ggeeR+/W12dwUdFZuEyD8wUAuDLCpbhxvh4BYr4?= =?us-ascii?Q?qij6YuFLThyo143d4vmfv8D6Acyaio7ldaB/KSYt87oga91qpMzuMBoPOt11?= =?us-ascii?Q?+oLCcEK5Pq1p1lVJlOBolLa3o5N6SUsKW18OEIGP0rxnMLc3CJEtABYqNmZA?= =?us-ascii?Q?xopISm2KbHiM5k46xQn1uez71EHID/XF57Tq3tokyQWcRa4RT7Ggr/3x5g3l?= =?us-ascii?Q?N6eNJnh0+Eud7LUx0LhzsO+dTeES4j0CYlyvrZWVsrJN2ugnu6LBr8k7bbSE?= =?us-ascii?Q?zr0Ah+E67x9QpJzm165FW/MOEktQ6Q3UOMqaBLHYQyQz/R+iY29/NZA4W9C7?= =?us-ascii?Q?dOK7T3QWOp0BGp2uMNgCDkqg3GXMWEAP5K7PBMlVDzq12Go2/8uVCw0BmpCl?= =?us-ascii?Q?K+9bHRY3VIptXK7e/zhKkG1wEvpF19tCcojoV8Xn8mn+ztr4ogfZHB4vCnWn?= =?us-ascii?Q?klyokzLJOVUPGXQor1ajD0V+resfpuFUKR8eNOQZBmydw1W/efwcZWyp6GXQ?= =?us-ascii?Q?nyOSDrpCX0Svd5ENv+3OVymNuVTM7jSobYj4mh19rZOYy8EVhuoZRd31k8/5?= =?us-ascii?Q?LA57Vg2GKgPt17F9G2HQFArDAhgRRcYd8bMFJuJkOZDQYTq47YEhdYDriNMr?= =?us-ascii?Q?XZhBBpU6tgVlZyz0IeaTmhMS5/R3H0I2HM4OZJMNJB8DvwhfEGWpmv8Lqe5X?= =?us-ascii?Q?pqy0L7LvjLikoSFnah3ma4Xm75glFwT3eC+iri3xoekErGEQFUaT/lhVAPna?= =?us-ascii?Q?fksi6YXYMv4UzvuSyB5s/GmD9bUPKnthlDt6iklX1omV60dui2N1N/JeFI38?= =?us-ascii?Q?GjWSjWlrBHHLTwg9wy4t6lo=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5d939389-7aef-4f4b-2fc3-08dda3b88456 X-MS-Exchange-CrossTenant-AuthSource: SN7PR01MB7903.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jun 2025 22:38:24.6911 (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: OjQjQUUtXIqFKL1IrlAOEdQ+TvMc7rgiFtJIK0SMq5GWjB0xmACRRYT5EZsjB4/Q/PI0Th3sgdd5qr6ne5HHQ8R3usfoKq11szwG8c/WgJuxLWsppwVhRX2frUArpgzR X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH7PR01MB8810 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] Signed-off-by: Zaid Alali Signed-off-by: Tony Luck --- 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 Dec 19 19:21:21 2025 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2112.outbound.protection.outlook.com [40.107.95.112]) (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 CEF75235063; Wed, 4 Jun 2025 22:38:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.95.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749076711; cv=fail; b=V+930RLDf1wcY1Mf7F65U9K6P9py5rdVd+2vYRzXNaUvaMfrQ62gwBfYhyVvUEjjiAqBQ3EG++Uoqvl0VHimUgj1jNTHleYrvTkyjiIiGUd6L3gQHXRbHIuPT94dNZ+L40FDC8wGFhMvqf9cvUZysIFCoMg3KM080gd10+XK2E8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749076711; c=relaxed/simple; bh=V9U2ofPXcXl2bwBTBgsgiwGaUWDsU4OgBKDxIqiwoc0=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=DGmyqCZ5GnkusOQj9N5W6eSdH3Lf4couPxVuRlaGq3pR2FM1jIb65u+BqLOiTyruJ+Pyu/haJ1eiqUBaXSNrHv94VB/4S0QCc/Dg6IOwiKN9Xq/UujzP3A9uaCiipuo/TIJomIx4yH52aABOFlu60WADccudyU2BIOgQMcrdJxo= 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=j5VUyeJs; arc=fail smtp.client-ip=40.107.95.112 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="j5VUyeJs" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CLXcQZAU56vDWeDnFokGlz58h0iS5kawRO3jEs/jANz5GRVOzVgjTn+UjafbhZ6HmV5ihw4+1LeKSh1CkaGJ8vU3dUvjJ7+qaMnQ9iKqLdG+X1sNDMaZ4/ISgY2yh33IDabwe4H2oujN0fwaGZq4FnasK3sRYOZxzByPaH+NnUSPl1UZH7bvCs+mH5ecX6NYgrJ0vtIauVzuSazKT2BNqPOgX3vzOfBlkbapedC6ylC10z6q051U7beufDcuEQGb5nnWy8ByacVbi1A4/+1ScZc+gXYFAeFicH+h+4NVIEPobxGYUnM4FGA1QVC3fxXrbLbgD/tP5JjFZq9Psm3RRQ== 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=XauOU2c0mMuNL62IKtfOCX0kRc5J5kWcsCzvFYwB+mA=; b=xo6PeE/MryvLfpOIBaB4gFXZhg+hismW6kuOoFKV8bqdoklbBWzlxyqlHNvq9rYJvcZD3rR9B+OkLbBACOsjfNcWxsXYgTP0xAq5Xmo/XckBW+0cEpu9IkCEeDYCOhjLe/vzj295hSA3HtELyJVtS5Uy41l1Q1x32+5ffbgk7c4ZEQ6KsjKbCTfudX+HRBICaRxUVTBWEvHaIM2K+C6r5iDYVB1vedXPa/08JFZRrfYa1WMib/0Kttdur+yT95JRz2rqIJd24YHGv2T08odaAQMCYkhsbjB6GgeTDLF2HyB63Oeis2bR1w+IvcWgbwMQcZ4kFmhX9ifoPQzwWS3L3Q== 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=XauOU2c0mMuNL62IKtfOCX0kRc5J5kWcsCzvFYwB+mA=; b=j5VUyeJs2iiIiffu89RcrsCiUE+EX0fNXmXkJHeB3p/LV+xDS4S8q/3ANQLxuPadKETjo+Aj+y5Xjfutb2yL3NDifGXUAnEPckrpq9IX+/txkTtEsiGyDWkAbFgvGS2q7kNc996ZsKh9/4dczWRL483ziCEFuCmeKoeys4EHe00= 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 SA1PR01MB8159.prod.exchangelabs.com (2603:10b6:806:333::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8813.20; Wed, 4 Jun 2025 22:38:26 +0000 Received: from SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f]) by SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f%6]) with mapi id 15.20.8792.034; Wed, 4 Jun 2025 22:38:26 +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, u.kleine-koenig@baylibre.com, jonathanh@nvidia.com, viro@zeniv.linux.org.uk, ira.weiny@intel.com, peterz@infradead.org, sthanneeru.opensrc@micron.com, gregkh@linuxfoundation.org, Benjamin.Cheatham@amd.com, dave.jiang@intel.com, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: [PATCH v8 5/7] ACPI: APEI: EINJ: Create debugfs files to enter device id and syndrome Date: Wed, 4 Jun 2025 15:38:02 -0700 Message-ID: <20250604223804.842501-6-zaidal@os.amperecomputing.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250604223804.842501-1-zaidal@os.amperecomputing.com> References: <20250604223804.842501-1-zaidal@os.amperecomputing.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR03CA0308.namprd03.prod.outlook.com (2603:10b6:303:dd::13) 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_|SA1PR01MB8159:EE_ X-MS-Office365-Filtering-Correlation-Id: 86f93fce-0c2e-478e-86d5-08dda3b88578 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|52116014|7416014|366016|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?B3ZE1vUUwTB5CaTfrim8Ow5byv9Kxobb92LwqLb5E1H9zNsPtmaOmd4M1S1B?= =?us-ascii?Q?p7OMa8N2iy+vnt/ZcQs1SNNn1Qo3mM6DuKOPW+O8Ssd+qQvbu2JzEKwzoJra?= =?us-ascii?Q?Bvl2S14bzH9mKGlVjeIQ+0xiNz8tGO6TzRBzBq/uzGy06R4uQPpnkQCtcbFv?= =?us-ascii?Q?zI2veNVRR12ZrPRbF2E79pKkMMnWwUDJSlrh9TmorteY4+KumZMz5vNNQFKt?= =?us-ascii?Q?hmj7BcImIsOFCtE1LUttCHWpJPeRju6QSnL0T9GiJ0oi6t6rQauj45EhI8w4?= =?us-ascii?Q?/6L4jV/p2XTqkgZ646CnYdQ0xc4/5/AoLUzjm45ryxJPPuyx8ElWmwvdVuNF?= =?us-ascii?Q?qmy3c+GveZygss2nlKlh5VNnMGQdWZQHtXfah6A+Gc8AIxEAhzNqxyhGbUez?= =?us-ascii?Q?B5/fshpPdvrtLQtHXiOjDa/GF1DZmB1i2kkSJZGh6l5LsvmxeWF3XUxkbwIg?= =?us-ascii?Q?F2PEA4322g90dkZgrAOmU2bOaDmJbrYhSgN6awpfPvxlXDrEdxpkUuKrO/0C?= =?us-ascii?Q?B9VC5lAN0hQAnzmS8AOzmZPzwp+NZ2d7cC7LoL4aaygPfLV25W63VeIhqcGj?= =?us-ascii?Q?D5TDfC3BykuIhIpV6PXN+qYYGq03COQ+alrmTV7Fr7JKbQ9reST+d4BlOBvG?= =?us-ascii?Q?/2PqJx4O/5B259+Q++DWbYNUXX47Y6lDDvk3+8+8ryNF7nkTOkYv15anSOxL?= =?us-ascii?Q?EbI+WKeYxFfppFyNRbyEfPgqU5OY74F1UF3KLyjP1sY109pmdxsMDKpcnlCC?= =?us-ascii?Q?Jbr31mxZtOjYLJlqZmb/LjDGWTlPjfTQ8xs3vRaf406v3AfrYxwhovnyDRj9?= =?us-ascii?Q?GUdVvArcKSXkJR2+C4P6y+Zcv4qIfHewnlDIvZRKdqvDO1kcIsgKJ+W7XpV8?= =?us-ascii?Q?xvLT8T56aGGzHeFnXpwoQOYlPrYo7KBj7y4aC46hi8HJQceZ+fIMuIp73m+X?= =?us-ascii?Q?XwiyYaoVXMp/y3IrfXOaJDvRRcSLxQNjQrDLMgNi9DDobtVce84UZbA8pLfR?= =?us-ascii?Q?xBVrT1HlJC1OvJIbmlUP/MgxSuQXv4ejHeXFYU8MUjdph+QQrgl/S21i22/2?= =?us-ascii?Q?IbQ3XUCPSOWZ81s0ZFKUqz4NkwPYpgov3L6Jw2Wm/BY/mhmgFIinTKrsaZ2M?= =?us-ascii?Q?D+E1YM1wtYmFF5a8frpRQr4VJ6RadXq3a9Wfa2Z0+AEcKTAHSdNU3Z/DFSRg?= =?us-ascii?Q?z6drRbhJZ5mYacCc/9AzcRLiNVwoenkkWlCMOqdSxH6X+onTKt4/OEg/JGw6?= =?us-ascii?Q?h+rJ1yZimpYtIa2B0zsFN+f9UNfo+TD2WMtfgXTKUv5/VH+M1PR84CVFfIs8?= =?us-ascii?Q?ovAoEtSBq12iJyS01DIC+RsiZhXTHk+zSARYOljYUpzYokuBX0RYZ+mZWA3l?= =?us-ascii?Q?sgliqeqYgXgm7GibfIaFBFoN2CFRsDNwsSfNO6V1NC9jRoZaSxOvsbM5nNnr?= =?us-ascii?Q?OVdrGxpK3qSwxwEuSIhePuBRTrImlsOiC7v1R5BNGnda2UXnFe5lTX1BqJ1d?= =?us-ascii?Q?d7r92jDeMFruL7w=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)(52116014)(7416014)(366016)(921020)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?yQGIrggTkfAXjqU+KFJhih1ULGZcTzzuNA5htSor8cF85qF+iNzokbQSJA29?= =?us-ascii?Q?3i09RDv9U6Ntcx7avYfoIDD9WLyENDcTCxAD1FccZxUxzfibi+DEnvqtHwei?= =?us-ascii?Q?7is4eur3FXflgOl2XwRQgOsoGZWeBoSFpK6kFTqQgtB2WiOVSo4tSvZPfmhf?= =?us-ascii?Q?sUGoUUM3+mfl4TyRVShSQga6a70rARWihzTVtsJsx8E2rVcWDvZOlFLUIpv+?= =?us-ascii?Q?/bEoyslnKO/jTYk2fGyx7lsR3oLrjINFb5mXc6Ho1SjNf1vkYNtR0sSIzn6w?= =?us-ascii?Q?z6kQm9wAn+26yYWcTZXgRpHXboh7ug3xZvulsoIKzfkNo+RPkA5htqtyDNKH?= =?us-ascii?Q?4THE00QsLRyzolsnsIK+OOz60SlQPhThdh9GdF34sQLGKtOh1Mh732R7v5UV?= =?us-ascii?Q?hEnDqrobxToXm0rXokHYcAHPyaqAUASjldObWscrAEHqpqoXvKTnztOezbt3?= =?us-ascii?Q?ETFGidMVh1qEupI0t8OIeobBNCpDxByJGAO9OX5BcanY6YVuMFEBA2lmeFTg?= =?us-ascii?Q?HziIsfrMAhT3BoXdto8GhyxyfVw3lqEm51OwPCZID8kOSZ0BwRJsbvu/j6kD?= =?us-ascii?Q?0P0+xSGo4RKQE1oti9/9RvfYiQMWiZI1wpKWmcL3aEqwviSopaPIVnRn2PfO?= =?us-ascii?Q?9VxeHGKAEu5H07l61CGPF2Xj2xs86HEqkbfyKmUPjKjrrMTSOIcpZT5RUH5G?= =?us-ascii?Q?P2C8jiGFM0zfAXfbdtnQVLpsJDekowREFglvVq4OsKuJDnZJxM0828dvaiC5?= =?us-ascii?Q?Db9ZGALnz+a/CmJKoOcFo+OrIcWMRTuPzc9qBDG8NszjIYv0cAN7WI0RRCWn?= =?us-ascii?Q?cdgSSHh12z5tEPGxeAsyXp4OGRFr5lK/J4CrkSrxYvL1QwbQ7YFw+1vf286V?= =?us-ascii?Q?myogyObnPp1HUQQHH6V/jrct5NiNa/WLEHGTxCMdDmN1eObHTgyy3d2vqHf6?= =?us-ascii?Q?s9jUQtzvtOrFd+4Ba0AwujpfdBNlxLse0bPMkoCxJGNXoSSCzCYRwVa9WUFE?= =?us-ascii?Q?AaHl62zSFP6oq5XYbbbiazbJD2Zz0aROkteJpiPE3ApQzamT/qg8NlB0bSGa?= =?us-ascii?Q?/DnZXcEQu0/PM4X9pm3aie3dJJtdqlE/zqrASx5uX9i3j0e5vVtj6sS5H4BL?= =?us-ascii?Q?n9VsCmIUcfBEB3gdN/evzzsLCihEaRko6wK9Gez/Uv+B7zE22ri8VqPF8vCL?= =?us-ascii?Q?MXZLtuq6uTkQPzFcVTJfDIu+glplb7ULSrhuqdlqnaOcUYAGbxRh89pQ3exc?= =?us-ascii?Q?Zle71ZzkGyZyOfQ6835Ny7T3Tk/F54xhrbHeSlGd3PYTq2jzu7vEJQlovoPc?= =?us-ascii?Q?+X3PA14bXQgZPZOzGVeDan2+y/DzDbln3YiT+0EBLRRsXk1TqEk/Mk6jUBVF?= =?us-ascii?Q?fpDH1A6tHwiGNCNDOf8bP0AMuFSPfV5hqB571f08kRUy5so1y+qR6+TLrsdp?= =?us-ascii?Q?cNvYY1YVFczjePYUGlJ4Yt/9+Ce0vyxuuopzpf2f5CevXrB1E8d28qiUf254?= =?us-ascii?Q?+UTdWFLQd8HwyRRTAO1BDYT1TyJy2jTZJGlKei7av8N0v+zPSgQPTPqIJOBk?= =?us-ascii?Q?TY3d6GGfPdMDFzUWqkhG8s9pncpEBsJ8ga7w9vc+5dSjD6fh1itfVAbcUdMa?= =?us-ascii?Q?L3mA6lTZSaiVpTVeYPV5xNg=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 86f93fce-0c2e-478e-86d5-08dda3b88578 X-MS-Exchange-CrossTenant-AuthSource: SN7PR01MB7903.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jun 2025 22:38:26.5932 (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: PHia74M2Bhhb/gT6MVwnp50QbCrUXCLhjZPW3Z/00foMfNB1E0eHIXjJPlteymun60XKs93un44Sd0Q0FFfYBXEL9JQppZwMoC9NsvG3rQobs3aQWnj+/9eU+b49TZ/q X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR01MB8159 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 --- drivers/acpi/apei/einj-core.c | 99 ++++++++++++++++++++++++++++++++++- 1 file changed, 98 insertions(+), 1 deletion(-) diff --git a/drivers/acpi/apei/einj-core.c b/drivers/acpi/apei/einj-core.c index 08cac48293a2..2f46f1ace67e 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 | \ @@ -63,7 +64,7 @@ struct syndrome_array { u8 pcie_synd[16]; u8 vendor_synd[16]; } comp_synd; -}; +} *syndrome_data; =20 struct einjv2_extension_struct { u32 length; @@ -711,6 +712,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 +849,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 +1012,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 +1062,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 Dec 19 19:21:21 2025 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2112.outbound.protection.outlook.com [40.107.95.112]) (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 BA8D82367C2; Wed, 4 Jun 2025 22:38:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.95.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749076713; cv=fail; b=GvUMai2tzIEg2OYtC7n3GkXN2loeCtK4ACE7Njb1+QX7S6idyyx+v9vGG68WMcvs2GvMgE+Q5GZdu4MFka1hNR9IV2ZhErWQJgArAz+RRf84MQZuGJmN4FzNGObmH7s/doDJVaxVV/fJRElYP5ntioHYAcQ6aF+HKhxm+LxyEAI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749076713; c=relaxed/simple; bh=yhE8kJsOAJoXTs3fz9nQOtD8mZSVr6QWnNaPEbagHts=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=rcqg9eYh/qojrZQirpLFVzNAdKLiqEwcVR5xJkwfHfTPKqs7Wfv7P/Y4RI1PkAipdBDPZI6pqDyvNnecHZO474TRkfXBRhVpmoup4iGZcZiUe0/eOuCXcu5l1zSeKDAjGQIbbCkSZQejEJPpdpgX00bCmxgq9Y4Zjoq7dewHRm8= 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=GHR6O0HF; arc=fail smtp.client-ip=40.107.95.112 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="GHR6O0HF" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=p7p13DOLMPP0WFuAtXJNh0RDiSumSF6qHoWLWt25pd8ChTxFH2M1L8QDlT4zZX6R6XJEdM7E1I9+ijZLpZCRBW4mKtdH2hu2tzTktFrnCp5Xmg4auUtAkrJtJ4dI8rCzfgPbarUvt2MGg29ljYjCjue9/M6LChjkKbK5NcbQroIRWRa9UOKFQoks+Qc0nYxmjthAEKxflmP9H3b/KRlAsBCDKbsXM+YylhvTOImbFRHhPYESEepubBTda74oZnJWxo4ESNUzE2DR01BkPPYErNSBvKM1g7KJ+3eAhf+UyYo0MeX++MQTw6M3vTd2lMN5JhlTKJWKvRdYbF2R6dyETQ== 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=dW5A92Rpo2eqgDJQ9O/tx4Ie39m5jazA5TCka31O43Q=; b=Tjk4Ba37EG+/bx0OTeVkEAL39yUynMVQCmlzmvtQrufNOsOYLmcqADqeP8KEPLBlr24n66hGxZ9KqJhjKam4qayUSR/VN1DftuXHcF9YIE58EsMn1+yOlpy4+pvZ77ce+1QaRL5s/ZtiZXVxXAgiFQF74s/6JNlv6OY7m/6xOOLiAuE97kOYbpZWv9N76d+H4siCOKd8boRD0IHQeZ+AJwCl64gskotM0QeqCquCcijstQ0Q18l2cLWw+oB+I9JJfyPn8Pc0/997NkDtXLWhlpe2+KncMhnTO3svIcJ7AoaMGNsrUqOvtwXtlxhTJI3yPZZPtALiTvQ7NNgr/IeaaQ== 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=dW5A92Rpo2eqgDJQ9O/tx4Ie39m5jazA5TCka31O43Q=; b=GHR6O0HF4Q78yMxpm+9V/2z6+WP9F0C7TSlx+yhFOoTmPpHX2VQt2823btCRfUs22UyZJ1PpEpbKcIQ/hXj0yjxqRvaGXlwW01svCNyFb7Uv8+CMuD5ovmP6r+papF8WWPXTT/cEJTyBedH6CjUZUS/qya3KeRnA/oi5Q5Ubo/I= 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 SA1PR01MB8159.prod.exchangelabs.com (2603:10b6:806:333::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8813.20; Wed, 4 Jun 2025 22:38:28 +0000 Received: from SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f]) by SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f%6]) with mapi id 15.20.8792.034; Wed, 4 Jun 2025 22:38:28 +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, u.kleine-koenig@baylibre.com, jonathanh@nvidia.com, viro@zeniv.linux.org.uk, ira.weiny@intel.com, peterz@infradead.org, sthanneeru.opensrc@micron.com, gregkh@linuxfoundation.org, Benjamin.Cheatham@amd.com, dave.jiang@intel.com, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: [PATCH v8 6/7] ACPI: APEI: EINJ: Enable EINJv2 error injections Date: Wed, 4 Jun 2025 15:38:03 -0700 Message-ID: <20250604223804.842501-7-zaidal@os.amperecomputing.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250604223804.842501-1-zaidal@os.amperecomputing.com> References: <20250604223804.842501-1-zaidal@os.amperecomputing.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR03CA0308.namprd03.prod.outlook.com (2603:10b6:303:dd::13) 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_|SA1PR01MB8159:EE_ X-MS-Office365-Filtering-Correlation-Id: 1492a358-6a63-45e7-1755-08dda3b88688 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|52116014|7416014|366016|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Tyrv27jucbH0IXIHys0zTlNOO03L+NmagXQ8wTwWPGCTXOTDc8y3TKH+pPez?= =?us-ascii?Q?Njiy52u4rn92aM0k/uB1kpP8gg2bIRJZfKE/bChTpEDOaKNy8Dza52cs6JzC?= =?us-ascii?Q?pYAMRpDpDStYCnOu81B79AuIpPqKc8jswOo7oCW5HT8bShIFGWCBr2lXfZq5?= =?us-ascii?Q?ZcHZ+Bf79bpILUTE4MS6kia1nmOCvdcnjc6amztuN29REbe0uws2ez8k7gBE?= =?us-ascii?Q?pHrJtR2Wt0T+7BDWbdU2z9/jH/lz6YKr+1Pr+jkxWeIhEfykW73fwjVnZMVy?= =?us-ascii?Q?JChC5IeRalrlmmkD1xSCPgovBR0cJuFZ1xwh64FpbAKSkeEFw4VOp2x7SSRz?= =?us-ascii?Q?RmJ/PkhYLhgJDj6qj6ivPnufY0RjwWFAndxFBjB8m9IOZit95d37x4ORGHVA?= =?us-ascii?Q?mj3CIvQtaWqrtYExvBGFN8NmIQJPLl/1Lkl+SDf5vFux/zIjE49yAQR8rl2g?= =?us-ascii?Q?i/c/NxKy3r4s2Dp1/j2JTyV4sbC1KV/piODkwwwUVMG/Hc6OCSyFzkjQ+mTb?= =?us-ascii?Q?Vmw/eXaELlEyg+bLKcr57CTozjbwkyVBv76bCBcfPrsyZhqtrN7dxNwfpV7C?= =?us-ascii?Q?QhgtTCWy/irAxBsB0nEn8svF6i+e3n+0S2QvvRz2sUvkDFjyuZLiQPweraii?= =?us-ascii?Q?ECPbA/Hu0HsbbUy0qJ76gyZZkBKS7GtT3RXE8RHVLaWDA7kcegEgz5DZ+FtK?= =?us-ascii?Q?2sG3vKaRP7jj9Tj5NrKJVGWei1HQcERF7hsXf2tPyxF4r3lMTJ9J4K1yVqPI?= =?us-ascii?Q?Ot7zwHy+5mT9jnhYsh5fi45fA59P3I2JnuF2FQo1quk9Jg1Wd8p3U2FKc0Og?= =?us-ascii?Q?QNvBMMeZs09gDLULvCAylcgWJALNyEjZjLAlgeHsKGZV40xBEFKZEvjitofS?= =?us-ascii?Q?HPKg8cRT3lRfPscZJvSuItd6XEkbZJ257IpI+dUBMY5BCBFVFgByo1m9sVK0?= =?us-ascii?Q?APEz5mrHyeQntn75M5DDTAo1u7b2RSrYGAqrlDe2+y0FoEbjU8HfcFHmVxJX?= =?us-ascii?Q?KABpHZy1OnRy0qzPVbvsplHnt3Knf2TY+2S1P3y0hO56Nk7oDYY9XR8mPp1e?= =?us-ascii?Q?wG4MSaE+8VtO+WcxpeDX3aF9du0wiWFmLkyXSZvSrQt2hZxyfFPYaErBUgnQ?= =?us-ascii?Q?qctCICrVrshrP03yvLfaPtAyZh83SjlF++OSYFI07QbehzjnqYkTraIzO0YP?= =?us-ascii?Q?xOe7ukt7muDGvkmUTAdIhriMizoFzp6nxqcC3yeSJ/Gb5ru94ggtm5MtiwNh?= =?us-ascii?Q?UM3Ug9wGylMi7pHHAiUKVcM0dBW+Gu5Oy+BZg+R5vK3f0bMfB9QkAInH+AZI?= =?us-ascii?Q?rOOnF4pmdz8HzXlEyq4i0FQwxfAHELYQv+UDxW2GqjDrDwrQEA5RjUDJ30a7?= =?us-ascii?Q?UdWv7imHE9XQSF1BtKsU4VMy7P7RhJdXNnlu3P4iBnPo9OkvpdxDkiyjLn36?= =?us-ascii?Q?DRtYMnuIRe9zvOVPHcTVQHHYG6UoVyia/reuPTo/i6CxpCuXthEZIPB7aMlL?= =?us-ascii?Q?ZaaMCsssLYdeQ8k=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)(52116014)(7416014)(366016)(921020)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?GGN1BafmDoiYBL0xwZy2R9eBJWusEIBPiazdEwjDb15OkgM7CRHXt0wyHp53?= =?us-ascii?Q?dY0bV/ynLyLaz6Z7Kp98kzAA1PK5xcwYqmUXhdaAY1LgVFyds5ayVJjSHXmT?= =?us-ascii?Q?Q0eSP0ViSIOGtGd94CtQpgClmIPmOxnx5fa8OoiboS4vrNdgdYgzr+CjXqO8?= =?us-ascii?Q?Bb8Yj2tvOUVeGA7S/c+TkdAWTmkx85nFfwEadfmv/dZLRSPJAoA/sUnkRSG1?= =?us-ascii?Q?NrvX+nUstSaCY/Q8dqrYFGNAzJjFdRLs+d49Dozb2vQy8ycO5S+URI63OFcI?= =?us-ascii?Q?uNfYE8VY9CuzzDGmYRbLZ7sBinDW11ekBUMqeglqOWhyUWuaxWPjFGRBMwiq?= =?us-ascii?Q?BW9rty2L3e1xJjl/wmyna5WpF8B+tw+6KiZfu54nYu3B3lmlp2x0rnlfZHcq?= =?us-ascii?Q?/d09dnsB6qUzvy7I5zT+BH+qhJ29/mfMIKn161fdT8eQThs1ovdH5cn505/U?= =?us-ascii?Q?egMnZRCU1xONjMsvh9mbh2waiGmWNrTQjT8DOmAk95tWgbpJXWwSN/mLqFzR?= =?us-ascii?Q?kNwkceUbCYQxAA6JYPEZdhlfVELkwuuCJripkx9/NC2i6qOw+dUxUk44XAH+?= =?us-ascii?Q?87z3UN9s/YFqawwDxJTni8ddexFoVhDazqds98L+rxuG7Oq9MJKGg5OtYYS3?= =?us-ascii?Q?tpWxP9jUHbNKfxBBd0oy21pv0Wgkeshd5gc6Hm0INGnHd5Q/+0/jT0vNQxFt?= =?us-ascii?Q?CaIvudQr4tTbsb+xp6Vj64NLPk8SLC5kBVVGnG4RJmsTfM3+HvWzdeKSpYRb?= =?us-ascii?Q?ugj3+fajRs0yZQCeW7KPuPt67zIqEMnED2bc71caGf//OnCkXPUD4xuLrLis?= =?us-ascii?Q?aiVMbGlobSM5uQQ9szyXou0JGp0IJS+Mc44E50pKMizXxxDjvsswAjVklO0X?= =?us-ascii?Q?/K2guFW/1Br1rc7sHdTAh38jimhUDZLMUhTlwR41V77l/So5ehCLXX5rBdDy?= =?us-ascii?Q?fw+zVENx3HV04Das7sk6WKQGynjXIHgO200Q9GSPIFaUc2dixFfhVqEx7orL?= =?us-ascii?Q?Fef4L2RTisZogjKSgLhs1rLeoaTy1hGk9VsOlxUW6Xh+rr00+psNwYXB34uo?= =?us-ascii?Q?rUZWR2NIGhD/5tnLy5a+8t7CkEn9ex9PEOlaFlbA1dnDgf6bYtyeoj2Mscgk?= =?us-ascii?Q?qEIJdbmbxUosX+4ujjUxNWWJHgQPFlpstbwPU0QkrdZtHXmEyobyBRj5ZJdZ?= =?us-ascii?Q?M55LuCFIkIP4yXqjIHCFrC5FYLwb6/mtLbr2hOpYFeWSzNEBdPkl1vsataBl?= =?us-ascii?Q?Ft4IOcqU20iZm7PqCBsQKtA2PSlzJQDiUU+LcLrHpf2HV9l/HopCify2ljVS?= =?us-ascii?Q?DsXKtstRB71X6/+9V2Rl3zVFQMoilgVaFiihI/gqBGpdwrno0Af+GLCnNKBV?= =?us-ascii?Q?NuxPkVYZapJATyKZehSiw2VEHCdyW0HAMCEk3H8AIdDZXnnHGHh/+zBii2i3?= =?us-ascii?Q?VHFYenC11v5H4SuJgvssrxZ9yCF1cC1pJeaNoWwi2cqkvR32yb7KYe/LpXre?= =?us-ascii?Q?CgGfbbcIsHXZxx5wHMwyN9XPbjZFyPwJTnBjAzs2u3aalf7FDLl37vvfhIGs?= =?us-ascii?Q?CgDKXPmAirdlA/lUCROzTn+zqSSMAW1ogZqw9wVnsxQiWsWkkd5jFOe8QADl?= =?us-ascii?Q?8HBx4thaRkaHbSDaiIvG38g=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1492a358-6a63-45e7-1755-08dda3b88688 X-MS-Exchange-CrossTenant-AuthSource: SN7PR01MB7903.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jun 2025 22:38:28.4124 (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: mJTf0FgsXyRRLniYo94iak8eV7WCSpUnO1jyTmpKvI73lML2iKnySOfm+g3i9wLozLNUW6NcmISIycAGm9BsahupsI3jfmVWp46FkgVpWVpRH2ALGHb8+SHUY3lEtMA6 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR01MB8159 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] Signed-off-by: Zaid Alali Co-developed-by: Tony Luck Signed-off-by: Tony Luck --- 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 2f46f1ace67e..3b62dce5acb5 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 /* @@ -180,6 +181,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) { @@ -506,12 +508,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 @@ -520,10 +530,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) { @@ -543,8 +553,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: @@ -568,7 +591,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) @@ -630,10 +654,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. @@ -742,7 +771,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, @@ -784,7 +813,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; @@ -803,9 +832,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); @@ -827,6 +858,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 Dec 19 19:21:21 2025 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2112.outbound.protection.outlook.com [40.107.95.112]) (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 D3A8B238145; Wed, 4 Jun 2025 22:38:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.95.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749076715; cv=fail; b=WycXIACnq1abAvcNbtoFUVByiqq9BzbtxVdy/Aqp1E8O6i9KrNmUc5Md/vgBsd4kXZIHhyplQfbBP1wyo2Fl+xJPOHpdDpLgJSEibko84T+AincpJf3GlTnDAkJzBB5Hi4tvGajT6fhcgstPSZwzI/qFSJYcG1fk2Rv9CjWr9JA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749076715; c=relaxed/simple; bh=S5MFl7qJyrXjMKV1Pg6ZvP++H+Ve5SE/bKzN3YvBnRI=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=gXZepYJt1E0BDMwJ5onkmUZawB0L1tBK8VLXEwYZeUNl2cQ5kH464hAcoJPSVwduXupF8wexA3OyRThyfBlESLDCCDO2pTZqS2SZ65TCPA2AhwOOckWpAXdAQ7rAE+bvOgdOK1qQ4eFklo4GNmItMoxAQCXi9fxjD0kUSWaE+UE= 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=JT2GeHhW; arc=fail smtp.client-ip=40.107.95.112 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="JT2GeHhW" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Bi8v0l3isYb1OltnMFMsfpRxAm1W5qjM1vto1WM00a6hCQ7Ljs4JbcXxwSRfjj2vVR5rDWEMCza5OnCqqjoqW7LtUvJY6aDgYUKpTspYvBnkhfc0sunILkUEI4rfOWve61T6cGwbbctaaS0jcXroOHHRsiCCbI6mY43zsbhb2NJjJLq9HurrWBTJM7U2xe7vibebCiS3OVeLPKMeTBgjrN+YTjMZ1ZkC9lSRsuN0SDi/J1C5PvpXZyCcl+UkqirBfx5R4xR9XkPuulQRSIKnrYRnUrciLtLNBZlyqaea89728B6JhhxXRc0xJaYe0upRH9Lc0pmTlppLhxMnxPY/yg== 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=UMJ5KZlCGZbDXeG5C9rHhhJNGgxquCB/8omiaqsyoBY=; b=X36YV/WgbBKc6PTU39Bg4eaDBgCLdMiuwabHhNaItSLW3+asuBX/iFVC776Fhu3w7ujZFCG+zRWfaSkLZLL6uX/cezwhtDHGzqLwc+RBDsCYMTdF9RFkAxpAdzfoMQg92fwqEGbMfM8/1NtGs+/tGqcrOZDbUIA5OAHc4ygbYjbyYB3ym+Mjw/1RU3i7nF4VUmWTMARQc681PHMSRJV+wga9mWyiojBDp/tSibkTqiHw9Ahe5P9fZvnHIA8rbkSpCbXwzJB1Ay/1iQdQb2crrH5+1TSVAIS/JhGZHDXSNn6pwsh4JAswT+SbjIWYg6EQv62iRw/O5jkS7ciLO6hS+w== 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=UMJ5KZlCGZbDXeG5C9rHhhJNGgxquCB/8omiaqsyoBY=; b=JT2GeHhWwSi+J5rgnVf66X+kRTc3ZUoxnPUcMbsu0MyGMo/gLstDhL84MnJ/bj1/epInAiB+kaXmNgweWkpE9AC4BSX2pFrbVsj2g/dit6wlxTWJ+gPYNpyPUda8AQ3VvsKhJ3U1oHBN/sEMapF1fEf+xvx6beuGbQnO2+8ADXE= 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 SA1PR01MB8159.prod.exchangelabs.com (2603:10b6:806:333::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8813.20; Wed, 4 Jun 2025 22:38:30 +0000 Received: from SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f]) by SN7PR01MB7903.prod.exchangelabs.com ([fe80::cf45:9855:a64e:382f%6]) with mapi id 15.20.8792.034; Wed, 4 Jun 2025 22:38:30 +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, u.kleine-koenig@baylibre.com, jonathanh@nvidia.com, viro@zeniv.linux.org.uk, ira.weiny@intel.com, peterz@infradead.org, sthanneeru.opensrc@micron.com, gregkh@linuxfoundation.org, Benjamin.Cheatham@amd.com, dave.jiang@intel.com, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: [PATCH v8 7/7] ACPI: APEI: EINJ: Update the documentation for EINJv2 support Date: Wed, 4 Jun 2025 15:38:04 -0700 Message-ID: <20250604223804.842501-8-zaidal@os.amperecomputing.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250604223804.842501-1-zaidal@os.amperecomputing.com> References: <20250604223804.842501-1-zaidal@os.amperecomputing.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR03CA0308.namprd03.prod.outlook.com (2603:10b6:303:dd::13) 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_|SA1PR01MB8159:EE_ X-MS-Office365-Filtering-Correlation-Id: aa1e1b00-e243-405e-5758-08dda3b88796 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|52116014|7416014|366016|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?UI7obmK3SCnMXylYD0RKmrqQHcQSkOOb/7yYaEYvcRb1njl+3pOcValyQnox?= =?us-ascii?Q?YL6xKTP7AKljfBZMPFDyn2mt0ky09xim0HgpdvoHp7opahCNP+8EuAnhfc/y?= =?us-ascii?Q?g7ptrWWVQTBZvJfHgjrTtTDId9FS7JpBkUZhadpwwy4HLQwxwXnAhpaePpvl?= =?us-ascii?Q?UYxL+Mc4SDHQ03NB6T+GHATucKuEjaS96knwJi46asjRgE36gnIODt9KPf3b?= =?us-ascii?Q?aq+Zo6JbfvI15Lkf4nchWYG4Oock8RBEPlEc3f0vdFwLBxEbvvReAqtvYt5f?= =?us-ascii?Q?T23ZyzatawlPI49xCfA1x0X2Q+8J4PrwzhSySjjMXRM9puygA98c6+NXotjA?= =?us-ascii?Q?XkzSRam1ywh7JihOvMKTlXoFRRnYx7JRoDWl7tpb0uHPMAzbD3TGVEZBoqwS?= =?us-ascii?Q?+RNan5EG0tj1oUqLuEfFGhmTVaY8rAWBDua+d0CkPeHOLm1jaIBlkLx4rTuh?= =?us-ascii?Q?/y5W25kamIddmXyZk/T+12ynGWEad1eyxcalcqHPjKa22mUBiWrh6s54dZr1?= =?us-ascii?Q?9n9zUEF5ZbvP00c3WmfXnrlJt3w+oF61u+7rXCE3UpxWiw6e+yTTej3uPYeM?= =?us-ascii?Q?+HsHEhAy24CQEJ3iYdPPoDpia7OPotjqczoFYXrEQXZDiif5No/UgQ0+fm5H?= =?us-ascii?Q?k2bPDHhtdTigAE1crXolh0m1Z2/9V/4Zx6ktlOdpV7XdVUYL+1ha1OAZ2eJP?= =?us-ascii?Q?UHKZdP9mZMbE7y7qudDovmOyF+kpI1GzLSDWk0aOuvIw/x66CV+Pr48UCQRe?= =?us-ascii?Q?j+A3TBxXhFImiObxfdAZKiXH0RmQ9Ly5tUX9EGmV3Tg5+6Z/0VVioJjKYzEn?= =?us-ascii?Q?JERJ+bkGli/RfL5rBALoX7oWBQovZ1hyOo+ytEBC3peUVuC5mDWu3D7pDNjT?= =?us-ascii?Q?kwMZhhSSXjmY+jIgr4obyK5rH+JDsy+JJ5N8ibRbKIX3fNotduYtDpC5uWJ5?= =?us-ascii?Q?bHOozWODxymR/i5bGmpnUdlMGt54b7dypwwpa87COOQtWa24ejhrQJknkUKq?= =?us-ascii?Q?mhyXZTGCNNc5MaESQ31wHfOHqqz5NzU/S+SMnEpEdR8OHBPrIP/iwkWyVAcP?= =?us-ascii?Q?EUHsAQ4kTfXfGNjj0S3nWpa41cMVtxbHXaghDDTz9el1QNr02TqdR+BudD56?= =?us-ascii?Q?xhDZvIfAKDojwu4d3f/nJ10XBAfgM0G2f9JJvsFmcR0z91YDd1LRylfpG5S5?= =?us-ascii?Q?KQSr/wWBVafjm1y9CRjiM7js4saifknJc1asKXA0LAsMYnlYeBkGv0bMSWiS?= =?us-ascii?Q?t4B9h9dRAD7nfrMcIqno/2W7ipG/BBVXU4z3olyDoUDREtDXliwColkaGo9t?= =?us-ascii?Q?X5b8rE3hf4p//UYjzk9CBo1uSeQ9iZZU77/JuMV0SkcJ+ngHrHm15y+oo6pN?= =?us-ascii?Q?q9oa1cgED7LNOaMI70HXmsb6AU6EauOKHdztEwMh9dJPqEo2/VIUPrLGPldI?= =?us-ascii?Q?MQHZHzviBmOYokSbWgFQTxyTjr2tiFR8?= 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)(52116014)(7416014)(366016)(921020)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?z3L86e4Nzy7GZO6J4yR2IWchNvFwr1rCXN7H7cPnIB2eKFI0MxlViuhceCuW?= =?us-ascii?Q?lvfPiLORn9Lc19ZdVGY0bosPz86fKXy4YmS5cyqclSL7hx3lDVsjpv/bV035?= =?us-ascii?Q?T75x2CsaFcJpbOamyxPO3QrTLLDkw4BcOmQTIYSr3s8tegh4v03y2iCjYE15?= =?us-ascii?Q?AuzJiih4qkR+ZaCdnailOwXY9MuejVqRqTbux5z5g/H76xfocnJfp9vCZ4L0?= =?us-ascii?Q?742+bs6W3dbRHQ9Wnkp4PLDe97A1o/IdlO5lLaTrmvDZNmtJi3v5ypljqPyw?= =?us-ascii?Q?ratvOg+Qg7AEYTKaP6Hu3DVF5h2BSvuP7TsI5F/SjL8lHudVJC/X2Phy5nMG?= =?us-ascii?Q?luzf7izGJ2euG3U900qCPjxk9+DVgpL6aXxKMarM75A+wQgR2ph0W/TLvOxU?= =?us-ascii?Q?ufZzhaq/nFLzSyJZF1crYADm6LARcDZsEWllxbEN+UiTpw1BFdk7zAbcfh6z?= =?us-ascii?Q?HZTdJIDtKAsIIFLj0+vvfpk35I8sC+KdMPKfJ284PeoQkL3prWmqjSy0hCDc?= =?us-ascii?Q?WaoSlUjMHCpVLpo736uTSrFdWp2aWTmxLDXHT/4WFeJyLDnF927jNuF7TEEI?= =?us-ascii?Q?ZekMULhr3JSUHr4jrNQdYC9FVOTqqFMu8CseE+O9iaVaIBHkWW1aSr+UcVT1?= =?us-ascii?Q?LFGIYHnqI7FyPpEkzgch09mI3xlt3AecqLJ1hvhpTIkGEi6mjZ+ZJRoKLUi0?= =?us-ascii?Q?f8NII7LB4Bby2yWBXMQJw06Fx7LlOzaSqsM+ZI4O2yeRH8C6CJmPwznSJYzK?= =?us-ascii?Q?1gQQLjPdV1S9pN1YnAWCGzvxXlAFt77ADK+BxIKx53tqS1zojxVxYv6M6KPD?= =?us-ascii?Q?JBnFC/Vz/a3t+XU/5jle8Q8ia914A1YEWZ3hYjD9pS7J6iE9F43rtxWcYp52?= =?us-ascii?Q?kePVevOu29d7mpHne3r7ZA7aUiNGpxZobw0Kxc29nFVzPx5dsE3xkbWqEctH?= =?us-ascii?Q?GwHsTjYywUWlHZGqdoOE0Q7d1Ix8/3Rf5uiOsIQ9Ovw85EdQObSLX8enpxZy?= =?us-ascii?Q?dtcd1xcTIjRgwXA9qf05WCy6sjptw7VPv3dNESopLlJbtCVqewiEoWLHQPS8?= =?us-ascii?Q?iOYF4/wpFmFAMHonGypb9CrubpwIgMXbGSu+njIUfN3P0F6a0lrLJ6Y5gqVt?= =?us-ascii?Q?JuvxBF0pYfiHjx16tsorOwwcRstqGhvm5wz55lOCXXDbrFyvb2z3r9FKLYbw?= =?us-ascii?Q?9dVzxkyYlkGr1Y0bSjckjBMNwsBbjrqOOFm87O5q5veLVfYg/RH4SMq2X/Q2?= =?us-ascii?Q?84PM3wQnFo4H5t6+ts94Gzhfq0ZzBHmSOylfDPrYf5lMmZozZo5maB7ip16E?= =?us-ascii?Q?fgzU09uAwkEbcGOZA4WPWls3kzZvGEj1woYmcqoPaWVHVrcPxOu8GAIZXC6V?= =?us-ascii?Q?iZbn2tK3oR9HlF7VLplTU/N8BFFG2CQJb8ZEkkvZjCRQn3Lxo86dzrTR7Tqw?= =?us-ascii?Q?LTEcYAydAckaqSVxz0Y2ZMhf94NxBBeyZGDWD3tbG1Zf2mivwA/YSGMDN1+i?= =?us-ascii?Q?P5otyDYwyIqI5hJw9goYt91n0p+hUFwGS5XmbEi3A+cVzJZJumhBURMI2t9q?= =?us-ascii?Q?3ho0eVkhszUfHdZ7ylKG8l4y0pzH01ouER47yDtHVMyrrlyoPXUINm1fjeCX?= =?us-ascii?Q?ybLNIwtQUuokO/WVRzoEGCQ=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: aa1e1b00-e243-405e-5758-08dda3b88796 X-MS-Exchange-CrossTenant-AuthSource: SN7PR01MB7903.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jun 2025 22:38:30.1369 (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: YMnuX7ljNbAC2bU1pJBRAHbGp93Yam7+QpS1TWvjSgGoNqSs6jwq1Krf1Jx2/sywyILSeuOqy1DAr3PvHh8JvZKZDB8DOcVtAne3UabbRjlDu1F4t7JnBC5m37iQGKm7 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR01MB8159 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] Signed-off-by: Zaid Alali Co-developed-by: Tony Luck Signed-off-by: Tony Luck --- .../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