]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
scsi: ufs: core: Configure MCQ after link startup
authorBart Van Assche <bvanassche@acm.org>
Thu, 18 Dec 2025 23:07:37 +0000 (15:07 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sun, 4 Jan 2026 20:17:53 +0000 (15:17 -0500)
Commit f46b9a595fa9 ("scsi: ufs: core: Allocate the SCSI host earlier")
did not only cause scsi_add_host() to be called earlier. It also swapped
the order of link startup and enabling and configuring MCQ mode. Before
that commit, the call chains for link startup and enabling MCQ were as
follows:

ufshcd_init()
  ufshcd_link_startup()
  ufshcd_add_scsi_host()
    ufshcd_mcq_enable()

Apparently this change causes link startup to fail. Fix this by configuring
MCQ after link startup has completed.

Reported-by: Nitin Rawat <nitin.rawat@oss.qualcomm.com>
Fixes: f46b9a595fa9 ("scsi: ufs: core: Allocate the SCSI host earlier")
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Peter Wang <peter.wang@mediatek.com>
Link: https://patch.msgid.link/20251218230741.2661049-1-bvanassche@acm.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ufs/core/ufshcd.c

index 0babb7035200fabc640d13d1874c3eb16d36c5e1..604043a7533d373cb43d51861cdc63d586707b2f 100644 (file)
@@ -10736,9 +10736,7 @@ static int ufshcd_add_scsi_host(struct ufs_hba *hba)
        if (is_mcq_supported(hba)) {
                ufshcd_mcq_enable(hba);
                err = ufshcd_alloc_mcq(hba);
-               if (!err) {
-                       ufshcd_config_mcq(hba);
-               } else {
+               if (err) {
                        /* Continue with SDB mode */
                        ufshcd_mcq_disable(hba);
                        use_mcq_mode = false;
@@ -11011,6 +11009,9 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq)
        if (err)
                goto out_disable;
 
+       if (hba->mcq_enabled)
+               ufshcd_config_mcq(hba);
+
        if (hba->quirks & UFSHCD_QUIRK_SKIP_PH_CONFIGURATION)
                goto initialized;