Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0cdb84ec authored by James Smart's avatar James Smart Committed by Martin K. Petersen
Browse files

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: default avatarDick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: default avatarJames Smart <james.smart@broadcom.com>
Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 59c68eaa
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -6420,8 +6420,11 @@ lpfc_setup_driver_resource_phase2(struct lpfc_hba *phba)
		return error;
	}

	/* workqueue for deferred irq use */
	/* 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,6 +6447,7 @@ lpfc_unset_driver_resource_phase2(struct lpfc_hba *phba)
	}

	/* Stop kernel 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 */