From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1F9C2CCF9E3 for ; Fri, 7 Nov 2025 19:59:16 +0000 (UTC) Received: from boromir.ozlabs.org (localhost [127.0.0.1]) by lists.ozlabs.org (Postfix) with ESMTP id 4d38yq2118z2yFJ; Sat, 8 Nov 2025 06:59:15 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; arc=none smtp.remote-ip=198.175.65.12 ARC-Seal: i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1762545555; cv=none; b=W3AzAD5LDXU6hUiq9hSbGKbgU963KO/X+P9y4PYUXvayK/v4wecT4912dUFOZu1eF607Pl/hJ/TvWeTe9380/SYM+WvNY5xujxAut3pW5w+z+OxSf5pp/fXmskOPfJEmRJDbgdEzv6piKrXBD4LnnMj+jYBHcLFOIZ5VcEteOiF1X/imdYltPSL8rEIi6O+HfyJSvqmNeTWRT0Oy55CgG1g4lzi33rIZx/7R2Z4PGJYK6wB4/6xfHbRvahXynM72c++qNcZjiQf41kozILAeO6NOviZ5ehC/mYvljHrh0h0iTR8Glnz1nab5UxXTc4U9v5U+NAnAISWhfbwvHNt4xA== ARC-Message-Signature: i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1762545555; c=relaxed/relaxed; bh=UkJwb7i3PmSsdn+/hNSZm8LKyUgpAzaq0zJ9Jid0F5A=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=laVbah8G11b9q+c945Tc7lZyr3TNecAPjDq4ODIFE1wHHL5W8NbFP6wSMGQvaZApsQ0v+3/NnEHG5upXxid21MNH4/zWHjqYa9vw6XPUqI1i1GvxNsvRwVdEfBWKKTWpg0mGDqQwfphxbS3W//BlrnWwyxvrMXpvpUYd1l/bQ6i7jMrpGLyGIF8nJLAUgUNBB1agC+i2dJLWnHXVEn9A6Gnz1/uDxy3Iujb6H++JtfsbOHt4XdRTxP1XhGYqiDD54eScs7tY9H2Vl2qD3zKz7r/doiW1Mjpr1fbAzaQ1ie59QHiSefnWQ82/QIcOn70N13eRkcdRUUlyz+0SWK0daQ== ARC-Authentication-Results: i=1; lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=intel.com; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=EjsQC/cX; dkim-atps=neutral; spf=pass (client-ip=198.175.65.12; helo=mgamail.intel.com; envelope-from=dave.jiang@intel.com; receiver=lists.ozlabs.org) smtp.mailfrom=intel.com Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=EjsQC/cX; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=intel.com (client-ip=198.175.65.12; helo=mgamail.intel.com; envelope-from=dave.jiang@intel.com; receiver=lists.ozlabs.org) 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 lists.ozlabs.org (Postfix) with ESMTPS id 4d38ym6DqHz2xnh for ; Sat, 8 Nov 2025 06:59:10 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762545553; x=1794081553; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=o6sCKaIr+Mcsm7DmCaTJx6MhTkgDqm5CM83QolZ5QBY=; b=EjsQC/cX5bVXTeH3R5gOULrdgFPYJIPzEHmrgEUtHGMcXLwnJxUya3QK k4T6NCE6Albu2/8Tl77QYRl9LB8LQuaDUTEj3WxT0ieiL1im0mZrTieQG qLOMHqdOUhwq9zK8YDlUx/+0e2UXSW1FVW3d66n9KrkaKXllOE1qwhx1B 1CE5tqjKfJRLPR05LNLXd4/GlN1JoDUNz2zKBL5buLAbWo121I06QuOyM QfZ9GIOsPhtcCq1xwtg213JAhjgPDTOC6OKxA4MqCRDuZL/MBx690NryV /VThnOAfSn14/bhhHEB0HVpnoXcRa+n4xFHMDc3z5W9tBlQY0q7UuVxU6 g==; X-CSE-ConnectionGUID: W7M+9CxyQEaMs/IALWjceg== X-CSE-MsgGUID: z53HiAbtS1KOEy1/A1FW1Q== X-IronPort-AV: E=McAfee;i="6800,10657,11606"; a="76149851" X-IronPort-AV: E=Sophos;i="6.19,287,1754982000"; d="scan'208";a="76149851" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by orvoesa104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Nov 2025 11:59:08 -0800 X-CSE-ConnectionGUID: WQraglFVTdSNTqRT+O0OdA== X-CSE-MsgGUID: vV07ZoEeSlaSEo5q+8IIjA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,287,1754982000"; d="scan'208";a="187370899" Received: from cmdeoliv-mobl4.amr.corp.intel.com (HELO [10.125.111.112]) ([10.125.111.112]) by orviesa006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Nov 2025 11:59:07 -0800 Message-ID: <85fa077c-0c69-452b-9503-0cd7f3e1b363@intel.com> Date: Fri, 7 Nov 2025 12:59:05 -0700 X-Mailing-List: linuxppc-dev@lists.ozlabs.org List-Id: List-Help: List-Owner: List-Post: List-Archive: , List-Subscribe: , , List-Unsubscribe: Precedence: list MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 6/6 v7] ACPI: extlog: Trace CPER CXL Protocol Error Section To: "Fabio M. De Francesco" , 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 , Alison Schofield , Vishal Verma , Ira Weiny , Dan Williams , Mahesh J Salgaonkar , Oliver O'Halloran , Bjorn Helgaas , linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-pci@vger.kernel.org, Kuppuswamy Sathyanarayanan References: <20251104182446.863422-1-fabio.m.de.francesco@linux.intel.com> <20251104182446.863422-7-fabio.m.de.francesco@linux.intel.com> From: Dave Jiang Content-Language: en-US In-Reply-To: <20251104182446.863422-7-fabio.m.de.francesco@linux.intel.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 11/4/25 11:22 AM, Fabio M. De Francesco wrote: > 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.11 Appendix N.2.13). 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. > > Cc: Dan Williams > Reviewed-by: Jonathan Cameron > Reviewed-by: Kuppuswamy Sathyanarayanan > Signed-off-by: Fabio M. De Francesco Reviewed-by: Dave Jiang > --- > drivers/acpi/Kconfig | 1 + > drivers/acpi/acpi_extlog.c | 22 ++++++++++++++++++++++ > drivers/cxl/core/ras.c | 3 ++- > include/cxl/event.h | 2 ++ > 4 files changed, 27 insertions(+), 1 deletion(-) > > diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig > index be02634f2320..c2ad24e77ddf 100644 > --- a/drivers/acpi/Kconfig > +++ b/drivers/acpi/Kconfig > @@ -498,6 +498,7 @@ config ACPI_EXTLOG > select ACPI_APEI > select ACPI_APEI_PCIEAER > select UEFI_CPER > + select CXL_BUS > 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 b3976ceb4ee4..e6fb25395984 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 *pcie_err, > pci_dev_put(pdev); > } > > +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_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, unsigned long val, > if (gdata->error_data_length >= 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 = > + 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 = acpi_hest_get_payload(gdata); > > diff --git a/drivers/cxl/core/ras.c b/drivers/cxl/core/ras.c > index 2731ba3a0799..a90480d07c87 100644 > --- a/drivers/cxl/core/ras.c > +++ b/drivers/cxl/core/ras.c > @@ -63,7 +63,7 @@ static int match_memdev_by_parent(struct device *dev, const void *uport) > return 0; > } > > -static void cxl_cper_handle_prot_err(struct cxl_cper_prot_err_work_data *data) > +void cxl_cper_handle_prot_err(struct cxl_cper_prot_err_work_data *data) > { > unsigned int devfn = PCI_DEVFN(data->prot_err.agent_addr.device, > data->prot_err.agent_addr.function); > @@ -104,6 +104,7 @@ static void cxl_cper_handle_prot_err(struct cxl_cper_prot_err_work_data *data) > else > cxl_cper_trace_uncorr_prot_err(cxlmd, data->ras_cap); > } > +EXPORT_SYMBOL_GPL(cxl_cper_handle_prot_err); > > static void cxl_cper_prot_err_work_fn(struct work_struct *work) > { > diff --git a/include/cxl/event.h b/include/cxl/event.h > index 94081aec597a..ff97fea718d2 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 > > +void cxl_cper_handle_prot_err(struct cxl_cper_prot_err_work_data *wd); > + > #endif /* _LINUX_CXL_EVENT_H */