diff options
author | Justin Tee <justin.tee@broadcom.com> | 2023-03-01 15:16:23 -0800 |
---|---|---|
committer | Martin K. Petersen <martin.petersen@oracle.com> | 2023-03-09 21:21:45 -0500 |
commit | 27c2bcf00ade1aefedd6298fcc151704c2d8ce6d (patch) | |
tree | 9c83bcc431e7bcd32e8992355a587fbf8cae157b /drivers/scsi/lpfc/lpfc_ct.c | |
parent | db651ec22524eb8f9c854fbb4d9acd5d7e5be9e4 (diff) | |
download | linux-next-27c2bcf00ade1aefedd6298fcc151704c2d8ce6d.tar.gz |
scsi: lpfc: Skip waiting for register ready bits when in unrecoverable state
During tolerance tests that force an HBA to become unresponsive, rmmod
hangs resulting in the inability to remove the driver.
The lpfc_pci_remove_one_s4() routine attempts to submit a clean up mailbox
command via the lpfc_sli4_post_sync_mbox() routine, but ends up waiting
forever for a mailbox register to set its ready bit. Because the HBA is in
an unrecoverable and unresponsive state, the ready bit will never be set.
Create a new routine called lpfc_sli4_unrecoverable_port(), which checks a
port status register's error notification bits.
Use the lpfc_sli4_unrecoverable_port() routine in ready bit check routines
to early return error if port is deemed unrecoverable.
Also, when the lpfc_handle_eratt_s4() handler detects an unrecoverable
state, call the lpfc_sli4_offline_eratt() routine to kick off flushing
outstanding I/O.
Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Link: https://lore.kernel.org/r/20230301231626.9621-8-justintee8345@gmail.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_ct.c')
0 files changed, 0 insertions, 0 deletions