scsi: ufs: core: Fix interrupt handling for MCQ Mode
Commit
3c7ac40d7322 ("scsi: ufs: core: Delegate the interrupt service
routine to a threaded IRQ handler") introduced a regression where the UFS
interrupt status register (IS) was not cleared in ufshcd_intr() when
operating in MCQ mode. As a result, the IS register remained uncleared.
This led to a persistent issue during UIC interrupts:
ufshcd_is_auto_hibern8_error() consistently returned true because the
UFSHCD_UIC_HIBERN8_MASK bit was set, while the active command was neither
UIC_CMD_DME_HIBER_ENTER nor UIC_CMD_DME_HIBER_EXIT. This caused
continuous auto hibern8 enter errors and device failed to boot.
To fix this, ensure that the interrupt status register is properly
cleared in the ufshcd_intr() function for both MCQ mode with ESI enabled.
[ 4.553226] ufshcd-qcom
1d84000.ufs: ufshcd_check_errors: Auto
Hibern8 Enter failed - status: 0x00000040, upmcrs: 0x00000001
[ 4.553229] ufshcd-qcom
1d84000.ufs: ufshcd_check_errors: saved_err
0x40 saved_uic_err 0x0
[ 4.553311] host_regs:
00000000:
d5c7033f 20e0071f 00000400 00000000
[ 4.553312] host_regs:
00000010:
01000000 00010217 00000c96 00000000
[ 4.553314] host_regs:
00000020:
00000440 00170ef5 00000000 00000000
[ 4.553316] host_regs:
00000030:
0000010f 00000001 00000000 00000000
[ 4.553317] host_regs:
00000040:
00000000 00000000 00000000 00000000
[ 4.553319] host_regs:
00000050:
fffdf000 0000000f 00000000 00000000
[ 4.553320] host_regs:
00000060:
00000001 80000000 00000000 00000000
[ 4.553322] host_regs:
00000070:
fffde000 0000000f 00000000 00000000
[ 4.553323] host_regs:
00000080:
00000001 00000000 00000000 00000000
[ 4.553325] host_regs:
00000090:
00000002 d0020000 00000000 01930200
Fixes:
3c7ac40d7322 ("scsi: ufs: core: Delegate the interrupt service routine to a threaded IRQ handler")
Co-developed-by: Palash Kambar <quic_pkambar@quicinc.com>
Signed-off-by: Palash Kambar <quic_pkambar@quicinc.com>
Signed-off-by: Nitin Rawat <quic_nitirawa@quicinc.com>
Link: https://lore.kernel.org/r/20250728225711.29273-1-quic_nitirawa@quicinc.com
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8650-QRD
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Peter Wang <peter.wang@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>