diff options
author | Andi Kleen <ak@linux.intel.com> | 2015-02-27 12:48:32 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2015-04-02 11:33:17 -0400 |
commit | 15fde1101a1aed11958e0d86bc360f01866a74b1 (patch) | |
tree | 758a1a7f663228565804afd0568fa4b1a20d98b4 | |
parent | da3e606d885a17525eb18afd423f5c438860b833 (diff) |
perf/x86: Only dump PEBS register when PEBS has been detected
Technically PEBS_ENABLED is only guaranteed to exist when we
detected PEBS. So add a check for this to the PMU dump function.
I don't think it can happen on a real CPU, but could in a VM.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: eranian@google.com
Link: http://lkml.kernel.org/r/1425059312-18217-4-git-send-email-andi@firstfloor.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r-- | arch/x86/kernel/cpu/perf_event.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c index 994737263daa..689e35760924 100644 --- a/arch/x86/kernel/cpu/perf_event.c +++ b/arch/x86/kernel/cpu/perf_event.c | |||
@@ -1189,14 +1189,16 @@ void perf_event_print_debug(void) | |||
1189 | rdmsrl(MSR_CORE_PERF_GLOBAL_STATUS, status); | 1189 | rdmsrl(MSR_CORE_PERF_GLOBAL_STATUS, status); |
1190 | rdmsrl(MSR_CORE_PERF_GLOBAL_OVF_CTRL, overflow); | 1190 | rdmsrl(MSR_CORE_PERF_GLOBAL_OVF_CTRL, overflow); |
1191 | rdmsrl(MSR_ARCH_PERFMON_FIXED_CTR_CTRL, fixed); | 1191 | rdmsrl(MSR_ARCH_PERFMON_FIXED_CTR_CTRL, fixed); |
1192 | rdmsrl(MSR_IA32_PEBS_ENABLE, pebs); | ||
1193 | 1192 | ||
1194 | pr_info("\n"); | 1193 | pr_info("\n"); |
1195 | pr_info("CPU#%d: ctrl: %016llx\n", cpu, ctrl); | 1194 | pr_info("CPU#%d: ctrl: %016llx\n", cpu, ctrl); |
1196 | pr_info("CPU#%d: status: %016llx\n", cpu, status); | 1195 | pr_info("CPU#%d: status: %016llx\n", cpu, status); |
1197 | pr_info("CPU#%d: overflow: %016llx\n", cpu, overflow); | 1196 | pr_info("CPU#%d: overflow: %016llx\n", cpu, overflow); |
1198 | pr_info("CPU#%d: fixed: %016llx\n", cpu, fixed); | 1197 | pr_info("CPU#%d: fixed: %016llx\n", cpu, fixed); |
1199 | pr_info("CPU#%d: pebs: %016llx\n", cpu, pebs); | 1198 | if (x86_pmu.pebs_constraints) { |
1199 | rdmsrl(MSR_IA32_PEBS_ENABLE, pebs); | ||
1200 | pr_info("CPU#%d: pebs: %016llx\n", cpu, pebs); | ||
1201 | } | ||
1200 | if (x86_pmu.lbr_nr) { | 1202 | if (x86_pmu.lbr_nr) { |
1201 | rdmsrl(MSR_IA32_DEBUGCTLMSR, debugctl); | 1203 | rdmsrl(MSR_IA32_DEBUGCTLMSR, debugctl); |
1202 | pr_info("CPU#%d: debugctl: %016llx\n", cpu, debugctl); | 1204 | pr_info("CPU#%d: debugctl: %016llx\n", cpu, debugctl); |