Re: [PATCH] ACPI: extlog: Clear Extended Error Log status when RAS_CEC handled the error

From: Rafael J. Wysocki
Date: Wed Dec 13 2023 - 07:53:33 EST


On Tue, Dec 12, 2023 at 10:22 PM Tony Luck <tony.luck@xxxxxxxxx> wrote:
>
> 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@xxxxxxxxx>
> Signed-off-by: Tony Luck <tony.luck@xxxxxxxxx>
> ---
> 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;
> --

Applied as 6.8 material, thanks!