mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-21 08:37:37 +07:00
scsi: lpfc: Fix lingering lpfc_wq resource after driver unload
After driver unloads, lpfc_wq remains active. The destroy_workqueue calls were not being made in driver unload. Additionally, SLI3 is allocating lpfc_wq resources, but never uses it. Make the destroy_workqueue calls on driver unload. Modify the SLI3 code path no longer allocate lpfc_wq resources. 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>
This commit is contained in:
parent
59c68eaad7
commit
0cdb84ec26
@ -6420,8 +6420,11 @@ lpfc_setup_driver_resource_phase2(struct lpfc_hba *phba)
|
||||
return error;
|
||||
}
|
||||
|
||||
/* workqueue for deferred irq use */
|
||||
phba->wq = alloc_workqueue("lpfc_wq", WQ_MEM_RECLAIM, 0);
|
||||
/* The lpfc_wq workqueue for deferred irq use, is only used for SLI4 */
|
||||
if (phba->sli_rev == LPFC_SLI_REV4)
|
||||
phba->wq = alloc_workqueue("lpfc_wq", WQ_MEM_RECLAIM, 0);
|
||||
else
|
||||
phba->wq = NULL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -6444,7 +6447,8 @@ lpfc_unset_driver_resource_phase2(struct lpfc_hba *phba)
|
||||
}
|
||||
|
||||
/* Stop kernel worker thread */
|
||||
kthread_stop(phba->worker_thread);
|
||||
if (phba->worker_thread)
|
||||
kthread_stop(phba->worker_thread);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -11727,6 +11731,7 @@ lpfc_pci_remove_one_s4(struct pci_dev *pdev)
|
||||
lpfc_nvme_free(phba);
|
||||
lpfc_free_iocb_list(phba);
|
||||
|
||||
lpfc_unset_driver_resource_phase2(phba);
|
||||
lpfc_sli4_driver_resource_unset(phba);
|
||||
|
||||
/* Unmap adapter Control and Doorbell registers */
|
||||
|
Loading…
Reference in New Issue
Block a user