summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVenkat Gopalakrishnan2017-02-04 01:58:24 +0100
committerMartin K. Petersen2017-02-08 00:04:12 +0100
commit7942f7b568d7cda28c3aea9c81d48490769c853c (patch)
tree438bf79a2eb545223c3dbbf7fca60ef9c5ae9378
parentscsi: ufs-qcom: dump additional testbus registers (diff)
downloadkernel-qcow2-linux-7942f7b568d7cda28c3aea9c81d48490769c853c.tar.gz
kernel-qcow2-linux-7942f7b568d7cda28c3aea9c81d48490769c853c.tar.xz
kernel-qcow2-linux-7942f7b568d7cda28c3aea9c81d48490769c853c.zip
scsi: ufs: dump hw regs on link failures
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>
-rw-r--r--drivers/scsi/ufs/ufshcd.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index a99a673db71e..8b721f431dd0 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -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;
}