diff options
author | Ingo Molnar <mingo@kernel.org> | 2013-04-08 11:41:50 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2013-04-08 11:41:50 -0400 |
commit | b6d5278dc8385eaf2e3904a4af444a04f6ae4e71 (patch) | |
tree | 14e6031e0efa8e8b684db3b7ff85f8ac63ed0824 /arch/x86/kernel/cpu | |
parent | bafcdd3b6cb86035cdb0511450961edcdc084c27 (diff) | |
parent | 7a0c819d28f5c91955854e048766d6afef7c8a3d (diff) |
Merge tag 'please-pull-cmci_rediscover' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras into x86/ras
Pull clean up of the cmci_rediscover code to fix problems found by Dave Jones,
from Tony Luck.
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/x86/kernel/cpu')
-rw-r--r-- | arch/x86/kernel/cpu/mcheck/mce.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/cpu/mcheck/mce_intel.c | 25 | ||||
-rw-r--r-- | arch/x86/kernel/cpu/perf_event_intel.c | 4 |
3 files changed, 10 insertions, 21 deletions
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index 7bc126346ace..9239504b41cb 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c | |||
@@ -2358,7 +2358,7 @@ mce_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) | |||
2358 | 2358 | ||
2359 | if (action == CPU_POST_DEAD) { | 2359 | if (action == CPU_POST_DEAD) { |
2360 | /* intentionally ignoring frozen here */ | 2360 | /* intentionally ignoring frozen here */ |
2361 | cmci_rediscover(cpu); | 2361 | cmci_rediscover(); |
2362 | } | 2362 | } |
2363 | 2363 | ||
2364 | return NOTIFY_OK; | 2364 | return NOTIFY_OK; |
diff --git a/arch/x86/kernel/cpu/mcheck/mce_intel.c b/arch/x86/kernel/cpu/mcheck/mce_intel.c index 402c454fbff0..ae1697c2afe3 100644 --- a/arch/x86/kernel/cpu/mcheck/mce_intel.c +++ b/arch/x86/kernel/cpu/mcheck/mce_intel.c | |||
@@ -285,39 +285,24 @@ void cmci_clear(void) | |||
285 | raw_spin_unlock_irqrestore(&cmci_discover_lock, flags); | 285 | raw_spin_unlock_irqrestore(&cmci_discover_lock, flags); |
286 | } | 286 | } |
287 | 287 | ||
288 | static long cmci_rediscover_work_func(void *arg) | 288 | static void cmci_rediscover_work_func(void *arg) |
289 | { | 289 | { |
290 | int banks; | 290 | int banks; |
291 | 291 | ||
292 | /* Recheck banks in case CPUs don't all have the same */ | 292 | /* Recheck banks in case CPUs don't all have the same */ |
293 | if (cmci_supported(&banks)) | 293 | if (cmci_supported(&banks)) |
294 | cmci_discover(banks); | 294 | cmci_discover(banks); |
295 | |||
296 | return 0; | ||
297 | } | 295 | } |
298 | 296 | ||
299 | /* | 297 | /* After a CPU went down cycle through all the others and rediscover */ |
300 | * After a CPU went down cycle through all the others and rediscover | 298 | void cmci_rediscover(void) |
301 | * Must run in process context. | ||
302 | */ | ||
303 | void cmci_rediscover(int dying) | ||
304 | { | 299 | { |
305 | int cpu, banks; | 300 | int banks; |
306 | 301 | ||
307 | if (!cmci_supported(&banks)) | 302 | if (!cmci_supported(&banks)) |
308 | return; | 303 | return; |
309 | 304 | ||
310 | for_each_online_cpu(cpu) { | 305 | on_each_cpu(cmci_rediscover_work_func, NULL, 1); |
311 | if (cpu == dying) | ||
312 | continue; | ||
313 | |||
314 | if (cpu == smp_processor_id()) { | ||
315 | cmci_rediscover_work_func(NULL); | ||
316 | continue; | ||
317 | } | ||
318 | |||
319 | work_on_cpu(cpu, cmci_rediscover_work_func, NULL); | ||
320 | } | ||
321 | } | 306 | } |
322 | 307 | ||
323 | /* | 308 | /* |
diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c index 529c8931fc02..dab7580c47ae 100644 --- a/arch/x86/kernel/cpu/perf_event_intel.c +++ b/arch/x86/kernel/cpu/perf_event_intel.c | |||
@@ -101,6 +101,10 @@ static struct event_constraint intel_snb_event_constraints[] __read_mostly = | |||
101 | FIXED_EVENT_CONSTRAINT(0x00c0, 0), /* INST_RETIRED.ANY */ | 101 | FIXED_EVENT_CONSTRAINT(0x00c0, 0), /* INST_RETIRED.ANY */ |
102 | FIXED_EVENT_CONSTRAINT(0x003c, 1), /* CPU_CLK_UNHALTED.CORE */ | 102 | FIXED_EVENT_CONSTRAINT(0x003c, 1), /* CPU_CLK_UNHALTED.CORE */ |
103 | FIXED_EVENT_CONSTRAINT(0x0300, 2), /* CPU_CLK_UNHALTED.REF */ | 103 | FIXED_EVENT_CONSTRAINT(0x0300, 2), /* CPU_CLK_UNHALTED.REF */ |
104 | INTEL_UEVENT_CONSTRAINT(0x04a3, 0xf), /* CYCLE_ACTIVITY.CYCLES_NO_DISPATCH */ | ||
105 | INTEL_UEVENT_CONSTRAINT(0x05a3, 0xf), /* CYCLE_ACTIVITY.STALLS_L2_PENDING */ | ||
106 | INTEL_UEVENT_CONSTRAINT(0x02a3, 0x4), /* CYCLE_ACTIVITY.CYCLES_L1D_PENDING */ | ||
107 | INTEL_UEVENT_CONSTRAINT(0x06a3, 0x4), /* CYCLE_ACTIVITY.STALLS_L1D_PENDING */ | ||
104 | INTEL_EVENT_CONSTRAINT(0x48, 0x4), /* L1D_PEND_MISS.PENDING */ | 108 | INTEL_EVENT_CONSTRAINT(0x48, 0x4), /* L1D_PEND_MISS.PENDING */ |
105 | INTEL_UEVENT_CONSTRAINT(0x01c0, 0x2), /* INST_RETIRED.PREC_DIST */ | 109 | INTEL_UEVENT_CONSTRAINT(0x01c0, 0x2), /* INST_RETIRED.PREC_DIST */ |
106 | INTEL_EVENT_CONSTRAINT(0xcd, 0x8), /* MEM_TRANS_RETIRED.LOAD_LATENCY */ | 110 | INTEL_EVENT_CONSTRAINT(0xcd, 0x8), /* MEM_TRANS_RETIRED.LOAD_LATENCY */ |