• Borislav Petkov's avatar
    x86/delay: Avoid preemptible context checks in delay_mwaitx() · 84477336
    Borislav Petkov authored
    We do use this_cpu_ptr(&cpu_tss) as a cacheline-aligned, seldomly
    accessed per-cpu var as the MONITORX target in delay_mwaitx(). However,
    when called in preemptible context, this_cpu_ptr -> smp_processor_id() ->
    debug_smp_processor_id() fires:
    
      BUG: using smp_processor_id() in preemptible [00000000] code: udevd/312
      caller is delay_mwaitx+0x40/0xa0
    
    But we don't care about that check - we only need cpu_tss as a MONITORX
    target and it doesn't really matter which CPU's var we're touching as
    we're going idle anyway. Fix that.
    Suggested-by: default avatarAndy Lutomirski <luto@kernel.org>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Huang Rui <ray.huang@amd.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: spg_linux_kernel@amd.com
    Link: http://lkml.kernel.org/r/20160309205622.GG6564@pd.tnicSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    84477336
delay.c 3.74 KB