| From 40fa67dd3a4a0000e38f31db3927987b2cdaaa82 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 12 Dec 2023 13:22:39 -0800 |
| Subject: ACPI: extlog: Clear Extended Error Log status when RAS_CEC handled |
| the error |
| |
| From: Tony Luck <tony.luck@intel.com> |
| |
| [ Upstream commit 38c872a9e96f72f2947affc0526cc05659367d3d ] |
| |
| When both CONFIG_RAS_CEC and CONFIG_ACPI_EXTLOG are enabled, Linux does |
| not clear the status word of the BIOS supplied error record for corrected |
| errors. This may prevent logging of subsequent uncorrected errors. |
| |
| Fix by clearing the status. |
| |
| Fixes: 23ba710a0864 ("x86/mce: Fix all mce notifiers to update the mce->kflags bitmask") |
| Reported-by: Erwin Tsaur <erwin.tsaur@intel.com> |
| Signed-off-by: Tony Luck <tony.luck@intel.com> |
| Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/acpi/acpi_extlog.c | 7 ++++++- |
| 1 file changed, 6 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/acpi/acpi_extlog.c b/drivers/acpi/acpi_extlog.c |
| index e120a96e1eae..71e8d4e7a36c 100644 |
| --- a/drivers/acpi/acpi_extlog.c |
| +++ b/drivers/acpi/acpi_extlog.c |
| @@ -145,9 +145,14 @@ static int extlog_print(struct notifier_block *nb, unsigned long val, |
| static u32 err_seq; |
| |
| estatus = extlog_elog_entry_check(cpu, bank); |
| - if (estatus == NULL || (mce->kflags & MCE_HANDLED_CEC)) |
| + if (!estatus) |
| return NOTIFY_DONE; |
| |
| + if (mce->kflags & MCE_HANDLED_CEC) { |
| + estatus->block_status = 0; |
| + return NOTIFY_DONE; |
| + } |
| + |
| memcpy(elog_buf, (void *)estatus, ELOG_ENTRY_LEN); |
| /* clear record status to enable BIOS to update it again */ |
| estatus->block_status = 0; |
| -- |
| 2.43.0 |
| |