scsi: ufs: dump hw regs on link failures
authorVenkat Gopalakrishnan <venkatg@codeaurora.org>
Sat, 4 Feb 2017 00:58:24 +0000 (16:58 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 7 Feb 2017 23:04:12 +0000 (18:04 -0500)
Dump host state, power info and host/vendor specific registers
on link failures. This provides useful info to debug the failures.

Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ufs/ufshcd.c

index a99a673db71ebeeed0fad9e4db19ce677e01c710..8b721f431dd0df2cbeee9cac486667bd09def2a4 100644 (file)
@@ -3554,6 +3554,12 @@ static int ufshcd_uic_pwr_ctrl(struct ufs_hba *hba, struct uic_command *cmd)
                ret = (status != PWR_OK) ? status : -1;
        }
 out:
+       if (ret) {
+               ufshcd_print_host_state(hba);
+               ufshcd_print_pwr_info(hba);
+               ufshcd_print_host_regs(hba);
+       }
+
        spin_lock_irqsave(hba->host->host_lock, flags);
        hba->active_uic_cmd = NULL;
        hba->uic_async_done = NULL;
@@ -4146,8 +4152,12 @@ link_startup:
 
        ret = ufshcd_make_hba_operational(hba);
 out:
-       if (ret)
+       if (ret) {
                dev_err(hba->dev, "link startup failed %d\n", ret);
+               ufshcd_print_host_state(hba);
+               ufshcd_print_pwr_info(hba);
+               ufshcd_print_host_regs(hba);
+       }
        return ret;
 }