Messages in this thread Patch in this message | | | Subject | [PATCH 15/15 -tip] x86: Add cpufeature for ancient performance monitoring | From | Jaswinder Singh Rajput <> | Date | Mon, 11 May 2009 22:25:47 +0530 |
| |
X86_FEATURE_ARCH_PERFMON uses almost different MSRs as compare to ancient performance monitoring, so introduced X86_FEATURE_PERFMON to friendly access ancient performance monitor MSRs:
X86_FEATURE_PERFMON : performance monitoring for !X86_FEATURE_ARCH_PERFMON
Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com> --- arch/x86/include/asm/cpufeature.h | 1 + arch/x86/kernel/cpu/amd.c | 2 ++ arch/x86/kernel/cpu/intel.c | 4 +++- 3 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h index b91cb47..f660e99 100644 --- a/arch/x86/include/asm/cpufeature.h +++ b/arch/x86/include/asm/cpufeature.h @@ -169,6 +169,7 @@ #define X86_FEATURE_MM_CFG (7*32+ 14) /* MM configuration */ #define X86_FEATURE_BUS_CFG (7*32+ 15) /* Bus configuration */ #define X86_FEATURE_PERF_FREQ (7*32+ 16) /* Performance frequency */ +#define X86_FEATURE_PERFMON (7*32+ 17) /* Performance monitoring */ /* Virtualization flags: Linux defined */ #define X86_FEATURE_TPR_SHADOW (8*32+ 0) /* Intel TPR Shadow */ diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index 4b7f7dc..849d794 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c @@ -481,6 +481,8 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c) if (c->x86 >= 7) { /* K7+ */ /* MSRC001_0015 Hardware Configuration Register (HWCR) */ set_cpu_cap(c, X86_FEATURE_HW_CFG); + /* Performance monitoring support */ + set_cpu_cap(c, X86_FEATURE_PERFMON); } if (c->x86 >= 8) { /* K8+ */ /* diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c index 9c5169c..e3ce8c6 100644 --- a/arch/x86/kernel/cpu/intel.c +++ b/arch/x86/kernel/cpu/intel.c @@ -310,7 +310,9 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c) /* Check for version and the number of counters */ if ((eax & 0xff) && (((eax>>8) & 0xff) > 1)) set_cpu_cap(c, X86_FEATURE_ARCH_PERFMON); - } + } else if (c->x86 >= 5) + /* ancient performance monitoring support */ + set_cpu_cap(c, X86_FEATURE_PERFMON); if (cpu_has_xmm2) set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC); -- 1.6.0.6
| |