linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] ufs: add quirk to fix abnormal ocs fatal error
       [not found] <CGME20200218224503epcas2p46cec6f56d7564ea7dca4ab600476d938@epcas2p4.samsung.com>
@ 2020-02-18 22:43 ` Kiwoong Kim
  2020-02-18 23:32   ` Christoph Hellwig
  0 siblings, 1 reply; 3+ messages in thread
From: Kiwoong Kim @ 2020-02-18 22:43 UTC (permalink / raw)
  To: linux-scsi, jejb, martin.petersen; +Cc: Kiwoong Kim

Some architectures determines if fatal error for OCS
occurrs to check status in response upiu. This patch
is to prevent from reporting command results with that.

Signed-off-by: Kiwoong Kim <kwmad.kim@samsung.com>
---
 drivers/scsi/ufs/ufshcd.c | 6 ++++++
 drivers/scsi/ufs/ufshcd.h | 6 ++++++
 2 files changed, 12 insertions(+)

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index f4aa10fdbb0c..39305076051e 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -4731,6 +4731,12 @@ ufshcd_transfer_rsp_status(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
 	/* overall command status of utrd */
 	ocs = ufshcd_get_tr_ocs(lrbp);
 
+	if (hba->quirks & UFSHCD_QUIRK_BROKEN_OCS_FATAL_ERROR) {
+		if (be32_to_cpu(lrbp->ucd_rsp_ptr->header.dword_1) &
+					MASK_RSP_UPIU_RESULT)
+			ocs = OCS_SUCCESS;
+	}
+
 	switch (ocs) {
 	case OCS_SUCCESS:
 		result = ufshcd_get_req_rsp(lrbp->ucd_rsp_ptr);
diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h
index 8f516b205c32..4757e1eadee0 100644
--- a/drivers/scsi/ufs/ufshcd.h
+++ b/drivers/scsi/ufs/ufshcd.h
@@ -635,6 +635,12 @@ struct ufs_hba {
 	 * enabled via HCE register.
 	 */
 	#define UFSHCI_QUIRK_BROKEN_HCE				0x400
+
+	/*
+	 * This quirk needs to be enabled if the host controller reports
+	 * OCS FATAL ERROR with device error through sense data
+	 */
+	#define UFSHCD_QUIRK_BROKEN_OCS_FATAL_ERROR		0x800
 	unsigned int quirks;	/* Deviations from standard UFSHCI spec. */
 
 	/* Device deviations from standard UFS device spec. */
-- 
2.14.2


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] ufs: add quirk to fix abnormal ocs fatal error
  2020-02-18 22:43 ` [PATCH] ufs: add quirk to fix abnormal ocs fatal error Kiwoong Kim
@ 2020-02-18 23:32   ` Christoph Hellwig
  2020-02-18 23:54     ` Kiwoong Kim
  0 siblings, 1 reply; 3+ messages in thread
From: Christoph Hellwig @ 2020-02-18 23:32 UTC (permalink / raw)
  To: Kiwoong Kim; +Cc: linux-scsi, jejb, martin.petersen

On Wed, Feb 19, 2020 at 07:43:07AM +0900, Kiwoong Kim wrote:
> Some architectures determines if fatal error for OCS
> occurrs to check status in response upiu. This patch
> is to prevent from reporting command results with that.

This seems to be missing the hunk to actually set the quirk bit..

^ permalink raw reply	[flat|nested] 3+ messages in thread

* RE: [PATCH] ufs: add quirk to fix abnormal ocs fatal error
  2020-02-18 23:32   ` Christoph Hellwig
@ 2020-02-18 23:54     ` Kiwoong Kim
  0 siblings, 0 replies; 3+ messages in thread
From: Kiwoong Kim @ 2020-02-18 23:54 UTC (permalink / raw)
  To: 'Christoph Hellwig'; +Cc: linux-scsi, jejb, martin.petersen

> On Wed, Feb 19, 2020 at 07:43:07AM +0900, Kiwoong Kim wrote:
> > Some architectures determines if fatal error for OCS occurrs to check
> > status in response upiu. This patch is to prevent from reporting
> > command results with that.
> 
> This seems to be missing the hunk to actually set the quirk bit..

Exynos specific driver sets and is using it but the driver is not updated
yet. I'll do upstream it in the future.


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-02-18 23:54 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <CGME20200218224503epcas2p46cec6f56d7564ea7dca4ab600476d938@epcas2p4.samsung.com>
2020-02-18 22:43 ` [PATCH] ufs: add quirk to fix abnormal ocs fatal error Kiwoong Kim
2020-02-18 23:32   ` Christoph Hellwig
2020-02-18 23:54     ` Kiwoong Kim

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).