scsi: ufs: Dump PA_VS_STATUS_REG1 in eh

Dump PA_VS_STATUS_REG1 when full reset is needed in eh, which is helpful
for error debugging.

Change-Id: Iad3c2fc09c88598428762b5da09e13b46493fc7d
Signed-off-by: Can Guo <cang@codeaurora.org>
This commit is contained in:
Can Guo 2020-06-13 09:51:18 +08:00
commit 20235bca1c
2 changed files with 15 additions and 5 deletions

View file

@ -164,6 +164,7 @@ enum ufs_qcom_phy_init_type {
UFS_QCOM_DBG_PRINT_TEST_BUS_EN)
/* QUniPro Vendor specific attributes */
#define PA_VS_STATUS_REG1 0x9001
#define PA_VS_CONFIG_REG1 0x9000
#define SAVECONFIGTIME_MODE_MASK 0x6000
#define DME_VS_CORE_CLK_CTRL 0xD002

View file

@ -51,6 +51,7 @@
#include "ufs-sysfs.h"
#include "ufs_bsg.h"
#include "ufshcd-crypto.h"
#include "ufs-qcom.h"
#define CREATE_TRACE_POINTS
#include <trace/events/ufs.h>
@ -5737,17 +5738,25 @@ static void ufshcd_err_handler(struct work_struct *work)
goto skip_err_handling;
}
spin_unlock_irqrestore(hba->host->host_lock, flags);
ufshcd_vops_dbg_register_dump(hba);
spin_lock_irqsave(hba->host->host_lock, flags);
if ((hba->saved_err & INT_FATAL_ERRORS) ||
(hba->saved_err & UFSHCD_UIC_HIBERN8_MASK) ||
((hba->saved_err & UIC_ERROR) &&
(hba->saved_uic_err & (UFSHCD_UIC_DL_PA_INIT_ERROR |
UFSHCD_UIC_DL_NAC_RECEIVED_ERROR |
UFSHCD_UIC_DL_TCx_REPLAY_ERROR))))
UFSHCD_UIC_DL_TCx_REPLAY_ERROR)))) {
u32 pa_vs_status_reg1 = 0;
int ret;
spin_unlock_irqrestore(hba->host->host_lock, flags);
ret = ufshcd_dme_get(hba, UIC_ARG_MIB(PA_VS_STATUS_REG1),
&pa_vs_status_reg1);
dev_err(hba->dev, "%s: pa_vs_status_reg1 0x%x, ret %d\n",
__func__, pa_vs_status_reg1, ret);
ufshcd_vops_dbg_register_dump(hba);
spin_lock_irqsave(hba->host->host_lock, flags);
needs_reset = true;
}
/*
* if host reset is required then skip clearing the pending