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>
This commit is contained in:
Benjamin Herrenschmidt 2012-02-08 19:34:13 +00:00
parent 7a768d30ca
commit 6fe5f5f3ff

View file

@ -118,10 +118,14 @@ static inline notrace void set_soft_enabled(unsigned long enable)
static inline notrace void decrementer_check_overflow(void) static inline notrace void decrementer_check_overflow(void)
{ {
u64 now = get_tb_or_rtc(); u64 now = get_tb_or_rtc();
u64 *next_tb = &__get_cpu_var(decrementers_next_tb); u64 *next_tb;
preempt_disable();
next_tb = &__get_cpu_var(decrementers_next_tb);
if (now >= *next_tb) if (now >= *next_tb)
set_dec(1); set_dec(1);
preempt_enable();
} }
notrace void arch_local_irq_restore(unsigned long en) notrace void arch_local_irq_restore(unsigned long en)