Re: [tip:perfcounters/core] perf_counter, x86: remove X86_FEATURE_ARCH_PERFMON flag for AMD cpus

Ingo Molnar
2009-05-10T06:31:33Z

* Jaswinder Singh Rajput <jaswinder@kernel.org> wrote:

> > #define X86_FEATURE_ARCH_PERFMON (3*32+11) /* Intel Architectural PerfMon */
> > should be replaced by
> > #define X86_FEATURE_ARCH_PERFMON (3*32+11) /* Performace Monitor */
> >
> > All x86 cpus which support performance monitor should set this feature.
> >
>
> Currently X86_FEATURE_ARCH_PERFMON is enabled for >= Intel Core2
>
> But Performance monitor is almost supported by all Intel
> processors. I am adding few MSRs list for reference to see
> complete list please check arch/x86/kernel/cpu/cpu_debug.c

I think you are confusing two things:

- The 'architectural perfmon' CPU flag, enumerated in CPUID. (this
is a relatively new CPUID flag that only Intel CPUs at around
Core2 and later will report.)

- The concept of 'performance monitoring' - which has been present
in various x86 CPUs starting at the original Pentium (P5) 15 years
ago or so.

The X86_FEATURE_ARCH_PERFMON flag is for the architectural perfmon
CPUID feature. If you execute CPUID you'll get that from the CPU -
on Core2 and later Intel CPUs. You wont get it on AMD CPUs. You wont
get it on earlier Intel CPUs.

And since 'Architectural Performance Monitoring' is an Intel only
thing, it would not be correct to do as if AMD had the same thing.
AMD has something _similar_, but not quite the same.

So, the patch from Robert cleans up that area.

( The patch might still be buggy in other ways, but you need to
understand its intent and mechanism before being able to argue
about other bugs. )

And you need to understand the difference between 'hardware' CPU
feature flags, provided by the CPUID instruction, and 'software' CPU
feature flags defined by Linux (for the reason of abstracting out
certain types of functionality).

Ingo