Skip to content

Commit

Permalink
scsi: mpt3sas: Allow processing of events during driver unload.
Browse files Browse the repository at this point in the history
Events were not processed during driver unload, hence unloading of
driver doesn't complete when drives are disconnected while unloading of
driver.  So don't block events in ISR path, i,e., remove the flag
ioc->remove_host so that events are getting processed during driver
unload.  Thus allowing driver unload to complete by processing drive
removal events during driver unload.

Signed-off-by: Chaitra P B <chaitra.basappa@broadcom.com>
Signed-off-by: Suganath Prabu S <suganath-prabu.subramani@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
  • Loading branch information
Chaitra P B authored and Martin K. Petersen committed May 8, 2018
1 parent 1537d1b commit 79eb96d
Showing 1 changed file with 5 additions and 11 deletions.
16 changes: 5 additions & 11 deletions drivers/scsi/mpt3sas/mpt3sas_scsih.c
Original file line number Diff line number Diff line change
Expand Up @@ -3680,11 +3680,7 @@ _scsih_tm_tr_complete(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index,
u32 ioc_state;
struct _sc_list *delayed_sc;

if (ioc->remove_host) {
dewtprintk(ioc, pr_info(MPT3SAS_FMT
"%s: host has been removed\n", __func__, ioc->name));
return 1;
} else if (ioc->pci_error_recovery) {
if (ioc->pci_error_recovery) {
dewtprintk(ioc, pr_info(MPT3SAS_FMT
"%s: host in pci error recovery\n", __func__,
ioc->name));
Expand Down Expand Up @@ -3806,8 +3802,7 @@ _scsih_tm_tr_volume_send(struct MPT3SAS_ADAPTER *ioc, u16 handle)
u16 smid;
struct _tr_list *delayed_tr;

if (ioc->shost_recovery || ioc->remove_host ||
ioc->pci_error_recovery) {
if (ioc->pci_error_recovery) {
dewtprintk(ioc, pr_info(MPT3SAS_FMT
"%s: host reset in progress!\n",
__func__, ioc->name));
Expand Down Expand Up @@ -3860,8 +3855,7 @@ _scsih_tm_volume_tr_complete(struct MPT3SAS_ADAPTER *ioc, u16 smid,
Mpi2SCSITaskManagementReply_t *mpi_reply =
mpt3sas_base_get_reply_virt_addr(ioc, reply);

if (ioc->shost_recovery || ioc->remove_host ||
ioc->pci_error_recovery) {
if (ioc->shost_recovery || ioc->pci_error_recovery) {
dewtprintk(ioc, pr_info(MPT3SAS_FMT
"%s: host reset in progress!\n",
__func__, ioc->name));
Expand Down Expand Up @@ -9471,8 +9465,8 @@ mpt3sas_scsih_event_callback(struct MPT3SAS_ADAPTER *ioc, u8 msix_index,
u16 sz;
Mpi26EventDataActiveCableExcept_t *ActiveCableEventData;

/* events turned off due to host reset or driver unloading */
if (ioc->remove_host || ioc->pci_error_recovery)
/* events turned off due to host reset */
if (ioc->pci_error_recovery)
return 1;

mpi_reply = mpt3sas_base_get_reply_virt_addr(ioc, reply);
Expand Down

0 comments on commit 79eb96d

Please sign in to comment.