linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/4] scsi: ufs: atomic update for clkgating_enable
@ 2020-10-05 22:36 Jaegeuk Kim
  2020-10-05 22:36 ` [PATCH 2/4] scsi: ufs: clear UAC for FFU and RPMB LUNs Jaegeuk Kim
                   ` (3 more replies)
  0 siblings, 4 replies; 15+ messages in thread
From: Jaegeuk Kim @ 2020-10-05 22:36 UTC (permalink / raw)
  To: linux-kernel, linux-scsi, kernel-team
  Cc: Jaegeuk Kim, Alim Akhtar, Avri Altman, Can Guo

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>
Cc: Can Guo <cang@codeaurora.org>
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.806.g8561365e88-goog


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

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

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-05 22:36 [PATCH 1/4] scsi: ufs: atomic update for clkgating_enable Jaegeuk Kim
2020-10-05 22:36 ` [PATCH 2/4] scsi: ufs: clear UAC for FFU and RPMB LUNs Jaegeuk Kim
2020-10-20  2:17   ` Can Guo
2020-10-20 18:36     ` jaegeuk
2020-10-05 22:36 ` [PATCH 3/4] scsi: ufs: use WQ_HIGHPRI for gating work Jaegeuk Kim
2020-10-20  2:19   ` Can Guo
2020-10-20 18:27     ` jaegeuk
2020-10-05 22:36 ` [PATCH 4/4] scsi: add more contexts in the ufs tracepoints Jaegeuk Kim
2020-10-20  2:18   ` Can Guo
2020-10-20 10:51     ` Avri Altman
2020-10-20 11:02       ` Can Guo
2020-10-20 11:54         ` Avri Altman
2020-10-20 11:57         ` Can Guo
2020-10-20 12:33           ` Can Guo
2020-10-20  2:30 ` [PATCH 1/4] scsi: ufs: atomic update for clkgating_enable Can Guo

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).