All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bart Van Assche <bvanassche@acm.org>
To: "Martin K . Petersen" <martin.petersen@oracle.com>
Cc: Jaegeuk Kim <jaegeuk@kernel.org>,
	Adrian Hunter <adrian.hunter@intel.com>,
	linux-scsi@vger.kernel.org, Bart Van Assche <bvanassche@acm.org>,
	Avri Altman <avri.altman@wdc.com>
Subject: [PATCH v3 20/28] scsi: ufs: Remove locking from around single register writes
Date: Tue, 19 Apr 2022 15:58:03 -0700	[thread overview]
Message-ID: <20220419225811.4127248-21-bvanassche@acm.org> (raw)
In-Reply-To: <20220419225811.4127248-1-bvanassche@acm.org>

Single register writes are atomic and hence do not need to be surrounded
by locking. Additionally, MMIO writes are typically posted asynchronously.
Hence, there is no guarantee that these have finished by the time the
spin_unlock*() call has finished. See also the nonposted-mmio property of
the Open Firmware tree. See also pci_iomap().

Reviewed-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
---
 drivers/scsi/ufs/ufs-mediatek.c | 8 --------
 drivers/scsi/ufs/ufshcd.c       | 4 ----
 2 files changed, 12 deletions(-)

diff --git a/drivers/scsi/ufs/ufs-mediatek.c b/drivers/scsi/ufs/ufs-mediatek.c
index 9a4474210627..2b26acc74efb 100644
--- a/drivers/scsi/ufs/ufs-mediatek.c
+++ b/drivers/scsi/ufs/ufs-mediatek.c
@@ -171,7 +171,6 @@ static int ufs_mtk_hce_enable_notify(struct ufs_hba *hba,
 				     enum ufs_notify_change_status status)
 {
 	struct ufs_mtk_host *host = ufshcd_get_variant(hba);
-	unsigned long flags;
 
 	if (status == PRE_CHANGE) {
 		if (host->unipro_lpm) {
@@ -185,12 +184,8 @@ static int ufs_mtk_hce_enable_notify(struct ufs_hba *hba,
 			ufs_mtk_crypto_enable(hba);
 
 		if (host->caps & UFS_MTK_CAP_DISABLE_AH8) {
-			spin_lock_irqsave(hba->host->host_lock, flags);
 			ufshcd_writel(hba, 0,
 				      REG_AUTO_HIBERNATE_IDLE_TIMER);
-			spin_unlock_irqrestore(hba->host->host_lock,
-					       flags);
-
 			hba->capabilities &= ~MASK_AUTO_HIBERN8_SUPPORT;
 			hba->ahit = 0;
 		}
@@ -994,13 +989,10 @@ static void ufs_mtk_vreg_set_lpm(struct ufs_hba *hba, bool lpm)
 
 static void ufs_mtk_auto_hibern8_disable(struct ufs_hba *hba)
 {
-	unsigned long flags;
 	int ret;
 
 	/* disable auto-hibern8 */
-	spin_lock_irqsave(hba->host->host_lock, flags);
 	ufshcd_writel(hba, 0, REG_AUTO_HIBERNATE_IDLE_TIMER);
-	spin_unlock_irqrestore(hba->host->host_lock, flags);
 
 	/* wait host return to idle state when auto-hibern8 off */
 	ufs_mtk_wait_idle_state(hba, 5);
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 37527865e26b..d1c3f6291538 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -4207,14 +4207,10 @@ EXPORT_SYMBOL_GPL(ufshcd_auto_hibern8_update);
 
 void ufshcd_auto_hibern8_enable(struct ufs_hba *hba)
 {
-	unsigned long flags;
-
 	if (!ufshcd_is_auto_hibern8_supported(hba))
 		return;
 
-	spin_lock_irqsave(hba->host->host_lock, flags);
 	ufshcd_writel(hba, hba->ahit, REG_AUTO_HIBERNATE_IDLE_TIMER);
-	spin_unlock_irqrestore(hba->host->host_lock, flags);
 }
 
  /**

  parent reply	other threads:[~2022-04-19 22:59 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-19 22:57 [PATCH v3 00/28] Split the ufshcd.h header file Bart Van Assche
2022-04-19 22:57 ` [PATCH v3 01/28] scsi: ufs: Fix a spelling error in a source code comment Bart Van Assche
2022-04-19 22:57 ` [PATCH v3 02/28] scsi: ufs: Declare ufshcd_wait_for_register() static Bart Van Assche
2022-04-19 22:57 ` [PATCH v3 03/28] scsi: ufs: Remove superfluous boolean conversions Bart Van Assche
2022-04-19 22:57 ` [PATCH v3 04/28] scsi: ufs: Simplify statements that return a boolean Bart Van Assche
2022-04-19 22:57 ` [PATCH v3 05/28] scsi: ufs: Remove ufshcd_lrb.sense_bufflen Bart Van Assche
2022-04-19 22:57 ` [PATCH v3 06/28] scsi: ufs: Remove ufshcd_lrb.sense_buffer Bart Van Assche
2022-04-19 22:57 ` [PATCH v3 07/28] scsi: ufs: Use get_unaligned_be16() instead of be16_to_cpup() Bart Van Assche
2022-04-19 22:57 ` [PATCH v3 08/28] scsi: ufs: Remove the UFS_FIX() and END_FIX() macros Bart Van Assche
2022-04-19 22:57 ` [PATCH v3 09/28] scsi: ufs: Rename struct ufs_dev_fix into ufs_dev_quirk Bart Van Assche
2022-04-19 22:57 ` [PATCH v3 10/28] scsi: ufs: Declare the quirks array const Bart Van Assche
2022-04-19 22:57 ` [PATCH v3 11/28] scsi: ufs: Invert the return value of ufshcd_is_hba_active() Bart Van Assche
2022-04-19 22:57 ` [PATCH v3 12/28] scsi: ufs: Remove unused constants and code Bart Van Assche
2022-04-19 22:57 ` [PATCH v3 13/28] scsi: ufs: Switch to aggregate initialization Bart Van Assche
2022-04-19 22:57 ` [PATCH v3 14/28] scsi: ufs: Make the config_scaling_param calls type safe Bart Van Assche
2022-04-19 22:57 ` [PATCH v3 15/28] scsi: ufs: Remove the driver version Bart Van Assche
2022-04-19 22:57 ` [PATCH v3 16/28] scsi: ufs: Rename sdev_ufs_device into ufs_device_wlun Bart Van Assche
2022-04-19 22:58 ` [PATCH v3 17/28] scsi: ufs: Use an SPDX license identifier in the Kconfig file Bart Van Assche
2022-04-19 22:58 ` [PATCH v3 18/28] scsi: ufs: Remove paths from source code comments Bart Van Assche
2022-04-19 22:58 ` [PATCH v3 19/28] scsi: ufs: Remove the TRUE and FALSE definitions Bart Van Assche
2022-04-19 22:58 ` Bart Van Assche [this message]
2022-04-19 22:58 ` [PATCH v3 21/28] scsi: ufs: Introduce ufshcd_clkgate_delay_set() Bart Van Assche
2022-04-19 22:58 ` [PATCH v3 22/28] scsi: ufs: qcom: Fix ufs_qcom_resume() Bart Van Assche
2022-04-19 22:58 ` [PATCH v3 23/28] scsi: ufs: Remove unnecessary ufshcd-crypto.h include directives Bart Van Assche
2022-04-19 22:58 ` [PATCH v3 24/28] scsi: ufs: Fix kernel-doc syntax in ufshcd.h Bart Van Assche
2022-04-19 22:58 ` [PATCH v3 25/28] scsi: ufs: Minimize #include directives Bart Van Assche
2022-04-19 22:58 ` [PATCH v3 26/28] scsi: ufs: Split the ufshcd.h header file Bart Van Assche
2022-04-19 22:58 ` [PATCH v3 27/28] scsi: ufs: Move the struct ufs_ref_clk definition Bart Van Assche
2022-04-19 22:58 ` [PATCH v3 28/28] scsi: ufs: Move the ufs_is_valid_unit_desc_lun() definition Bart Van Assche
2022-04-25 20:58 ` [PATCH v3 00/28] Split the ufshcd.h header file Bean Huo
2022-04-26  2:43 ` Martin K. Petersen
2022-05-03  0:51 ` Martin K. Petersen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220419225811.4127248-21-bvanassche@acm.org \
    --to=bvanassche@acm.org \
    --cc=adrian.hunter@intel.com \
    --cc=avri.altman@wdc.com \
    --cc=jaegeuk@kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.