]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
scsi: ufs: core: Exclude UECxx from SFR dump list
authorKiwoong Kim <kwmad.kim@samsung.com>
Thu, 31 Mar 2022 01:24:05 +0000 (10:24 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 Jun 2022 08:21:03 +0000 (10:21 +0200)
[ Upstream commit ef60031022eb6d972aac86ca26c98c33e1289436 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/scsi/ufs/ufshcd.c

index bf302776340ce1b5a324410b81e34c36c5467e9e..ea6ceab1a1b257877c09946e64160c91298f72ea 100644 (file)
@@ -107,8 +107,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);