• Wanpeng Li's avatar
    x86/smp: Add irq_enter/exit() in smp_reschedule_interrupt() · 1ec6ec14
    Wanpeng Li authored
     ===============================
     [ INFO: suspicious RCU usage. ]
     4.8.0+ #24 Not tainted
     -------------------------------
     ./arch/x86/include/asm/msr-trace.h:47 suspicious rcu_dereference_check() usage!
     
     other info that might help us debug this:
     
     RCU used illegally from idle CPU!
     rcu_scheduler_active = 1, debug_locks = 0
     RCU used illegally from extended quiescent state!
     no locks held by swapper/1/0.
     
      [<ffffffff9d492b95>] do_trace_write_msr+0x135/0x140
      [<ffffffff9d06f860>] native_write_msr+0x20/0x30
      [<ffffffff9d065fad>] native_apic_msr_eoi_write+0x1d/0x30
      [<ffffffff9d05bd1d>] smp_reschedule_interrupt+0x1d/0x30
      [<ffffffff9d8daec6>] reschedule_interrupt+0x96/0xa0
    
    Reschedule interrupt may be called in cpu idle state. This causes lockdep 
    check warning above. 
    
    Add irq_enter/exit() in smp_reschedule_interrupt(), irq_enter() tells the RCU 
    subsystems to end the extended quiescent state, so the following trace call in 
    ack_APIC_irq() works correctly.
    Signed-off-by: default avatarWanpeng Li <wanpeng.li@hotmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Link: http://lkml.kernel.org/r/1476409733-5133-1-git-send-email-wanpeng.li@hotmail.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    1ec6ec14
smp.c 9.76 KB