RE: [PATCH v2 07/16] x86/mce: Define BSP-only init
From: Zhuo, Qiuxu
Date: Wed Feb 19 2025 - 20:38:30 EST
> From: Yazen Ghannam <yazen.ghannam@xxxxxxx>
> [...]
> > > --- a/arch/x86/kernel/cpu/mce/core.c
> > > +++ b/arch/x86/kernel/cpu/mce/core.c
> > > [...]
> > > +/* Called only on the boot CPU. */
> > > +void cpu_mca_init(struct cpuinfo_x86 *c) {
> > > + u64 cap;
> > > +
> > > + if (!mce_available(c))
> > > + return;
> > > +
> > > + mce_flags.overflow_recov =
> > > cpu_feature_enabled(X86_FEATURE_OVERFLOW_RECOV);
> > > + mce_flags.succor =
> > > cpu_feature_enabled(X86_FEATURE_SUCCOR);
> > > + mce_flags.smca =
> > > cpu_feature_enabled(X86_FEATURE_SMCA);
> >
> > 1. Before this patch set, the above code was executed only if the following
> > condition was true. Do we still need this check?
> >
> > if (c->x86_vendor == X86_VENDOR_AMD || c->x86_vendor ==
> X86_VENDOR_HYGON)
> > {
> > The above code.
> > }
>
> I don't think so. Feature checks should be independent of vendor, so the
> vendor checks are redundant.
Without the vendor check, the Intel CPUs will also run this code (which they should
*NOT* ) and may mistakenly set those global AMD-specific flags, which may result in
Intel CPUs performing AMD-specific error handling during the machine check.
-Qiuxu