diff options
| author | Peter Zijlstra <a.p.zijlstra@chello.nl> | 2011-11-15 04:51:15 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2011-12-05 03:32:38 -0500 |
| commit | 6a600a8b8749566a7d81ad75dcb8bf5342b5a39a (patch) | |
| tree | 87a29c4aae1e1451436bbc7320310ed145e442be | |
| parent | 4a1dba72384193753e44e15d9d05a50be6587271 (diff) | |
perf, x86: Disable PEBS on SandyBridge chips
Cc: Stephane Eranian <eranian@google.com>
Cc: stable@kernel.org
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
| -rw-r--r-- | arch/x86/kernel/cpu/perf_event_intel.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c index 2be5ebe99872..8d601b18bf9f 100644 --- a/arch/x86/kernel/cpu/perf_event_intel.c +++ b/arch/x86/kernel/cpu/perf_event_intel.c | |||
| @@ -1545,6 +1545,13 @@ static void intel_clovertown_quirks(void) | |||
| 1545 | x86_pmu.pebs_constraints = NULL; | 1545 | x86_pmu.pebs_constraints = NULL; |
| 1546 | } | 1546 | } |
| 1547 | 1547 | ||
| 1548 | static void intel_sandybridge_quirks(void) | ||
| 1549 | { | ||
| 1550 | printk(KERN_WARNING "PEBS disabled due to CPU errata.\n"); | ||
| 1551 | x86_pmu.pebs = 0; | ||
| 1552 | x86_pmu.pebs_constraints = NULL; | ||
| 1553 | } | ||
| 1554 | |||
| 1548 | __init int intel_pmu_init(void) | 1555 | __init int intel_pmu_init(void) |
| 1549 | { | 1556 | { |
| 1550 | union cpuid10_edx edx; | 1557 | union cpuid10_edx edx; |
| @@ -1694,6 +1701,7 @@ __init int intel_pmu_init(void) | |||
| 1694 | break; | 1701 | break; |
| 1695 | 1702 | ||
| 1696 | case 42: /* SandyBridge */ | 1703 | case 42: /* SandyBridge */ |
| 1704 | x86_pmu.quirks = intel_sandybridge_quirks; | ||
| 1697 | case 45: /* SandyBridge, "Romely-EP" */ | 1705 | case 45: /* SandyBridge, "Romely-EP" */ |
| 1698 | memcpy(hw_cache_event_ids, snb_hw_cache_event_ids, | 1706 | memcpy(hw_cache_event_ids, snb_hw_cache_event_ids, |
| 1699 | sizeof(hw_cache_event_ids)); | 1707 | sizeof(hw_cache_event_ids)); |
