All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/6] scsi: ufs: atomic update for clkgating_enable
@ 2020-09-15 20:45 Jaegeuk Kim
  2020-09-15 20:45 ` [PATCH 2/6] scsi: ufs: clear UAC for FFU Jaegeuk Kim
                   ` (4 more replies)
  0 siblings, 5 replies; 12+ messages in thread
From: Jaegeuk Kim @ 2020-09-15 20:45 UTC (permalink / raw)
  To: linux-kernel, linux-scsi, kernel-team
  Cc: Jaegeuk Kim, Alim Akhtar, Avri Altman

From: Jaegeuk Kim <jaegeuk@google.com>

When giving a stress test which enables/disables clkgating, we hit device
timeout sometimes. This patch avoids subtle racy condition to address it.

Cc: Alim Akhtar <alim.akhtar@samsung.com>
Cc: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
---
 drivers/scsi/ufs/ufshcd.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 1d157ff58d817..d929c3d1e58cc 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -1791,19 +1791,19 @@ static ssize_t ufshcd_clkgate_enable_store(struct device *dev,
 		return -EINVAL;
 
 	value = !!value;
+
+	spin_lock_irqsave(hba->host->host_lock, flags);
 	if (value == hba->clk_gating.is_enabled)
 		goto out;
 
-	if (value) {
-		ufshcd_release(hba);
-	} else {
-		spin_lock_irqsave(hba->host->host_lock, flags);
+	if (value)
+		hba->clk_gating.active_reqs--;
+	else
 		hba->clk_gating.active_reqs++;
-		spin_unlock_irqrestore(hba->host->host_lock, flags);
-	}
 
 	hba->clk_gating.is_enabled = value;
 out:
+	spin_unlock_irqrestore(hba->host->host_lock, flags);
 	return count;
 }
 
-- 
2.28.0.618.gf4bc123cb7-goog


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

end of thread, other threads:[~2020-09-22  5:30 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-09-15 20:45 [PATCH 1/6] scsi: ufs: atomic update for clkgating_enable Jaegeuk Kim
2020-09-15 20:45 ` [PATCH 2/6] scsi: ufs: clear UAC for FFU Jaegeuk Kim
2020-09-15 20:45 ` [PATCH 3/6] scsi: ufs: use WQ_HIGHPRI for gating work Jaegeuk Kim
2020-09-15 20:45 ` [PATCH 4/6] scsi: ufs: fix LINERESET on hibern8 Jaegeuk Kim
2020-09-18  4:12   ` Jaegeuk Kim
2020-09-15 20:45 ` [PATCH 5/6] scsi: ufs: show ufs part info in error case Jaegeuk Kim
2020-09-16 10:34   ` Bean Huo
2020-09-16 16:05     ` Jaegeuk Kim
2020-09-17  0:54       ` Can Guo
2020-09-18  4:13         ` Jaegeuk Kim
2020-09-22  5:30           ` Can Guo
2020-09-15 20:45 ` [PATCH 6/6] scsi: add more contexts in the ufs tracepoints Jaegeuk Kim

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.