linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] scsi: ufs: retry START_STOP on UNIT_ATTENTION
@ 2021-09-30 19:52 Jaegeuk Kim
  2021-09-30 19:52 ` [PATCH 2/2] scsi: ufs: Stop clearing unit attentions Jaegeuk Kim
  2021-09-30 19:55 ` [PATCH 1/2] scsi: ufs: retry START_STOP on UNIT_ATTENTION Bart Van Assche
  0 siblings, 2 replies; 11+ messages in thread
From: Jaegeuk Kim @ 2021-09-30 19:52 UTC (permalink / raw)
  To: linux-kernel, linux-scsi, martin.petersen, bvanassche; +Cc: Jaegeuk Kim

Commit 57d104c153d3 ("ufs: add UFS power management support") made the UFS
driver submit a REQUEST SENSE command before submitting a power management
command to a WLUN to clear the POWER ON unit attention. Instead of
submitting a REQUEST SENSE command before submitting a power management
command, retry the power management command until it succeeds.

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
 drivers/scsi/ufs/ufshcd.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 3841ab49f556..1f21d371e231 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -8630,7 +8630,7 @@ static int ufshcd_set_dev_pwr_mode(struct ufs_hba *hba,
 	struct scsi_sense_hdr sshdr;
 	struct scsi_device *sdp;
 	unsigned long flags;
-	int ret;
+	int ret, retries;
 
 	spin_lock_irqsave(hba->host->host_lock, flags);
 	sdp = hba->sdev_ufs_device;
@@ -8665,8 +8665,14 @@ static int ufshcd_set_dev_pwr_mode(struct ufs_hba *hba,
 	 * callbacks hence set the RQF_PM flag so that it doesn't resume the
 	 * already suspended childs.
 	 */
-	ret = scsi_execute(sdp, cmd, DMA_NONE, NULL, 0, NULL, &sshdr,
-			START_STOP_TIMEOUT, 0, 0, RQF_PM, NULL);
+	for (retries = 3; retries > 0; --retries) {
+		ret = scsi_execute(sdp, cmd, DMA_NONE, NULL, 0, NULL, &sshdr,
+				START_STOP_TIMEOUT, 0, 0, RQF_PM, NULL);
+		if (!scsi_status_is_check_condition(ret) ||
+				!scsi_sense_valid(&sshdr) ||
+				sshdr.sense_key != UNIT_ATTENTION)
+			break;
+	}
 	if (ret) {
 		sdev_printk(KERN_WARNING, sdp,
 			    "START_STOP failed for power mode: %d, result %x\n",
-- 
2.33.0.800.g4c38ced690-goog


^ permalink raw reply related	[flat|nested] 11+ messages in thread
* [PATCH 0/2 v2] kill clearing UA in UFS driver
@ 2021-10-01 18:20 Jaegeuk Kim
  2021-10-01 18:20 ` [PATCH 1/2] scsi: ufs: retry START_STOP on UNIT_ATTENTION Jaegeuk Kim
  0 siblings, 1 reply; 11+ messages in thread
From: Jaegeuk Kim @ 2021-10-01 18:20 UTC (permalink / raw)
  To: linux-kernel, linux-scsi, Martin K . Petersen, Bart Van Assche,
	Adrian Hunter, Asutosh Das, Avri Altman, Bean Huo, Stanley Chu,
	Can Guo
  Cc: Jaegeuk Kim

There are some issues reported and fixed when clearing UA on reset/PM flows.
Let's avoid any potential bugs entirely by letting user clear UA.

Bart Van Assche (1):
  scsi: ufs: Stop clearing unit attentions

Jaegeuk Kim (1):
  scsi: ufs: retry START_STOP on UNIT_ATTENTION

 drivers/scsi/ufs/ufshcd.c | 196 ++------------------------------------
 drivers/scsi/ufs/ufshcd.h |  14 ---
 2 files changed, 10 insertions(+), 200 deletions(-)

-- 
2.33.0.800.g4c38ced690-goog


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

end of thread, other threads:[~2021-10-01 18:20 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-30 19:52 [PATCH 1/2] scsi: ufs: retry START_STOP on UNIT_ATTENTION Jaegeuk Kim
2021-09-30 19:52 ` [PATCH 2/2] scsi: ufs: Stop clearing unit attentions Jaegeuk Kim
2021-10-01  4:58   ` Adrian Hunter
2021-10-01  6:52     ` Adrian Hunter
2021-10-01 16:59       ` Bart Van Assche
2021-10-01 17:21         ` Douglas Gilbert
2021-10-01 17:40           ` Bart Van Assche
2021-10-01 17:24         ` Adrian Hunter
2021-10-01 16:19     ` Bart Van Assche
2021-09-30 19:55 ` [PATCH 1/2] scsi: ufs: retry START_STOP on UNIT_ATTENTION Bart Van Assche
2021-10-01 18:20 [PATCH 0/2 v2] kill clearing UA in UFS driver Jaegeuk Kim
2021-10-01 18:20 ` [PATCH 1/2] scsi: ufs: retry START_STOP on UNIT_ATTENTION Jaegeuk 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).