diff options
| author | Rusty Russell <rusty@rustcorp.com.au> | 2009-11-02 23:23:52 -0500 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-11-04 07:17:53 -0500 | 
| commit | ce7c42710e2dd133f10b7fc9ed9c73bdd2435f7a (patch) | |
| tree | cb3b278a642f95bc096514f1bb9da17041af9465 | |
| parent | a489ca355efaf9efa4990b0f8f30ab650a206273 (diff) | |
cpumask: Avoid cpumask_t in arch/x86/kernel/apic/nmi.c
Ingo wants the certainty of a static cpumask (rather than a
cpumask_var_t), but cpumask_t will some day be undefined to
avoid on-stack declarations.
This is what DECLARE_BITMAP/to_cpumask() is for.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
LKML-Reference: <200911031453.52394.rusty@rustcorp.com.au>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
| -rw-r--r-- | arch/x86/kernel/apic/nmi.c | 11 | 
1 files changed, 6 insertions, 5 deletions
diff --git a/arch/x86/kernel/apic/nmi.c b/arch/x86/kernel/apic/nmi.c index 7ff61d6a188a..6389432a9dbf 100644 --- a/arch/x86/kernel/apic/nmi.c +++ b/arch/x86/kernel/apic/nmi.c  | |||
| @@ -39,7 +39,8 @@ | |||
| 39 | int unknown_nmi_panic; | 39 | int unknown_nmi_panic; | 
| 40 | int nmi_watchdog_enabled; | 40 | int nmi_watchdog_enabled; | 
| 41 | 41 | ||
| 42 | static cpumask_t backtrace_mask __read_mostly; | 42 | /* For reliability, we're prepared to waste bits here. */ | 
| 43 | static DECLARE_BITMAP(backtrace_mask, NR_CPUS) __read_mostly; | ||
| 43 | 44 | ||
| 44 | /* nmi_active: | 45 | /* nmi_active: | 
| 45 | * >0: the lapic NMI watchdog is active, but can be disabled | 46 | * >0: the lapic NMI watchdog is active, but can be disabled | 
| @@ -414,7 +415,7 @@ nmi_watchdog_tick(struct pt_regs *regs, unsigned reason) | |||
| 414 | } | 415 | } | 
| 415 | 416 | ||
| 416 | /* We can be called before check_nmi_watchdog, hence NULL check. */ | 417 | /* We can be called before check_nmi_watchdog, hence NULL check. */ | 
| 417 | if (cpumask_test_cpu(cpu, &backtrace_mask)) { | 418 | if (cpumask_test_cpu(cpu, to_cpumask(backtrace_mask))) { | 
| 418 | static DEFINE_SPINLOCK(lock); /* Serialise the printks */ | 419 | static DEFINE_SPINLOCK(lock); /* Serialise the printks */ | 
| 419 | 420 | ||
| 420 | spin_lock(&lock); | 421 | spin_lock(&lock); | 
| @@ -422,7 +423,7 @@ nmi_watchdog_tick(struct pt_regs *regs, unsigned reason) | |||
| 422 | show_regs(regs); | 423 | show_regs(regs); | 
| 423 | dump_stack(); | 424 | dump_stack(); | 
| 424 | spin_unlock(&lock); | 425 | spin_unlock(&lock); | 
| 425 | cpumask_clear_cpu(cpu, &backtrace_mask); | 426 | cpumask_clear_cpu(cpu, to_cpumask(backtrace_mask)); | 
| 426 | 427 | ||
| 427 | rc = 1; | 428 | rc = 1; | 
| 428 | } | 429 | } | 
| @@ -558,14 +559,14 @@ void arch_trigger_all_cpu_backtrace(void) | |||
| 558 | { | 559 | { | 
| 559 | int i; | 560 | int i; | 
| 560 | 561 | ||
| 561 | cpumask_copy(&backtrace_mask, cpu_online_mask); | 562 | cpumask_copy(to_cpumask(backtrace_mask), cpu_online_mask); | 
| 562 | 563 | ||
| 563 | printk(KERN_INFO "sending NMI to all CPUs:\n"); | 564 | printk(KERN_INFO "sending NMI to all CPUs:\n"); | 
| 564 | apic->send_IPI_all(NMI_VECTOR); | 565 | apic->send_IPI_all(NMI_VECTOR); | 
| 565 | 566 | ||
| 566 | /* Wait for up to 10 seconds for all CPUs to do the backtrace */ | 567 | /* Wait for up to 10 seconds for all CPUs to do the backtrace */ | 
| 567 | for (i = 0; i < 10 * 1000; i++) { | 568 | for (i = 0; i < 10 * 1000; i++) { | 
| 568 | if (cpumask_empty(&backtrace_mask)) | 569 | if (cpumask_empty(to_cpumask(backtrace_mask))) | 
| 569 | break; | 570 | break; | 
| 570 | mdelay(1); | 571 | mdelay(1); | 
| 571 | } | 572 | } | 
