scsi: ufs: qcom: Hold the mutex lock when configuring ESI
authorZiqi Chen <quic_ziqichen@quicinc.com>
Tue, 11 Jul 2023 08:48:46 +0000 (16:48 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sun, 23 Jul 2023 19:24:49 +0000 (15:24 -0400)
Lock the MSI descriptor storage of a device when configuring ESI.
Otherwise we would see warnings during boot.

Signed-off-by: Ziqi Chen <quic_ziqichen@quicinc.com>
Link: https://lore.kernel.org/r/1689065327-45039-1-git-send-email-quic_ziqichen@quicinc.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ufs/host/ufs-qcom.c

index f36bcdbea938e34e969b669d8cbb86f089d4a563..d29e63e4a4f8f0ca484971322f6dea3eb5ae0240 100644 (file)
@@ -1680,6 +1680,7 @@ static int ufs_qcom_config_esi(struct ufs_hba *hba)
                goto out;
        }
 
+       msi_lock_descs(hba->dev);
        msi_for_each_desc(desc, hba->dev, MSI_DESC_ALL) {
                ret = devm_request_irq(hba->dev, desc->irq,
                                       ufs_qcom_mcq_esi_handler,
@@ -1691,14 +1692,17 @@ static int ufs_qcom_config_esi(struct ufs_hba *hba)
                        break;
                }
        }
+       msi_unlock_descs(hba->dev);
 
        if (ret) {
                /* Rewind */
+               msi_lock_descs(hba->dev);
                msi_for_each_desc(desc, hba->dev, MSI_DESC_ALL) {
                        if (desc == failed_desc)
                                break;
                        devm_free_irq(hba->dev, desc->irq, hba);
                }
+               msi_unlock_descs(hba->dev);
                platform_msi_domain_free_irqs(hba->dev);
        } else {
                if (host->hw_ver.major == 6 && host->hw_ver.minor == 0 &&