[PATCH 3/4] scsi: ufs: core: Use reg_lock to protect UTRLCLR

Avri Altman posted 4 patches 1 month ago
There is a newer version of this series
[PATCH 3/4] scsi: ufs: core: Use reg_lock to protect UTRLCLR
Posted by Avri Altman 1 month ago
Use the host register lock to serialize access to the UTRLCLR as well,
instead of the host_lock.

Signed-off-by: Avri Altman <avri.altman@wdc.com>
---
 drivers/ufs/core/ufshcd.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
index 081cbf7174da..4eee737a4fd5 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -3100,9 +3100,9 @@ static int ufshcd_clear_cmd(struct ufs_hba *hba, u32 task_tag)
 	mask = 1U << task_tag;
 
 	/* clear outstanding transaction before retry */
-	spin_lock_irqsave(hba->host->host_lock, flags);
+	spin_lock_irqsave(&hba->reg_lock, flags);
 	ufshcd_utrl_clear(hba, mask);
-	spin_unlock_irqrestore(hba->host->host_lock, flags);
+	spin_unlock_irqrestore(&hba->reg_lock, flags);
 
 	/*
 	 * wait for h/w to clear corresponding bit in door-bell.
-- 
2.25.1
Re: [PATCH 3/4] scsi: ufs: core: Use reg_lock to protect UTRLCLR
Posted by Bart Van Assche 1 month ago
On 10/21/24 5:03 AM, Avri Altman wrote:
> @@ -3100,9 +3100,9 @@ static int ufshcd_clear_cmd(struct ufs_hba *hba, u32 task_tag)
>   	mask = 1U << task_tag;
>   
>   	/* clear outstanding transaction before retry */
> -	spin_lock_irqsave(hba->host->host_lock, flags);
> +	spin_lock_irqsave(&hba->reg_lock, flags);
>   	ufshcd_utrl_clear(hba, mask);
> -	spin_unlock_irqrestore(hba->host->host_lock, flags);
> +	spin_unlock_irqrestore(&hba->reg_lock, flags);
>   
>   	/*
>   	 * wait for h/w to clear corresponding bit in door-bell.

Hi Avri,

A similar comment as for the previous patch applies to this patch:
ufshcd_utrl_clear() performs a single MMIO write so I don't think that
calls of this function have to be serialized.

Thanks,

Bart.