[PATCH AUTOSEL 6.17-6.6] scsi: ufs: core: Disable timestamp functionality if not supported

Sasha Levin sashal at kernel.org
Sat Oct 25 08:58:34 PDT 2025


From: Bart Van Assche <bvanassche at acm.org>

[ Upstream commit fb1f4568346153d2f80fdb4ffcfa0cf4fb257d3c ]

Some Kioxia UFS 4 devices do not support the qTimestamp attribute.  Set
the UFS_DEVICE_QUIRK_NO_TIMESTAMP_SUPPORT for these devices such that no
error messages appear in the kernel log about failures to set the
qTimestamp attribute.

Signed-off-by: Bart Van Assche <bvanassche at acm.org>
Reviewed-by: Avri Altman <avri.altman at sandisk.com>
Tested-by: Nitin Rawat <quic_nitirawa at quicinc.com> # on SM8650-QRD
Reviewed-by: Nitin Rawat <quic_nitirawa at quicinc.com>
Reviewed-by: Peter Wang <peter.wang at mediatek.com>
Reviewed-by: Manivannan Sadhasivam <mani at kernel.org>
Message-ID: <20250909190614.3531435-1-bvanassche at acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen at oracle.com>
Signed-off-by: Sasha Levin <sashal at kernel.org>
---

LLM Generated explanations, may be completely bogus:

YES. The change adds a targeted quirk for the Kioxia `THGJFJT1E45BATP`
device (`drivers/ufs/core/ufshcd.c:316`) that prevents the core driver
from issuing the qTimestamp write when the device advertises that the
attribute is unsupported (`drivers/ufs/core/ufshcd.c:8799`). Without it,
every link bring-up or reset hits `ufshcd_set_timestamp_attr()` and
emits a `dev_err` because the write reliably fails, so users see
recurring kernel log noise on affected hardware. Introducing
`UFS_DEVICE_QUIRK_NO_TIMESTAMP_SUPPORT` (`include/ufs/ufs_quirks.h:117`)
is mechanically simple, does not alter behaviour for other devices, and
cleanly gates the existing code path via the existing quirk plumbing,
making the risk of regression very low. Because it fixes a user-visible
malfunction (persistent error messages) on shipping UFS 4 hardware and
is tightly scoped with no architectural fallout, it fits stable backport
criteria well. A natural follow-up is to validate on the affected
hardware that the spurious log entries disappear after backporting.

 drivers/ufs/core/ufshcd.c | 6 +++++-
 include/ufs/ufs_quirks.h  | 3 +++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
index 78d3f0ee16d84..1907c0f6eda0e 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -316,6 +316,9 @@ static const struct ufs_dev_quirk ufs_fixups[] = {
 	{ .wmanufacturerid = UFS_VENDOR_TOSHIBA,
 	  .model = "THGLF2G9D8KBADG",
 	  .quirk = UFS_DEVICE_QUIRK_PA_TACTIVATE },
+	{ .wmanufacturerid = UFS_VENDOR_TOSHIBA,
+	  .model = "THGJFJT1E45BATP",
+	  .quirk = UFS_DEVICE_QUIRK_NO_TIMESTAMP_SUPPORT },
 	{}
 };
 
@@ -8794,7 +8797,8 @@ static void ufshcd_set_timestamp_attr(struct ufs_hba *hba)
 	struct ufs_dev_info *dev_info = &hba->dev_info;
 	struct utp_upiu_query_v4_0 *upiu_data;
 
-	if (dev_info->wspecversion < 0x400)
+	if (dev_info->wspecversion < 0x400 ||
+	    hba->dev_quirks & UFS_DEVICE_QUIRK_NO_TIMESTAMP_SUPPORT)
 		return;
 
 	ufshcd_dev_man_lock(hba);
diff --git a/include/ufs/ufs_quirks.h b/include/ufs/ufs_quirks.h
index f52de5ed1b3b6..83563247c36cb 100644
--- a/include/ufs/ufs_quirks.h
+++ b/include/ufs/ufs_quirks.h
@@ -113,4 +113,7 @@ struct ufs_dev_quirk {
  */
 #define UFS_DEVICE_QUIRK_PA_HIBER8TIME          (1 << 12)
 
+/* Some UFS 4 devices do not support the qTimestamp attribute */
+#define UFS_DEVICE_QUIRK_NO_TIMESTAMP_SUPPORT	(1 << 13)
+
 #endif /* UFS_QUIRKS_H_ */
-- 
2.51.0




More information about the linux-arm-kernel mailing list