Re: [PATCH v7 2/8] x86/mce: Unify AMD DFR handler with MCA Polling

From: Borislav Petkov

Date: Tue Oct 28 2025 - 13:47:20 EST


On Tue, Oct 28, 2025 at 11:42:58AM -0400, Yazen Ghannam wrote:
> Yes, fair point. How about this?
>
> /*
> * If MCA_STATUS has a valid error of any type, then use it.
> *
> * If the error happens to be a deferred error, then the copy
> * saved in MCA_DESTAT will be cleared at the end of the
> * handler.
> *
> * If MCA_STATUS does not have a valid error, then check
> * MCA_DESTAT for a valid deferred error.
> */

Well, we already have this at the top:

/*
* We have three scenarios for checking for Deferred errors:
*
* 1) Non-SMCA systems check MCA_STATUS and log error if found.
* 2) SMCA systems check MCA_STATUS. If error is found then log it and also
* clear MCA_DESTAT.
* 3) SMCA systems check MCA_DESTAT, if error was not found in MCA_STATUS, and
* log it.
*/

and that is good enough IMO. The rest people can read out from the code.

> Okay, agreed. I think this entire second comment can be removed.

Gone.

IOW, this:

/*
* We have three scenarios for checking for Deferred errors:
*
* 1) Non-SMCA systems check MCA_STATUS and log error if found.
* 2) SMCA systems check MCA_STATUS. If error is found then log it and also
* clear MCA_DESTAT.
* 3) SMCA systems check MCA_DESTAT, if error was not found in MCA_STATUS, and
* log it.
*/
static bool smca_should_log_poll_error(struct mce *m)
{
if (m->status & MCI_STATUS_VAL)
return true;

m->status = mce_rdmsrq(MSR_AMD64_SMCA_MCx_DESTAT(m->bank));
if ((m->status & MCI_STATUS_VAL) && (m->status & MCI_STATUS_DEFERRED)) {
m->kflags |= MCE_CHECK_DFR_REGS;
return true;
}

return false;
}

--
Regards/Gruss,
Boris.

https://people.kernel.org/tglx/notes-about-netiquette