[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251027141139.GA51741@yaz-khff2.amd.com>
Date: Mon, 27 Oct 2025 10:11:39 -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 Mon, Oct 27, 2025 at 09:35:42AM -0400, Yazen Ghannam wrote:
> On Sat, Oct 25, 2025 at 05:03:04PM +0200, Borislav Petkov wrote:
> > On Fri, Oct 24, 2025 at 11:27:23PM +0200, Borislav Petkov wrote:
> > > On Fri, Oct 24, 2025 at 04:30:12PM -0400, Yazen Ghannam wrote:
> > > > Should I send another revision?
> > >
> > > Nah, I'm not done simplifying this yet. :-P
> >
> > Yeah, no, looks ok now:
> >
Here's another fixup. I also simplified the function parameters and
tweaked the code comments.
Thanks,
Yazen
---
arch/x86/kernel/cpu/mce/core.c | 17 +++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)
diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c
index 7be062429ce3..eaee48b8b339 100644
--- a/arch/x86/kernel/cpu/mce/core.c
+++ b/arch/x86/kernel/cpu/mce/core.c
@@ -726,21 +726,18 @@ DEFINE_PER_CPU(unsigned, mce_poll_count);
* 3) SMCA systems check MCA_DESTAT, if error was not found in MCA_STATUS, and
* log it.
*/
-static bool smca_should_log_poll_error(enum mcp_flags flags, struct mce_hw_err *err)
+static bool smca_should_log_poll_error(struct mce *m)
{
- struct mce *m = &err->m;
-
/*
- * If the MCA_STATUS register has a deferred error, then continue using it as
- * the status register.
- *
- * MCA_DESTAT will be cleared at the end of the handler.
+ * If MCA_STATUS happens to have a deferred error, then MCA_DESTAT will
+ * be cleared at the end of the handler.
*/
- if ((m->status & MCI_STATUS_VAL) && (m->status & MCI_STATUS_DEFERRED))
+ if (m->status & MCI_STATUS_VAL)
return true;
/*
- * If the MCA_DESTAT register has a deferred error, then use it instead.
+ * Use the MCA_DESTAT register if it has a deferred error. The redundant
+ * status bit check is to filter out any bogus errors.
*
* MCA_STATUS will not be cleared at the end of the handler.
*/
@@ -780,7 +777,7 @@ static bool should_log_poll_error(enum mcp_flags flags, struct mce_hw_err *err)
struct mce *m = &err->m;
if (mce_flags.smca)
- return smca_should_log_poll_error(flags, err);
+ return smca_should_log_poll_error(m);
/* If this entry is not valid, ignore it. */
if (!(m->status & MCI_STATUS_VAL))
--
2.51.1
Powered by blists - more mailing lists