Re: [PATCH v2 4/5] x86/cpu: Add CPU type to struct cpuinfo_topology

From: Pawan Gupta
Date: Tue Oct 22 2024 - 23:59:22 EST


On Tue, Oct 22, 2024 at 11:13:00AM -0500, Mario Limonciello wrote:
> > This makes me feel a _bit_ uneasy. 0x20 here really does mean "Atom
> > microarchitecture" and 0x40 means "Core microarchitecture".
> >
> > We want to encourage folks to use this new ABI when they want to find
> > the fastest core to run on. But we don't want them to use it to bind to
> > a CPU and then deploy Atom-specific optimizations.
> >
> > We *also* don't want the in-kernel code to do be doing things like:
> >
> > if (get_intel_cpu_type() == TOPO_CPU_TYPE_EFFICIENCY)
> > setup_force_cpu_bug(FOO);
> >
> > That would fall over if Intel ever mixed fast and slow core types with
> > the same microarchitecture, which is what AMD is doing today.
> >
> > Having:
> >
> > TOPO_CPU_TYPE_EFFICIENCY, and
> > TOPO_CPU_TYPE_PERFORMANCE
> >
> > is totally fine in generic code. But we also need to preserve the:
> >
> > TOPO_HW_CPU_TYPE_INTEL_ATOM
> > TOPO_HW_CPU_TYPE_INTEL_CORE
> >
> > values also for use in vendor-specific code.
>
> What you're suggesting is to keep an enum in the intel.c code and any code
> that needs to match atom vs core can directly use
>
> c->topo.intel_type == TOPO_HW_CPU_TYPE_INTEL_ATOM

To be able to match ATOM and CORE in the affected processor table, the
enums need to be defined in a way that they can be used in the common code.
Specially for !CONFIG_CPU_SUP_INTEL case.