• Jitendra Bhivare's avatar
    scsi: be2iscsi: Replace _bh with _irqsave/irqrestore · 7d2c0d64
    Jitendra Bhivare authored
    [ 3843.132217] WARNING: CPU: 20 PID: 1227 at kernel/softirq.c:150 __local_bh_enable_ip+0x6b/0x90
    [ 3843.142815] Modules linked in:
    ...
    [ 3843.294328] CPU: 20 PID: 1227 Comm: kworker/20:1H Tainted: G            E   4.8.0-rc1+ #3
    [ 3843.304944] Hardware name: Dell Inc. PowerEdge R720/0X6H47, BIOS 1.4.8 10/25/2012
    [ 3843.314798] Workqueue: kblockd blk_timeout_work
    [ 3843.321350]  0000000000000086 00000000a32f4533 ffff8802216d7bd8 ffffffff8135c3cf
    [ 3843.331146]  0000000000000000 0000000000000000 ffff8802216d7c18 ffffffff8108d661
    [ 3843.340918]  00000096216d7c50 0000000000000200 ffff8802d07cc828 ffff8801b3632550
    [ 3843.350687] Call Trace:
    [ 3843.354866]  [<ffffffff8135c3cf>] dump_stack+0x63/0x84
    [ 3843.362061]  [<ffffffff8108d661>] __warn+0xd1/0xf0
    [ 3843.368851]  [<ffffffff8108d79d>] warn_slowpath_null+0x1d/0x20
    [ 3843.376791]  [<ffffffff810930eb>] __local_bh_enable_ip+0x6b/0x90
    [ 3843.384903]  [<ffffffff816fe7be>] _raw_spin_unlock_bh+0x1e/0x20
    [ 3843.392940]  [<ffffffffa085f710>] beiscsi_alloc_pdu+0x2f0/0x6e0 [be2iscsi]
    [ 3843.402076]  [<ffffffffa06bc358>] __iscsi_conn_send_pdu+0xf8/0x370 [libiscsi]
    [ 3843.411549]  [<ffffffffa06bc6fe>] iscsi_send_nopout+0xbe/0x110 [libiscsi]
    [ 3843.420639]  [<ffffffffa06bd98b>] iscsi_eh_cmd_timed_out+0x29b/0x2b0 [libiscsi]
    [ 3843.430339]  [<ffffffff814cd1de>] scsi_times_out+0x5e/0x250
    [ 3843.438119]  [<ffffffff813374af>] blk_rq_timed_out+0x1f/0x60
    [ 3843.446009]  [<ffffffff8133759d>] blk_timeout_work+0xad/0x150
    [ 3843.454010]  [<ffffffff810a6642>] process_one_work+0x152/0x400
    [ 3843.462114]  [<ffffffff810a6f35>] worker_thread+0x125/0x4b0
    [ 3843.469961]  [<ffffffff810a6e10>] ? rescuer_thread+0x380/0x380
    [ 3843.478116]  [<ffffffff810aca28>] kthread+0xd8/0xf0
    [ 3843.485212]  [<ffffffff816fedff>] ret_from_fork+0x1f/0x40
    [ 3843.492908]  [<ffffffff810ac950>] ? kthread_park+0x60/0x60
    [ 3843.500715] ---[ end trace 57ec0a1d8f0dd3a0 ]---
    [ 3852.328667] NMI watchdog: Watchdog detected hard LOCKUP on cpu 1Kernel panic - not syncing: Hard LOCKUP
    
    blk_timeout_work takes queue_lock spin_lock with interrupts disabled
    before invoking iscsi_eh_cmd_timed_out. This causes a WARN_ON_ONCE in
    spin_unlock_bh for wrb_lock/io_sgl_lock/mgmt_sgl_lock.
    
    CPU was kept busy in lot of bottom half work with interrupts disabled
    thus causing hard lock up.
    Signed-off-by: default avatarJitendra Bhivare <jitendra.bhivare@broadcom.com>
    Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
    Reviewed-by: default avatarChris Leech <cleech@redhat.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    7d2c0d64
be_main.c 167 KB