[PATCH] perf/x86/intel/pt: Test CPU vendor before loading

From: Borislav Petkov
Date: Thu Nov 12 2015 - 05:56:19 EST


From: Borislav Petkov <bp@xxxxxxx>

This keeps poking at MSR 0x570 when loading, i.e. MSR_IA32_RTIT_CTL,
which is most likely not present on other vendors. It is using the _safe
variant but there's no need to try it at all, really. Besides, it causes
unhandled rdmsr warnings when booting in a guest:

kvm [4414]: vcpu0 unhandled rdmsr: 0x570

So check CPU vendor before doing anything else.

Signed-off-by: Borislav Petkov <bp@xxxxxxx>
Cc: Alexander Shishkin <alexander.shishkin@xxxxxxxxxxxxxxx>
Cc: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
Cc: "H. Peter Anvin" <hpa@xxxxxxxxx>
Cc: Ingo Molnar <mingo@xxxxxxxxxx>
Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx>
Cc: Paul Gortmaker <paul.gortmaker@xxxxxxxxxxxxx>
Cc: "Peter Zijlstra (Intel)" <peterz@xxxxxxxxxxxxx>
Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
---
arch/x86/kernel/cpu/perf_event_intel_pt.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/arch/x86/kernel/cpu/perf_event_intel_pt.c b/arch/x86/kernel/cpu/perf_event_intel_pt.c
index 42169283448b..fa1262b025e7 100644
--- a/arch/x86/kernel/cpu/perf_event_intel_pt.c
+++ b/arch/x86/kernel/cpu/perf_event_intel_pt.c
@@ -1129,6 +1129,9 @@ static __init int pt_init(void)
{
int ret, cpu, prior_warn = 0;

+ if (boot_cpu_data.x86_vendor != X86_VENDOR_INTEL)
+ return 0;
+
BUILD_BUG_ON(sizeof(struct topa) > PAGE_SIZE);
get_online_cpus();
for_each_online_cpu(cpu) {
--
2.3.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/