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:
parent
7a768d30ca
commit
6fe5f5f3ff
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue