Re: AMD topology broken on various 754/AM2+/AM3/AM3+ systems causes NB/EDAC/GART regression since 6.14
From: Yazen Ghannam
Date: Tue Oct 28 2025 - 10:36:41 EST
On Mon, Oct 27, 2025 at 11:18:38AM -0500, Mario Limonciello wrote:
> On 10/24/25 4:32 PM, Yazen Ghannam wrote:
[...]
> > +/*
> > + * Some older BIOSes include extra entries in MADT.
> > + * Do some vendor-specific checks to ignore them.
> > + */
> > +static bool ignore_extra_apic_entry(u32 apic_id)
> > +{
> > + u32 pkgid = topo_apicid(apic_id, TOPO_PKG_DOMAIN);
> > + struct cpuinfo_x86 *c = &boot_cpu_data;
> > +
> > + /* Allow "physically not possible" cases if in a guest. */
> > + if (!hypervisor_is_type(X86_HYPER_NATIVE))
> > + return false;
> > +
> > + /* This model only supports 8 threads in a package. */
> > + if (c->x86_vendor == X86_VENDOR_INTEL &&
> > + c->x86 == 0x6 && c->x86_model == 0x2d) {
> > + if (topo_unit_count(pkgid, TOPO_PKG_DOMAIN, phys_cpu_present_map) >= 8)
> > + goto reject;
> > + }
> > +
> > + /*
> > + * Various older models have extra entries. A common trait is that the
> > + * package ID derived from the APIC ID would be more than was ever supported.
> > + */
> > + if (c->x86_vendor == X86_VENDOR_AMD && c->x86 < 0x17) {
>
> Maybe look for lack of X86_FEATURE_ZEN instead?
Thanks. Yep, good idea.
>
> > + pkgid >>= x86_topo_system.dom_shifts[TOPO_PKG_DOMAIN - 1];
> > +
> > + if (pkgid >= 8)
> > + goto reject;
> > + }
> > +
> > + return false;
> > +
> > +reject:
> > + pr_info_once("Ignoring hot-pluggable APIC ID %x.\n", apic_id);
> > + topo_info.nr_rejected_cpus++;
> > + return true;
> > +}
> > +
Michal, does this patch resolve the issue on you systems?
Thanks,
Yazen