diff mbox series

[v1,2/2] ufs: core: force reset after mcq abort all

Message ID 20240823100707.6699-3-peter.wang@mediatek.com (mailing list archive)
State Superseded
Headers show
Series ufs: core: fix err handler mcq abort defect | expand

Commit Message

Peter Wang (王信友) Aug. 23, 2024, 10:07 a.m. UTC
From: Peter Wang <peter.wang@mediatek.com>

In mcq mode gerneal case, cq (head/tail) poniter is same as
sq pointer (head/tail) if the hwq is empty.

But if command send to device and abort it,
no response return and cq point will less than sq.
In this case will have unpredictable error.
This patch force reset for this case.

Below is error log
[   34.976612][    C3] ufshcd-mtk 112b0000.ufshci: OCS error from controller = 3 for tag 19

Signed-off-by: Peter Wang <peter.wang@mediatek.com>
---
 drivers/ufs/core/ufshcd.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Bart Van Assche Aug. 23, 2024, 4:21 p.m. UTC | #1
On 8/23/24 3:07 AM, peter.wang@mediatek.com wrote:
> In mcq mode gerneal case, cq (head/tail) poniter is same as
> sq pointer (head/tail) if the hwq is empty.

poniter -> pointer

Thanks,

Bart.
Peter Wang (王信友) Aug. 26, 2024, 3:42 a.m. UTC | #2
On Fri, 2024-08-23 at 09:21 -0700, Bart Van Assche wrote:
>  	 
> External email : Please do not click links or open attachments until
> you have verified the sender or the content.
>  On 8/23/24 3:07 AM, peter.wang@mediatek.com wrote:
> > In mcq mode gerneal case, cq (head/tail) poniter is same as
> > sq pointer (head/tail) if the hwq is empty.
> 
> poniter -> pointer
> 
> Thanks,
> 
> Bart.

Hi Bart,

Will fix typo next version.

Thanks.
Peter
diff mbox series

Patch

diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
index 4bcd4e5b62bd..d9ef8f0279da 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -6519,6 +6519,8 @@  static bool ufshcd_abort_all(struct ufs_hba *hba)
 	/* Complete the requests that are cleared by s/w */
 	ufshcd_complete_requests(hba, false);
 
+	if (is_mcq_enabled(hba))
+		return true;
 	return ret != 0;
 }