Changing the default 'instructions' HW event for SandyBridge and IvyBrige to use the available precise 'instructions' event.
The precise event is defined in Intel SDM as: INST_RETIRED.ALL - Precise instruction retired event with HW to reduce effect of PEBS shadow in IP distribution for both SandyBridge and IvyBrige micro-archs. It allows to use precise modifier on 'instructions' event on SandyBridge and IvyBrige micro-archs which is not possible now. Signed-off-by: Jiri Olsa <jo...@redhat.com> Cc: Arnaldo Carvalho de Melo <a...@redhat.com> Cc: Namhyung Kim <namhy...@kernel.org> Cc: Corey Ashford <cjash...@linux.vnet.ibm.com> Cc: Frederic Weisbecker <fweis...@gmail.com> Cc: Ingo Molnar <mi...@elte.hu> Cc: Namhyung Kim <namhy...@kernel.org> Cc: Paul Mackerras <pau...@samba.org> Cc: Peter Zijlstra <a.p.zijls...@chello.nl> Cc: Andi Kleen <a...@firstfloor.org> Cc: David Ahern <dsah...@gmail.com> Cc: Stephane Eranian <eran...@google.com> --- arch/x86/kernel/cpu/perf_event_intel.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c index 529c893..3bc3592 100644 --- a/arch/x86/kernel/cpu/perf_event_intel.c +++ b/arch/x86/kernel/cpu/perf_event_intel.c @@ -2104,6 +2104,9 @@ __init int intel_pmu_init(void) /* UOPS_DISPATCHED.THREAD,c=1,i=1 to count stall cycles*/ intel_perfmon_event_map[PERF_COUNT_HW_STALLED_CYCLES_BACKEND] = X86_CONFIG(.event=0xb1, .umask=0x01, .inv=1, .cmask=1); + /* INST_RETIRED.ALL to count precise instructions */ + intel_perfmon_event_map[PERF_COUNT_HW_INSTRUCTIONS] = + X86_CONFIG(.event=0xc0, .umask=0x01); pr_cont("SandyBridge events, "); break; @@ -2127,6 +2130,9 @@ __init int intel_pmu_init(void) /* UOPS_ISSUED.ANY,c=1,i=1 to count stall cycles */ intel_perfmon_event_map[PERF_COUNT_HW_STALLED_CYCLES_FRONTEND] = X86_CONFIG(.event=0x0e, .umask=0x01, .inv=1, .cmask=1); + /* INST_RETIRED.ALL to count precise instructions */ + intel_perfmon_event_map[PERF_COUNT_HW_INSTRUCTIONS] = + X86_CONFIG(.event=0xc0, .umask=0x01); pr_cont("IvyBridge events, "); break; -- 1.7.11.7 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/