From nobody Sat Feb 7 10:15:23 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) (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 C6C7B2F6928; Thu, 23 Oct 2025 12:26:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.9 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761222400; cv=none; b=Ol68Amos78oKub4qzppop1VnBktAdlmf0BTUpkaKML3aESfIC8yU2cOZACfbItZjpRsOMS2+AdFfpXg3NpMNGQx6hzcxOWLuMgHEs+pvx+tkfjYOESp+Do3Y6MBT/mEuY3cNtWweiAYK69gDslGgtv1/2bn0uoeRX3ZDyVNB+rc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761222400; c=relaxed/simple; bh=5hEjvEKmxlJ4nI+ib5yXu9qh7SsHe8NFIE5tNKshc/Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iOaN1lHwDXlUcV27ApOSV+cKkCXegPWAq9X2ujmdFTaoCiWnN7dfgpFxMKihfUs7ZR/fh2oanliAzUfivza35oHZ2qe0d1CNkwxpm367Bjax5XuMU4kzjv679Rjgiwc7m6fXaZ1Nayjc1ymKzTLwpXny5xh+Z165vBJ1I8P7qZg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=DQJKga6T; arc=none smtp.client-ip=192.198.163.9 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="DQJKga6T" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1761222399; x=1792758399; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5hEjvEKmxlJ4nI+ib5yXu9qh7SsHe8NFIE5tNKshc/Y=; b=DQJKga6TEMlL82uRorQg4vf0rk6VgV2r4Bjc2xRJSl0hCrbwWsT34hOI 5VjCpRhgMzRqJVHjrK1T4X4axCgbK1ALuf3eOSCNbockZUHrPW0iQ/wH7 SlvpllaGRMtMCZHVMjU8HVvTeB4krkX2DCWCm5hNSVmDXgPF2EkSyIlZQ pzglKBqyQgkS8PcwzvEuTxklg+gAZm1e+7ku2JbNyDaN2yyoH4i8dufFI Kn/J1eWIl1g3EFTep6lzIJA+fbHwBMh0GBPTKOaZj9XTe/vqNwL4biqMd KJp3M+xF1t0CjW34mJCJzJyqy3e2u0UBDQNpIXqpFgEbsNvTayUk2PoQ9 A==; X-CSE-ConnectionGUID: 62vtoQKWTY6hIFBJowPnTw== X-CSE-MsgGUID: C3UWORL1QZ+1kNJB4X/z4Q== X-IronPort-AV: E=McAfee;i="6800,10657,11586"; a="74057989" X-IronPort-AV: E=Sophos;i="6.19,249,1754982000"; d="scan'208";a="74057989" Received: from fmviesa003.fm.intel.com ([10.60.135.143]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2025 05:26:38 -0700 X-CSE-ConnectionGUID: l3HPS2vpSVG/SN0A0Ax62w== X-CSE-MsgGUID: CcNU6AIMTNqojfDF0RBlpQ== X-ExtLoop1: 1 Received: from unknown (HELO fdefranc-mobl3.igk.intel.com) ([10.237.142.160]) by fmviesa003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2025 05:26:27 -0700 From: "Fabio M. De Francesco" To: linux-cxl@vger.kernel.org Cc: "Rafael J . Wysocki" , Len Brown , Tony Luck , Borislav Petkov , Hanjun Guo , Mauro Carvalho Chehab , Shuai Xue , Davidlohr Bueso , Jonathan Cameron , Dave Jiang , Alison Schofield , Vishal Verma , Ira Weiny , Dan Williams , Mahesh J Salgaonkar , Oliver O'Halloran , Bjorn Helgaas , Sunil V L , Xiaofei Tan , Mario Limonciello , Huacai Chen , Heinrich Schuchardt , Arnd Bergmann , "Fabio M . De Francesco" , Peter Zijlstra , Ingo Molnar , Guo Weikang , Xin Li , Will Deacon , Huang Yiwei , Gavin Shan , Smita Koralahalli , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Li Ming , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Kuppuswamy Sathyanarayanan , Karolina Stolarek , Jon Pan-Doh , Lukas Wunner , Shiju Jose , linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-pci@vger.kernel.org, Jonathan Cameron , Qiuxu Zhuo Subject: [PATCH 1/6 v6] ACPI: extlog: Trace CPER Non-standard Section Body Date: Thu, 23 Oct 2025 14:25:36 +0200 Message-ID: <20251023122612.1326748-2-fabio.m.de.francesco@linux.intel.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251023122612.1326748-1-fabio.m.de.francesco@linux.intel.com> References: <20251023122612.1326748-1-fabio.m.de.francesco@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" ghes_do_proc() has a catch-all for unknown or unhandled CPER formats (UEFI v2.10 Appendix N 2.3), extlog_print() does not. This gap was noticed by a RAS test that injected CXL protocol errors which were notified to extlog_print() via the IOMCA (I/O Machine Check Architecture) mechanism. Bring parity to the extlog_print() path by including a similar log_non_standard_event(). Cc: Dan Williams Reviewed-by: Dan Williams Reviewed-by: Dave Jiang Reviewed-by: Jonathan Cameron Reviewed-by: Qiuxu Zhuo Signed-off-by: Fabio M. De Francesco Reviewed-by: Kuppuswamy Sathyanarayanan --- drivers/acpi/acpi_extlog.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/acpi/acpi_extlog.c b/drivers/acpi/acpi_extlog.c index f6b9562779de..47d11cb5c912 100644 --- a/drivers/acpi/acpi_extlog.c +++ b/drivers/acpi/acpi_extlog.c @@ -183,6 +183,12 @@ static int extlog_print(struct notifier_block *nb, uns= igned long val, if (gdata->error_data_length >=3D sizeof(*mem)) trace_extlog_mem_event(mem, err_seq, fru_id, fru_text, (u8)gdata->error_severity); + } else { + void *err =3D acpi_hest_get_payload(gdata); + + log_non_standard_event(sec_type, fru_id, fru_text, + gdata->error_severity, err, + gdata->error_data_length); } } =20 --=20 2.51.0 From nobody Sat Feb 7 10:15:23 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) (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 375A03009C1; Thu, 23 Oct 2025 12:26:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.10 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761222412; cv=none; b=XOMKNOuoxI7t0ey3FX8hhcx/N0FeRthIl+NJDuU3/bwCrcSmY2nRKtPotw0JljpFHJruTiYO6fSKdTvLnsuuF73Umj9oJd5Oisourv1ACClWNE3OmMPSBYR9Ji2kaYr5u0AH3EXoKi8AK0Ia/LqPv5/F/kncNUuUmOwHUXwfcrk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761222412; c=relaxed/simple; bh=zLJMDs9079RK5MwXvZr2M8uR5FmXfMibcm6mFiquR+k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=M5nyk9GZcMewuwaqrVPWolFP152AlvVaNsjYjBMnWZGEVM0Z+FJtH4nOfAwpgWuWl2Tb2psou0R3XIcKWPoKTO4d7r6FTk0dk5Hajv7HSHhrR1hACj+Fv061kZvuXUgOgHXEvIgctd91zngCnnV/k6wm5b2f0oINCeJZs6eeLiM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=NX3fYCFK; arc=none smtp.client-ip=192.198.163.10 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="NX3fYCFK" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1761222410; x=1792758410; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=zLJMDs9079RK5MwXvZr2M8uR5FmXfMibcm6mFiquR+k=; b=NX3fYCFK0TxCQm7O5+uqojEhidH6BREcWqOG2PnXl7TrKyw+hjhwmHw7 YLl1cXdVg0LSVWl/TTOPzBHWd4hFTApNagfSYAc2uLIhfIZ2AbnX9mz9N wXUvl2SKNFBz6ZDpUsAFvq8pvFRAaoCOecmJVgkOZ0wTyeJKHWjl8zRoc t9TaVZLkHOsDYGBDimb8w5zdPAUOFzCSDw/ZsQg4IqufXnnuenEBIqa0i nqx/EKmFA+NeihY9GvZKip6d6B5ZUUtdAW/bSugLLuRANnbh/+QLcj9Mg x/ZtXdwv4SdzMk8HvsaeZLbccauEft/wpuhwf6XHv2VNZxvQ+koo4asdg Q==; X-CSE-ConnectionGUID: gvnQoW/0QcONOgUKFtyCUg== X-CSE-MsgGUID: WzqXd58hT+i4hVUaZwridw== X-IronPort-AV: E=McAfee;i="6800,10657,11586"; a="74734888" X-IronPort-AV: E=Sophos;i="6.19,249,1754982000"; d="scan'208";a="74734888" Received: from fmviesa003.fm.intel.com ([10.60.135.143]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2025 05:26:49 -0700 X-CSE-ConnectionGUID: vdRp44lcSV2X6qSpo0BJeQ== X-CSE-MsgGUID: 2NFambV/TLubggDm+0LoVg== X-ExtLoop1: 1 Received: from unknown (HELO fdefranc-mobl3.igk.intel.com) ([10.237.142.160]) by fmviesa003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2025 05:26:38 -0700 From: "Fabio M. De Francesco" To: linux-cxl@vger.kernel.org Cc: "Rafael J . Wysocki" , Len Brown , Tony Luck , Borislav Petkov , Hanjun Guo , Mauro Carvalho Chehab , Shuai Xue , Davidlohr Bueso , Jonathan Cameron , Dave Jiang , Alison Schofield , Vishal Verma , Ira Weiny , Dan Williams , Mahesh J Salgaonkar , Oliver O'Halloran , Bjorn Helgaas , Sunil V L , Xiaofei Tan , Mario Limonciello , Huacai Chen , Heinrich Schuchardt , Arnd Bergmann , "Fabio M . De Francesco" , Peter Zijlstra , Ingo Molnar , Guo Weikang , Xin Li , Will Deacon , Huang Yiwei , Gavin Shan , Smita Koralahalli , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Li Ming , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Kuppuswamy Sathyanarayanan , Karolina Stolarek , Jon Pan-Doh , Lukas Wunner , Shiju Jose , linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-pci@vger.kernel.org Subject: [PATCH 2/6 v6] ACPI: extlog: Trace CPER PCI Express Error Section Date: Thu, 23 Oct 2025 14:25:37 +0200 Message-ID: <20251023122612.1326748-3-fabio.m.de.francesco@linux.intel.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251023122612.1326748-1-fabio.m.de.francesco@linux.intel.com> References: <20251023122612.1326748-1-fabio.m.de.francesco@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" I/O Machine Check Architecture events may signal failing PCIe components or links. The AER event contains details on what was happening on the wire when the error was signaled. Trace the CPER PCIe Error section (UEFI v2.10, Appendix N.2.7) reported by the I/O MCA. Cc: Dan Williams Reviewed-by: Dave Jiang Reviewed-by: Jonathan Cameron Signed-off-by: Fabio M. De Francesco --- drivers/acpi/Kconfig | 1 + drivers/acpi/acpi_extlog.c | 32 ++++++++++++++++++++++++++++++++ drivers/pci/pcie/aer.c | 2 +- 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig index ca00a5dbcf75..f8a97db075fc 100644 --- a/drivers/acpi/Kconfig +++ b/drivers/acpi/Kconfig @@ -494,6 +494,7 @@ config ACPI_EXTLOG tristate "Extended Error Log support" depends on X86_MCE && X86_LOCAL_APIC && EDAC select UEFI_CPER + select ACPI_APEI_PCIEAER help Certain usages such as Predictive Failure Analysis (PFA) require more information about the error than what can be described in diff --git a/drivers/acpi/acpi_extlog.c b/drivers/acpi/acpi_extlog.c index 47d11cb5c912..cefe8d2d8aff 100644 --- a/drivers/acpi/acpi_extlog.c +++ b/drivers/acpi/acpi_extlog.c @@ -132,6 +132,34 @@ static int print_extlog_rcd(const char *pfx, return 1; } =20 +static void extlog_print_pcie(struct cper_sec_pcie *pcie_err, + int severity) +{ + struct aer_capability_regs *aer; + struct pci_dev *pdev; + unsigned int devfn; + unsigned int bus; + int aer_severity; + int domain; + + if (!(pcie_err->validation_bits & CPER_PCIE_VALID_DEVICE_ID || + pcie_err->validation_bits & CPER_PCIE_VALID_AER_INFO)) + return; + + aer_severity =3D cper_severity_to_aer(severity); + aer =3D (struct aer_capability_regs *)pcie_err->aer_info; + domain =3D pcie_err->device_id.segment; + bus =3D pcie_err->device_id.bus; + devfn =3D PCI_DEVFN(pcie_err->device_id.device, + pcie_err->device_id.function); + pdev =3D pci_get_domain_bus_and_slot(domain, bus, devfn); + if (!pdev) + return; + + pci_print_aer(pdev, aer_severity, aer); + pci_dev_put(pdev); +} + static int extlog_print(struct notifier_block *nb, unsigned long val, void *data) { @@ -183,6 +211,10 @@ static int extlog_print(struct notifier_block *nb, uns= igned long val, if (gdata->error_data_length >=3D sizeof(*mem)) trace_extlog_mem_event(mem, err_seq, fru_id, fru_text, (u8)gdata->error_severity); + } else if (guid_equal(sec_type, &CPER_SEC_PCIE)) { + struct cper_sec_pcie *pcie_err =3D acpi_hest_get_payload(gdata); + + extlog_print_pcie(pcie_err, gdata->error_severity); } else { void *err =3D acpi_hest_get_payload(gdata); =20 diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index 0b5ed4722ac3..1b903e0644d6 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -971,7 +971,7 @@ void pci_print_aer(struct pci_dev *dev, int aer_severit= y, pcie_print_tlp_log(dev, &aer->header_log, info.level, dev_fmt(" ")); } -EXPORT_SYMBOL_NS_GPL(pci_print_aer, "CXL"); +EXPORT_SYMBOL_GPL(pci_print_aer); =20 /** * add_error_device - list device to be handled --=20 2.51.0 From nobody Sat Feb 7 10:15:23 2026 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.9]) (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 E52E829BDA3; Thu, 23 Oct 2025 12:27:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.9 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761222424; cv=none; b=U1eWYFFGPDe4Pika+7zm3qXjWTHAE+b/d2r1siql7TC4DZCaKx6fPi1tsF5zzc87yivhxG9/qyf56DJPcEZa64drJ95tnra6AxEMN23tCh+HkqIaFzBxxNtXHgwbZrkuOE+c1MLDfL1mk/b4Wd/4QfaGBUb7gd92UlhSbDwPzqQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761222424; c=relaxed/simple; bh=PbFADBLewu37LDKf0I/qUmCC86OvOzKhoSduxuMrrMw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=egBYIU07Mo93gY0+9QcfhSzsu10AZUSMpo9sFWaGPZndnGqqKd6HllCNAo1Fsg5LRm3F2N1YBAB/4nd3oSAWKyQpOOex8XMcBPwdr8hVQ0966jaO0qg+yOTlxUP3aqVdibNy5BLNb8wT3qpXNcuunLI7fXmKRF6/+CD3TA3fhR0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=ZQD9KJCQ; arc=none smtp.client-ip=198.175.65.9 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="ZQD9KJCQ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1761222422; x=1792758422; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=PbFADBLewu37LDKf0I/qUmCC86OvOzKhoSduxuMrrMw=; b=ZQD9KJCQQZXP4KEfo1G37daGsD34NQVuGuVjXaqP7ZXcDJN5fD0+SNdB DiWIX7Xq5eyKHbWABLRWzTDoDzL+2vYYiaF9OvLxACIlEOm0GVwPPG1LF vmSw8KEAhNZ1WxFbta82YAYb+pVC7AQRxQKQ988TOOd30f3MIh3kzV022 d+YjS36SarvtSKTEfUbkf2Oip6csoKA4t8+knbPUrz1pKxWuIzji4lseH qPPT70S/V1PieTYvitad+fRus5PPiGw15r1OuOkw4SFX4/qitqLWrp5dE kV9gyhwmT0jnrjc9lvzmKV8IXzDBlzsgdjE49C6Z09lJMeOZBSHZjiW17 g==; X-CSE-ConnectionGUID: vLHWVVJeSQ+y/QMdJsRHOA== X-CSE-MsgGUID: kSzDrub/R7Gj1is2KQL6/A== X-IronPort-AV: E=McAfee;i="6800,10657,11586"; a="86017268" X-IronPort-AV: E=Sophos;i="6.19,249,1754982000"; d="scan'208";a="86017268" Received: from fmviesa003.fm.intel.com ([10.60.135.143]) by orvoesa101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2025 05:27:00 -0700 X-CSE-ConnectionGUID: jCz3Ch1MR9+KUQDQFIQXOw== X-CSE-MsgGUID: j+jCBTy1Tf2GHqB1muXCpA== X-ExtLoop1: 1 Received: from unknown (HELO fdefranc-mobl3.igk.intel.com) ([10.237.142.160]) by fmviesa003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2025 05:26:49 -0700 From: "Fabio M. De Francesco" To: linux-cxl@vger.kernel.org Cc: "Rafael J . Wysocki" , Len Brown , Tony Luck , Borislav Petkov , Hanjun Guo , Mauro Carvalho Chehab , Shuai Xue , Davidlohr Bueso , Jonathan Cameron , Dave Jiang , Alison Schofield , Vishal Verma , Ira Weiny , Dan Williams , Mahesh J Salgaonkar , Oliver O'Halloran , Bjorn Helgaas , Sunil V L , Xiaofei Tan , Mario Limonciello , Huacai Chen , Heinrich Schuchardt , Arnd Bergmann , "Fabio M . De Francesco" , Peter Zijlstra , Ingo Molnar , Guo Weikang , Xin Li , Will Deacon , Huang Yiwei , Gavin Shan , Smita Koralahalli , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Li Ming , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Kuppuswamy Sathyanarayanan , Karolina Stolarek , Jon Pan-Doh , Lukas Wunner , Shiju Jose , linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-pci@vger.kernel.org Subject: [PATCH 3/6 v6] acpi/ghes: Make GHES select ACPI_APEI_PCIEAER Date: Thu, 23 Oct 2025 14:25:38 +0200 Message-ID: <20251023122612.1326748-4-fabio.m.de.francesco@linux.intel.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251023122612.1326748-1-fabio.m.de.francesco@linux.intel.com> References: <20251023122612.1326748-1-fabio.m.de.francesco@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" GHES handles the PCI Express Error Section and also the Compute Express Link (CXL) Protocol Error Section. Two of its functions depend on the APEI PCIe AER logging/recovering support (ACPI_APEI_PCIEAER). Make GHES select ACPI_APEI_PCIEAER and remove the conditional compilation from the body of two static functions that handle the CPER Error Sections mentioned above. Signed-off-by: Fabio M. De Francesco --- drivers/acpi/apei/Kconfig | 1 + drivers/acpi/apei/ghes.c | 4 ---- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/acpi/apei/Kconfig b/drivers/acpi/apei/Kconfig index 070c07d68dfb..c265b54d810d 100644 --- a/drivers/acpi/apei/Kconfig +++ b/drivers/acpi/apei/Kconfig @@ -23,6 +23,7 @@ config ACPI_APEI_GHES select ACPI_HED select IRQ_WORK select GENERIC_ALLOCATOR + select ACPI_APEI_PCIEAER select ARM_SDE_INTERFACE if ARM64 help Generic Hardware Error Source provides a way to report diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c index 97ee19f2cae0..d6fe5f020e96 100644 --- a/drivers/acpi/apei/ghes.c +++ b/drivers/acpi/apei/ghes.c @@ -613,7 +613,6 @@ static bool ghes_handle_arm_hw_error(struct acpi_hest_g= eneric_data *gdata, */ static void ghes_handle_aer(struct acpi_hest_generic_data *gdata) { -#ifdef CONFIG_ACPI_APEI_PCIEAER struct cper_sec_pcie *pcie_err =3D acpi_hest_get_payload(gdata); =20 if (pcie_err->validation_bits & CPER_PCIE_VALID_DEVICE_ID && @@ -646,7 +645,6 @@ static void ghes_handle_aer(struct acpi_hest_generic_da= ta *gdata) (struct aer_capability_regs *) aer_info); } -#endif } =20 static BLOCKING_NOTIFIER_HEAD(vendor_record_notify_list); @@ -711,7 +709,6 @@ struct work_struct *cxl_cper_prot_err_work; static void cxl_cper_post_prot_err(struct cxl_cper_sec_prot_err *prot_err, int severity) { -#ifdef CONFIG_ACPI_APEI_PCIEAER struct cxl_cper_prot_err_work_data wd; u8 *dvsec_start, *cap_start; =20 @@ -767,7 +764,6 @@ static void cxl_cper_post_prot_err(struct cxl_cper_sec_= prot_err *prot_err, } =20 schedule_work(cxl_cper_prot_err_work); -#endif } =20 int cxl_cper_register_prot_err_work(struct work_struct *work) --=20 2.51.0 From nobody Sat Feb 7 10:15:23 2026 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.13]) (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 B5E332F6928; Thu, 23 Oct 2025 12:27:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761222433; cv=none; b=RazrH75kqFPrYyHY4jHD6D8Y+Pbm9xnzgDeI49CqhIXkBJBWUfFmLOTxcZZ0PYpgFgCa85eniAJyAs2Z2nYCiZ08OUQofLdWX11gcYAuRS4c54Gpml4oMB3f1Cua2cfDlnKJiyhfsXJFuJXR95USrm8Tvv2LLicf9ss7WhqIVjU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761222433; c=relaxed/simple; bh=m/rUtA0AMDKt0v+zqAAwnwEJS8vRn5weJur5wdFlyLE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fRoDZuAgYNw0Eo8rLI5K6CCBaf+9BCZGoTOYT2vHpK03rYglJaCLFWv7fM3yCKJq/HLCUGVwYY7J8/n572EOP9j5cS3cLL9vDXi+HAQAMiVJ3qm7zrlaO3vGXfVaWLXM+heYw2Omf5sCLu9ReOfNWVbdtk6Aoi+i7WnwSYOoWJg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=chAT903l; arc=none smtp.client-ip=198.175.65.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="chAT903l" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1761222431; x=1792758431; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=m/rUtA0AMDKt0v+zqAAwnwEJS8vRn5weJur5wdFlyLE=; b=chAT903lRgo66/C4Y4u30PxBh/zHK3K6nvULi+ErWYHwmGx/xtyop7GH lEPN640oi3y+QaXccANxSGUk9cPbkUhnPe8ulq7m0hZ1fS98BwYZBoKXS hEg438aVBxQV1KpTBjZrO61GoTKjsfHMJ6CBBcu26rW5QddqEAEMVOzg3 Tgzi9PQ+aMhpoOmMlT/jtme00REw9j/o57TPPriCcf+0Etwp4TwUm/udG xB9XVaIiaKbq73rPo1syuw4lqQ3PmSQPaGphJZix5jtBsixLpOF5/jgDW Bvgu9NTBpD5aW5kStMWPjItBNQlMKAjZ1z17DudSsQiJOv4I/zU9CnxM/ w==; X-CSE-ConnectionGUID: Kh2Tn5qcSEaEopiCpo9E/g== X-CSE-MsgGUID: 3KAfBAv/Qdax3M1AzZviDA== X-IronPort-AV: E=McAfee;i="6800,10657,11586"; a="74506760" X-IronPort-AV: E=Sophos;i="6.19,249,1754982000"; d="scan'208";a="74506760" Received: from fmviesa003.fm.intel.com ([10.60.135.143]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2025 05:27:11 -0700 X-CSE-ConnectionGUID: iomVXMNYQgSrdGJDUxuTZA== X-CSE-MsgGUID: eXgs3qMmTeG2602MVH+ETA== X-ExtLoop1: 1 Received: from unknown (HELO fdefranc-mobl3.igk.intel.com) ([10.237.142.160]) by fmviesa003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2025 05:27:00 -0700 From: "Fabio M. De Francesco" To: linux-cxl@vger.kernel.org Cc: "Rafael J . Wysocki" , Len Brown , Tony Luck , Borislav Petkov , Hanjun Guo , Mauro Carvalho Chehab , Shuai Xue , Davidlohr Bueso , Jonathan Cameron , Dave Jiang , Alison Schofield , Vishal Verma , Ira Weiny , Dan Williams , Mahesh J Salgaonkar , Oliver O'Halloran , Bjorn Helgaas , Sunil V L , Xiaofei Tan , Mario Limonciello , Huacai Chen , Heinrich Schuchardt , Arnd Bergmann , "Fabio M . De Francesco" , Peter Zijlstra , Ingo Molnar , Guo Weikang , Xin Li , Will Deacon , Huang Yiwei , Gavin Shan , Smita Koralahalli , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Li Ming , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Kuppuswamy Sathyanarayanan , Karolina Stolarek , Jon Pan-Doh , Lukas Wunner , Shiju Jose , linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-pci@vger.kernel.org Subject: [PATCH 4/6 v6] acpi/ghes: Add helper for CXL protocol errors checks Date: Thu, 23 Oct 2025 14:25:39 +0200 Message-ID: <20251023122612.1326748-5-fabio.m.de.francesco@linux.intel.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251023122612.1326748-1-fabio.m.de.francesco@linux.intel.com> References: <20251023122612.1326748-1-fabio.m.de.francesco@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Move the CPER CXL protocol errors validity out of cxl_cper_post_prot_err() to cxl_cper_sec_prot_err_valid() and limit the serial number check only to CXL agents that are CXL devices (UEFI v2.10, Appendix N.2.13). Signed-off-by: Fabio M. De Francesco --- drivers/acpi/apei/ghes.c | 32 ++++++++++++++++++++++---------- include/cxl/event.h | 10 ++++++++++ 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c index d6fe5f020e96..e69ae864f43d 100644 --- a/drivers/acpi/apei/ghes.c +++ b/drivers/acpi/apei/ghes.c @@ -706,30 +706,42 @@ static DEFINE_KFIFO(cxl_cper_prot_err_fifo, struct cx= l_cper_prot_err_work_data, static DEFINE_SPINLOCK(cxl_cper_prot_err_work_lock); struct work_struct *cxl_cper_prot_err_work; =20 -static void cxl_cper_post_prot_err(struct cxl_cper_sec_prot_err *prot_err, - int severity) +int cxl_cper_sec_prot_err_valid(struct cxl_cper_sec_prot_err *prot_err) { - struct cxl_cper_prot_err_work_data wd; - u8 *dvsec_start, *cap_start; - if (!(prot_err->valid_bits & PROT_ERR_VALID_AGENT_ADDRESS)) { pr_err_ratelimited("CXL CPER invalid agent type\n"); - return; + return -EINVAL; } =20 if (!(prot_err->valid_bits & PROT_ERR_VALID_ERROR_LOG)) { pr_err_ratelimited("CXL CPER invalid protocol error log\n"); - return; + return -EINVAL; } =20 if (prot_err->err_len !=3D sizeof(struct cxl_ras_capability_regs)) { pr_err_ratelimited("CXL CPER invalid RAS Cap size (%u)\n", prot_err->err_len); - return; + return -EINVAL; } =20 - if (!(prot_err->valid_bits & PROT_ERR_VALID_SERIAL_NUMBER)) - pr_warn(FW_WARN "CXL CPER no device serial number\n"); + if ((prot_err->agent_type =3D=3D RCD || prot_err->agent_type =3D=3D DEVIC= E || + prot_err->agent_type =3D=3D LD || prot_err->agent_type =3D=3D FMLD) = && + !(prot_err->valid_bits & PROT_ERR_VALID_SERIAL_NUMBER)) + pr_warn_ratelimited(FW_WARN + "CXL CPER no device serial number\n"); + + return 0; +} +EXPORT_SYMBOL_GPL(cxl_cper_sec_prot_err_valid); + +static void cxl_cper_post_prot_err(struct cxl_cper_sec_prot_err *prot_err, + int severity) +{ + struct cxl_cper_prot_err_work_data wd; + u8 *dvsec_start, *cap_start; + + if (cxl_cper_sec_prot_err_valid(prot_err)) + return; =20 guard(spinlock_irqsave)(&cxl_cper_prot_err_work_lock); =20 diff --git a/include/cxl/event.h b/include/cxl/event.h index 6fd90f9cc203..4d7d1036ea9c 100644 --- a/include/cxl/event.h +++ b/include/cxl/event.h @@ -320,4 +320,14 @@ static inline int cxl_cper_prot_err_kfifo_get(struct c= xl_cper_prot_err_work_data } #endif =20 +#ifdef CONFIG_ACPI_APEI_PCIEAER +int cxl_cper_sec_prot_err_valid(struct cxl_cper_sec_prot_err *prot_err); +#else +static inline int +cxl_cper_sec_prot_err_valid(struct cxl_cper_sec_prot_err *prot_err) +{ + return -EOPNOTSUPP; +} +#endif + #endif /* _LINUX_CXL_EVENT_H */ --=20 2.51.0 From nobody Sat Feb 7 10:15:23 2026 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.12]) (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 E53093009C1; Thu, 23 Oct 2025 12:27:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.12 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761222443; cv=none; b=kzq1qpHpjqndvcQyCEo1jy3JYFafrnOtA98X5wuJA47jXk45W1YMhVdJ/dhAvg49/GN5qe7FOQRoPjFQ+W/eI87/JhxREUbl4Olrmot/kX5YhbzStfdAWvQmfjA7HR5Yr+XxtPXRTbpmndiClqMXwq07uQZeMkO6m5VHSjpmrJo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761222443; c=relaxed/simple; bh=3PEBfRTe7JZt2iqS1pUdjJp09lBaWXbuiuUIHEzIPCE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=S9BgQbMFsrGQlLe4ETfli6rpBpRy9V5dQQgzDOS4peVbh4pcjfZCjM1gx4iQPuZs9emfwyx/9A2flIBpOkU/I+7wz9xtjoxN6vKBbyHY6/WrtVh5YBcvs1xTwPbKK9HhyeeMpu5Vu5mw5EzGOLX1huNipXsbL1s04VD7IeAFj54= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=bTvwTfA/; arc=none smtp.client-ip=198.175.65.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="bTvwTfA/" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1761222442; x=1792758442; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=3PEBfRTe7JZt2iqS1pUdjJp09lBaWXbuiuUIHEzIPCE=; b=bTvwTfA//zsl8C3okG9OkLlCm+QOigHm+k8G09xfcxe6SUwDsxgCEA5c ucKWs7XELpxWQsVUlwnp+zBWWuz0aZ7DRv5RmhWqnPwtSM/xcQCXfAqf4 kCb4gZrHMaT5X9fclOjc+DcTLXcB1nxQx/CwyUpY8l35++Fpaq5FI5UlL 04n4LCtXk+xIBFMXY8XYHs8WjdmxoDl7fadtTCsCDPj3ibI4DnmO7H9M1 RXZ3Mba6Y5Iu2+Zt60gEhKoxp6pU1KGF4xY8i+P1naeAv8VwHdJ8dJVfs 0JiDMz6jrS2s5hG5GOetJV/ULeMEH5HzaJroqXXFwxxO8XddfGHcMht3+ g==; X-CSE-ConnectionGUID: c9FDxqYTQwOyOpXdIPq1Mg== X-CSE-MsgGUID: K2ZLCSQ7TyqCOgTOOO8wRg== X-IronPort-AV: E=McAfee;i="6800,10657,11586"; a="74826043" X-IronPort-AV: E=Sophos;i="6.19,249,1754982000"; d="scan'208";a="74826043" Received: from fmviesa003.fm.intel.com ([10.60.135.143]) by orvoesa104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2025 05:27:21 -0700 X-CSE-ConnectionGUID: xiVafP0KT26HI5G6NsDhQw== X-CSE-MsgGUID: h1ze7RpSS5+Tb8XdI3Q+8g== X-ExtLoop1: 1 Received: from unknown (HELO fdefranc-mobl3.igk.intel.com) ([10.237.142.160]) by fmviesa003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2025 05:27:11 -0700 From: "Fabio M. De Francesco" To: linux-cxl@vger.kernel.org Cc: "Rafael J . Wysocki" , Len Brown , Tony Luck , Borislav Petkov , Hanjun Guo , Mauro Carvalho Chehab , Shuai Xue , Davidlohr Bueso , Jonathan Cameron , Dave Jiang , Alison Schofield , Vishal Verma , Ira Weiny , Dan Williams , Mahesh J Salgaonkar , Oliver O'Halloran , Bjorn Helgaas , Sunil V L , Xiaofei Tan , Mario Limonciello , Huacai Chen , Heinrich Schuchardt , Arnd Bergmann , "Fabio M . De Francesco" , Peter Zijlstra , Ingo Molnar , Guo Weikang , Xin Li , Will Deacon , Huang Yiwei , Gavin Shan , Smita Koralahalli , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Li Ming , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Kuppuswamy Sathyanarayanan , Karolina Stolarek , Jon Pan-Doh , Lukas Wunner , Shiju Jose , linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-pci@vger.kernel.org Subject: [PATCH 5/6 v6] acpi/ghes: Add helper to copy CXL protocol error info to work struct Date: Thu, 23 Oct 2025 14:25:40 +0200 Message-ID: <20251023122612.1326748-6-fabio.m.de.francesco@linux.intel.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251023122612.1326748-1-fabio.m.de.francesco@linux.intel.com> References: <20251023122612.1326748-1-fabio.m.de.francesco@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Make a helper out of cxl_cper_post_prot_err() that checks the CXL agent type and copy the CPER CXL protocol errors information to a work data structure. Signed-off-by: Fabio M. De Francesco Reviewed-by: Jonathan Cameron --- drivers/acpi/apei/ghes.c | 42 ++++++++++++++++++++++++++-------------- include/cxl/event.h | 10 ++++++++++ 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c index e69ae864f43d..2f4632d9855a 100644 --- a/drivers/acpi/apei/ghes.c +++ b/drivers/acpi/apei/ghes.c @@ -734,20 +734,12 @@ int cxl_cper_sec_prot_err_valid(struct cxl_cper_sec_p= rot_err *prot_err) } EXPORT_SYMBOL_GPL(cxl_cper_sec_prot_err_valid); =20 -static void cxl_cper_post_prot_err(struct cxl_cper_sec_prot_err *prot_err, - int severity) +int cxl_cper_setup_prot_err_work_data(struct cxl_cper_prot_err_work_data *= wd, + struct cxl_cper_sec_prot_err *prot_err, + int severity) { - struct cxl_cper_prot_err_work_data wd; u8 *dvsec_start, *cap_start; =20 - if (cxl_cper_sec_prot_err_valid(prot_err)) - return; - - guard(spinlock_irqsave)(&cxl_cper_prot_err_work_lock); - - if (!cxl_cper_prot_err_work) - return; - switch (prot_err->agent_type) { case RCD: case DEVICE: @@ -756,20 +748,40 @@ static void cxl_cper_post_prot_err(struct cxl_cper_se= c_prot_err *prot_err, case RP: case DSP: case USP: - memcpy(&wd.prot_err, prot_err, sizeof(wd.prot_err)); + memcpy(&wd->prot_err, prot_err, sizeof(wd->prot_err)); =20 dvsec_start =3D (u8 *)(prot_err + 1); cap_start =3D dvsec_start + prot_err->dvsec_len; =20 - memcpy(&wd.ras_cap, cap_start, sizeof(wd.ras_cap)); - wd.severity =3D cper_severity_to_aer(severity); + memcpy(&wd->ras_cap, cap_start, sizeof(wd->ras_cap)); + wd->severity =3D cper_severity_to_aer(severity); break; default: pr_err_ratelimited("CXL CPER invalid agent type: %d\n", prot_err->agent_type); - return; + return -EINVAL; } =20 + return 0; +} +EXPORT_SYMBOL_GPL(cxl_cper_setup_prot_err_work_data); + +static void cxl_cper_post_prot_err(struct cxl_cper_sec_prot_err *prot_err, + int severity) +{ + struct cxl_cper_prot_err_work_data wd; + + if (cxl_cper_sec_prot_err_valid(prot_err)) + return; + + guard(spinlock_irqsave)(&cxl_cper_prot_err_work_lock); + + if (!cxl_cper_prot_err_work) + return; + + if (cxl_cper_setup_prot_err_work_data(&wd, prot_err, severity)) + return; + if (!kfifo_put(&cxl_cper_prot_err_fifo, wd)) { pr_err_ratelimited("CXL CPER kfifo overflow\n"); return; diff --git a/include/cxl/event.h b/include/cxl/event.h index 4d7d1036ea9c..94081aec597a 100644 --- a/include/cxl/event.h +++ b/include/cxl/event.h @@ -322,12 +322,22 @@ static inline int cxl_cper_prot_err_kfifo_get(struct = cxl_cper_prot_err_work_data =20 #ifdef CONFIG_ACPI_APEI_PCIEAER int cxl_cper_sec_prot_err_valid(struct cxl_cper_sec_prot_err *prot_err); +int cxl_cper_setup_prot_err_work_data(struct cxl_cper_prot_err_work_data *= wd, + struct cxl_cper_sec_prot_err *prot_err, + int severity); #else static inline int cxl_cper_sec_prot_err_valid(struct cxl_cper_sec_prot_err *prot_err) { return -EOPNOTSUPP; } +static inline int +cxl_cper_setup_prot_err_work_data(struct cxl_cper_prot_err_work_data *wd, + struct cxl_cper_sec_prot_err *prot_err, + int severity) +{ + return -EOPNOTSUPP; +} #endif =20 #endif /* _LINUX_CXL_EVENT_H */ --=20 2.51.0 From nobody Sat Feb 7 10:15:23 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) (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 0727F3009C1; Thu, 23 Oct 2025 12:27:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.9 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761222454; cv=none; b=JTfYoL+I0N9ST9Q0pnnzbd/c/Qy7Tyy0/NpoRMXhxuM73l/fCnGBWjHmccf5qEeSPEmn69JGGZNJ7NsCakZQCCgJRpqCwj0kQ4PdDXrGSb8noOP7iOCyP+7qPv9GnS2gmJuXNzDDnqHfkDqFuUyfPS05w9pCudrrZ8J9t5GhF6s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761222454; c=relaxed/simple; bh=/SKJMBBXIi4BBnOq3DOm2MRNiysuabmj3qpcAOW/T14=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rOhOhSSHYJE/FuEabhXUd6vSKPQTqMHH1rMMIvIMDM1qd27+7mgVCqVp6vVnpTpaiyZXjORfuL8WPVUsTw/+p6XZu/hZviLe6uKZoNVuXRs8/ainpVtGX+0yN6Z7jnrjed2FYC/ki74bicNRI6JM3crljaYnw78cDQjTykSwvHU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Xz/Z8lyO; arc=none smtp.client-ip=192.198.163.9 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Xz/Z8lyO" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1761222453; x=1792758453; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=/SKJMBBXIi4BBnOq3DOm2MRNiysuabmj3qpcAOW/T14=; b=Xz/Z8lyOu0uxkexq3N4SLJeiIu9pZ9kRh6d00i1UJuFBLAlFax4/8p0N LPspWXX+PC9t56fYN19jlXfBi4yaFp+u43aXEs/rdmylJHXJYTi1MFgDC A3IX7FbY4E6c00htkxTiaG3S/3Q3TvXfou8Kkg1cjjoG16hfrrxLiRA5n UCW6sTDWdP9qOKFDDtDpU/nNNMM2EZH5/+yqNtYMy6v48IxS7d/AAYEae wa83F4R2fA0fhRmUye30m4FXKS66V6lhy8Ns1ZoUF6xqu8XOLhMwZSAPS ZzceJ90Xj4Dd7GNxInsYC+idUq2d/CiWFNr7UXhd3q2K9mcVwIHEi6lFJ A==; X-CSE-ConnectionGUID: a2e/9EDhRTOG5r7QiNZ7qA== X-CSE-MsgGUID: Veidp0jIQ0qwlS9csVLaPg== X-IronPort-AV: E=McAfee;i="6800,10657,11586"; a="74058050" X-IronPort-AV: E=Sophos;i="6.19,249,1754982000"; d="scan'208";a="74058050" Received: from fmviesa003.fm.intel.com ([10.60.135.143]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2025 05:27:32 -0700 X-CSE-ConnectionGUID: eVbxBb7SQ/i8LRB8thKqYA== X-CSE-MsgGUID: Ius4tWmQQ0C1CmpM/ISuzg== X-ExtLoop1: 1 Received: from unknown (HELO fdefranc-mobl3.igk.intel.com) ([10.237.142.160]) by fmviesa003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2025 05:27:21 -0700 From: "Fabio M. De Francesco" To: linux-cxl@vger.kernel.org Cc: "Rafael J . Wysocki" , Len Brown , Tony Luck , Borislav Petkov , Hanjun Guo , Mauro Carvalho Chehab , Shuai Xue , Davidlohr Bueso , Jonathan Cameron , Dave Jiang , Alison Schofield , Vishal Verma , Ira Weiny , Dan Williams , Mahesh J Salgaonkar , Oliver O'Halloran , Bjorn Helgaas , Sunil V L , Xiaofei Tan , Mario Limonciello , Huacai Chen , Heinrich Schuchardt , Arnd Bergmann , "Fabio M . De Francesco" , Peter Zijlstra , Ingo Molnar , Guo Weikang , Xin Li , Will Deacon , Huang Yiwei , Gavin Shan , Smita Koralahalli , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Li Ming , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Kuppuswamy Sathyanarayanan , Karolina Stolarek , Jon Pan-Doh , Lukas Wunner , Shiju Jose , linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-pci@vger.kernel.org Subject: [PATCH 6/6 v6] ACPI: extlog: Trace CPER CXL Protocol Error Section Date: Thu, 23 Oct 2025 14:25:41 +0200 Message-ID: <20251023122612.1326748-7-fabio.m.de.francesco@linux.intel.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251023122612.1326748-1-fabio.m.de.francesco@linux.intel.com> References: <20251023122612.1326748-1-fabio.m.de.francesco@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When Firmware First is enabled, BIOS handles errors first and then it makes them available to the kernel via the Common Platform Error Record (CPER) sections (UEFI 2.10 Appendix N). Linux parses the CPER sections via one of two similar paths, either ELOG or GHES. The errors managed by ELOG are signaled to the BIOS by the I/O Machine Check Architecture (I/O MCA). Currently, ELOG and GHES show some inconsistencies in how they report to userspace via trace events. Therefore, make the two mentioned paths act similarly by tracing the CPER CXL Protocol Error Section (UEFI v2.10, Appendix N.2.13). Cc: Dan Williams Reviewed-by: Kuppuswamy Sathyanarayanan Signed-off-by: Fabio M. De Francesco Reviewed-by: Jonathan Cameron --- drivers/acpi/acpi_extlog.c | 22 ++++++++++++++++++++++ drivers/cxl/core/ras.c | 6 ++++++ include/cxl/event.h | 2 ++ 3 files changed, 30 insertions(+) diff --git a/drivers/acpi/acpi_extlog.c b/drivers/acpi/acpi_extlog.c index cefe8d2d8aff..b005918517d1 100644 --- a/drivers/acpi/acpi_extlog.c +++ b/drivers/acpi/acpi_extlog.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -160,6 +161,21 @@ static void extlog_print_pcie(struct cper_sec_pcie *pc= ie_err, pci_dev_put(pdev); } =20 +static void +extlog_cxl_cper_handle_prot_err(struct cxl_cper_sec_prot_err *prot_err, + int severity) +{ + struct cxl_cper_prot_err_work_data wd; + + if (cxl_cper_sec_prot_err_valid(prot_err)) + return; + + if (cxl_cper_setup_prot_err_work_data(&wd, prot_err, severity)) + return; + + cxl_cper_ras_handle_prot_err(&wd); +} + static int extlog_print(struct notifier_block *nb, unsigned long val, void *data) { @@ -211,6 +227,12 @@ static int extlog_print(struct notifier_block *nb, uns= igned long val, if (gdata->error_data_length >=3D sizeof(*mem)) trace_extlog_mem_event(mem, err_seq, fru_id, fru_text, (u8)gdata->error_severity); + } else if (guid_equal(sec_type, &CPER_SEC_CXL_PROT_ERR)) { + struct cxl_cper_sec_prot_err *prot_err =3D + acpi_hest_get_payload(gdata); + + extlog_cxl_cper_handle_prot_err(prot_err, + gdata->error_severity); } else if (guid_equal(sec_type, &CPER_SEC_PCIE)) { struct cper_sec_pcie *pcie_err =3D acpi_hest_get_payload(gdata); =20 diff --git a/drivers/cxl/core/ras.c b/drivers/cxl/core/ras.c index 2731ba3a0799..3f527b0c6509 100644 --- a/drivers/cxl/core/ras.c +++ b/drivers/cxl/core/ras.c @@ -105,6 +105,12 @@ static void cxl_cper_handle_prot_err(struct cxl_cper_p= rot_err_work_data *data) cxl_cper_trace_uncorr_prot_err(cxlmd, data->ras_cap); } =20 +void cxl_cper_ras_handle_prot_err(struct cxl_cper_prot_err_work_data *wd) +{ + cxl_cper_handle_prot_err(wd); +} +EXPORT_SYMBOL_GPL(cxl_cper_ras_handle_prot_err); + static void cxl_cper_prot_err_work_fn(struct work_struct *work) { struct cxl_cper_prot_err_work_data wd; diff --git a/include/cxl/event.h b/include/cxl/event.h index 94081aec597a..a37eef112411 100644 --- a/include/cxl/event.h +++ b/include/cxl/event.h @@ -340,4 +340,6 @@ cxl_cper_setup_prot_err_work_data(struct cxl_cper_prot_= err_work_data *wd, } #endif =20 +void cxl_cper_ras_handle_prot_err(struct cxl_cper_prot_err_work_data *wd); + #endif /* _LINUX_CXL_EVENT_H */ --=20 2.51.0