aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKiwoong Kim <kwmad.kim@samsung.com>2022-03-31 10:24:05 +0900
committerMartin K. Petersen <martin.petersen@oracle.com>2022-04-26 08:29:54 -0400
commitef60031022eb6d972aac86ca26c98c33e1289436 (patch)
treedf8c8cb69c6bce99b8572a7b3fb7d32abcd72877
parentscsi: core: Refine how we set tag_set NUMA node (diff)
downloadlinux-dev-ef60031022eb6d972aac86ca26c98c33e1289436.tar.xz
linux-dev-ef60031022eb6d972aac86ca26c98c33e1289436.zip
scsi: ufs: core: Exclude UECxx from SFR dump list
Some devices may return invalid or zeroed data during an UIC error condition. In addition, reading these SFRs will clear them. This means the subsequent error handling will not be able to see them and therefore no error handling will be scheduled. Skip reading these SFRs in ufshcd_dump_regs(). Link: https://lore.kernel.org/r/1648689845-33521-1-git-send-email-kwmad.kim@samsung.com Fixes: d67247566450 ("scsi: ufs: Use explicit access size in ufshcd_dump_regs") Signed-off-by: Kiwoong Kim <kwmad.kim@samsung.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-rw-r--r--drivers/scsi/ufs/ufshcd.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 1b87f26b5193..f4a3326a4803 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -122,8 +122,13 @@ int ufshcd_dump_regs(struct ufs_hba *hba, size_t offset, size_t len,
if (!regs)
return -ENOMEM;
- for (pos = 0; pos < len; pos += 4)
+ for (pos = 0; pos < len; pos += 4) {
+ if (offset == 0 &&
+ pos >= REG_UIC_ERROR_CODE_PHY_ADAPTER_LAYER &&
+ pos <= REG_UIC_ERROR_CODE_DME)
+ continue;
regs[pos / 4] = ufshcd_readl(hba, offset + pos);
+ }
ufshcd_hex_dump(prefix, regs, len);
kfree(regs);