aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2012-02-08 14:34:13 -0500
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2012-02-13 23:01:38 -0500
commit6fe5f5f3ffade25aa94526010f219df3be521bf7 (patch)
tree08b4148aad720793b37564c8ef8cdef0aea10241 /arch/powerpc
parent7a768d30caa30e66ba89659f1845cc35b1bfc715 (diff)
powerpc: Fix WARN_ON in decrementer_check_overflow
We use __get_cpu_var() which triggers a false positive warning in smp_processor_id() thinking interrupts are enabled (at this point, they are soft-enabled but hard-disabled). Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/kernel/irq.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
index 701d4aceb4f4..01e2877e8e04 100644
--- a/arch/powerpc/kernel/irq.c
+++ b/arch/powerpc/kernel/irq.c
@@ -118,10 +118,14 @@ static inline notrace void set_soft_enabled(unsigned long enable)
118static inline notrace void decrementer_check_overflow(void) 118static inline notrace void decrementer_check_overflow(void)
119{ 119{
120 u64 now = get_tb_or_rtc(); 120 u64 now = get_tb_or_rtc();
121 u64 *next_tb = &__get_cpu_var(decrementers_next_tb); 121 u64 *next_tb;
122
123 preempt_disable();
124 next_tb = &__get_cpu_var(decrementers_next_tb);
122 125
123 if (now >= *next_tb) 126 if (now >= *next_tb)
124 set_dec(1); 127 set_dec(1);
128 preempt_enable();
125} 129}
126 130
127notrace void arch_local_irq_restore(unsigned long en) 131notrace void arch_local_irq_restore(unsigned long en)