summaryrefslogtreecommitdiff
path: root/arch/x86
diff options
context:
space:
mode:
authorYan, Zheng <zheng.z.yan@intel.com>2012-08-21 17:08:37 +0800
committerIngo Molnar <mingo@kernel.org>2012-10-20 10:07:02 +0200
commita05123bdd1b9ba961ed262864924a5b3ee81afe8 (patch)
tree4005c7e92db9aea00358e69d3e1c5a3db24843e9 /arch/x86
parent31fd84b95eb211d5db460a1dda85e004800a7b52 (diff)
downloadlinux-3.10-a05123bdd1b9ba961ed262864924a5b3ee81afe8.tar.gz
linux-3.10-a05123bdd1b9ba961ed262864924a5b3ee81afe8.tar.bz2
linux-3.10-a05123bdd1b9ba961ed262864924a5b3ee81afe8.zip
perf/x86: Disable uncore on virtualized CPUs
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>
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/kernel/cpu/perf_event_intel_uncore.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.c b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
index 99d96a4978b..5df8d32ba91 100644
--- a/arch/x86/kernel/cpu/perf_event_intel_uncore.c
+++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
@@ -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;