• David S. Miller's avatar
    sparc64: Do irq_{enter,exit}() around generic_smp_call_function*(). · ab5c7809
    David S. Miller authored
    Otherwise rcu_irq_{enter,exit}() do not happen and we get dumps like:
    
    ====================
    [  188.275021] ===============================
    [  188.309351] [ INFO: suspicious RCU usage. ]
    [  188.343737] 3.18.0-rc3-00068-g20f3963d-dirty #54 Not tainted
    [  188.394786] -------------------------------
    [  188.429170] include/linux/rcupdate.h:883 rcu_read_lock() used
    illegally while idle!
    [  188.505235]
    other info that might help us debug this:
    
    [  188.554230]
    RCU used illegally from idle CPU!
    rcu_scheduler_active = 1, debug_locks = 0
    [  188.637587] RCU used illegally from extended quiescent state!
    [  188.690684] 3 locks held by swapper/7/0:
    [  188.721932]  #0:  (&x->wait#11){......}, at: [<0000000000495de8>] complete+0x8/0x60
    [  188.797994]  #1:  (&p->pi_lock){-.-.-.}, at: [<000000000048510c>] try_to_wake_up+0xc/0x400
    [  188.881343]  #2:  (rcu_read_lock){......}, at: [<000000000048a910>] select_task_rq_fair+0x90/0xb40
    [  188.973043]stack backtrace:
    [  188.993879] CPU: 7 PID: 0 Comm: swapper/7 Not tainted 3.18.0-rc3-00068-g20f3963d-dirty #54
    [  189.076187] Call Trace:
    [  189.089719]  [0000000000499360] lockdep_rcu_suspicious+0xe0/0x100
    [  189.147035]  [000000000048a99c] select_task_rq_fair+0x11c/0xb40
    [  189.202253]  [00000000004852d8] try_to_wake_up+0x1d8/0x400
    [  189.252258]  [000000000048554c] default_wake_function+0xc/0x20
    [  189.306435]  [0000000000495554] __wake_up_common+0x34/0x80
    [  189.356448]  [00000000004955b4] __wake_up_locked+0x14/0x40
    [  189.406456]  [0000000000495e08] complete+0x28/0x60
    [  189.448142]  [0000000000636e28] blk_end_sync_rq+0x8/0x20
    [  189.496057]  [0000000000639898] __blk_mq_end_request+0x18/0x60
    [  189.550249]  [00000000006ee014] scsi_end_request+0x94/0x180
    [  189.601286]  [00000000006ee334] scsi_io_completion+0x1d4/0x600
    [  189.655463]  [00000000006e51c4] scsi_finish_command+0xc4/0xe0
    [  189.708598]  [00000000006ed958] scsi_softirq_done+0x118/0x140
    [  189.761735]  [00000000006398ec] __blk_mq_complete_request_remote+0xc/0x20
    [  189.827383]  [00000000004c75d0] generic_smp_call_function_single_interrupt+0x150/0x1c0
    [  189.906581]  [000000000043e514] smp_call_function_single_client+0x14/0x40
    ====================
    
    Based almost entirely upon a patch by Paul E. McKenney.
    Reported-by: default avatarMeelis Roos <mroos@linux.ee>
    Tested-by: default avatarMeelis Roos <mroos@linux.ee>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ab5c7809
smp_64.c 35.7 KB