[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251028203719.GA655216@yaz-khff2.amd.com>
Date: Tue, 28 Oct 2025 16:37:19 -0400
From: Yazen Ghannam <yazen.ghannam@....com>
To: Borislav Petkov <bp@...en8.de>
Cc: x86@...nel.org, Tony Luck <tony.luck@...el.com>,
"Rafael J. Wysocki" <rafael@...nel.org>,
Len Brown <lenb@...nel.org>, linux-kernel@...r.kernel.org,
linux-edac@...r.kernel.org, Smita.KoralahalliChannabasappa@....com,
Qiuxu Zhuo <qiuxu.zhuo@...el.com>,
Nikolay Borisov <nik.borisov@...e.com>,
Bert Karwatzki <spasswolf@....de>, linux-acpi@...r.kernel.org
Subject: Re: [PATCH v7 2/8] x86/mce: Unify AMD DFR handler with MCA Polling
On Tue, Oct 28, 2025 at 06:46:56PM +0100, Borislav Petkov wrote:
> 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, sounds good.
>
> > 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;
> }
>
Yep, that's it. Much cleaner. :)
Thanks,
Yazen
Powered by blists - more mailing lists