perf/x86: Disable uncore on virtualized CPUs
authorYan, Zheng <zheng.z.yan@intel.com>
Tue, 21 Aug 2012 09:08:37 +0000 (17:08 +0800)
committerIngo Molnar <mingo@kernel.org>
Sat, 20 Oct 2012 08:07:02 +0000 (10:07 +0200)
Initializing uncore PMU on virtualized CPU may hang the kernel.
This is because kvm does not emulate the entire hardware. Thers
are lots of uncore related MSRs, making kvm enumerate them all
is a non-trival task. So just disable uncore on virtualized CPU.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
Tested-by: Pekka Enberg <penberg@kernel.org>
Cc: a.p.zijlstra@chello.nl
Cc: eranian@google.com
Cc: andi@firstfloor.org
Cc: avi@redhat.com
Link: http://lkml.kernel.org/r/1345540117-14164-1-git-send-email-zheng.z.yan@intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/kernel/cpu/perf_event_intel_uncore.c

index 99d96a4978b56630115c2de5b465ca5eca0ffee0..5df8d32ba91e044e065ebb5aed2942438fb8211e 100644 (file)
@@ -2926,6 +2926,9 @@ static int __init intel_uncore_init(void)
        if (boot_cpu_data.x86_vendor != X86_VENDOR_INTEL)
                return -ENODEV;
 
+       if (cpu_has_hypervisor)
+               return -ENODEV;
+
        ret = uncore_pci_init();
        if (ret)
                goto fail;