]> www.infradead.org Git - users/jedix/linux-maple.git/commit
scsi: lpfc: Fix soft lockup in lpfc worker thread during LIP testing
authorJames Smart <jsmart2021@gmail.com>
Tue, 30 Jan 2018 23:58:54 +0000 (15:58 -0800)
committerJack Vogel <jack.vogel@oracle.com>
Thu, 8 Mar 2018 04:28:53 +0000 (20:28 -0800)
commit71d7990846eeb3facf2506f5263f2734db3d8de5
tree56bb0553b58fe00e40abc0ac458af1462df134a3
parent8d6ca0a871b9230dbb87f231588c60d1197b19b4
scsi: lpfc: Fix soft lockup in lpfc worker thread during LIP testing

Orabug: 27631736

During link bounce testing in a point-to-point topology, the host may
enter a soft lockup on the lpfc_worker thread:

    Call Trace:
     lpfc_work_done+0x1f3/0x1390 [lpfc]
     lpfc_do_work+0x16f/0x180 [lpfc]
     kthread+0xc7/0xe0
     ret_from_fork+0x3f/0x70

The driver was simultaneously setting a combination of flags that caused
lpfc_do_work()to effectively spin between slow path work and new event
data, causing the lockup.

Ensure in the typical wq completions, that new event data flags are set
if the slow path flag is running. The slow path will eventually
reschedule the wq handling.

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <james.smart@broadcom.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit 161df4f09987ae2e9f0f97f0b38eee298b4a39ff)
Signed-off-by: Dick dkennedy <dick.kennedy@broadcom.com>
Signed-off-by: Dan Duval <dan.duval@oracle.com>
Reviewed-by: Jack Vogel <jack.vogel@oracle.com>
drivers/scsi/lpfc/lpfc_hbadisc.c