[PATCH 2/4] scsi: ufs: core: Use reg_lock to protect UTMRLCLR

Avri Altman posted 4 patches 1 month ago
There is a newer version of this series
[PATCH 2/4] scsi: ufs: core: Use reg_lock to protect UTMRLCLR
Posted by Avri Altman 1 month ago
Use the host register lock to serialize access to the UTMRLCLR 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 21eda055fb7d..081cbf7174da 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -7025,9 +7025,9 @@ static int ufshcd_clear_tm_cmd(struct ufs_hba *hba, int tag)
 	if (!test_bit(tag, &hba->outstanding_tasks))
 		goto out;
 
-	spin_lock_irqsave(hba->host->host_lock, flags);
+	spin_lock_irqsave(&hba->reg_lock, flags);
 	ufshcd_utmrl_clear(hba, tag);
-	spin_unlock_irqrestore(hba->host->host_lock, flags);
+	spin_unlock_irqrestore(&hba->reg_lock, flags);
 
 	/* poll for max. 1 sec to clear door bell register by h/w */
 	err = ufshcd_wait_for_register(hba,
-- 
2.25.1
Re: [PATCH 2/4] scsi: ufs: core: Use reg_lock to protect UTMRLCLR
Posted by Bart Van Assche 1 month ago
On 10/21/24 5:03 AM, Avri Altman wrote:
>   	if (!test_bit(tag, &hba->outstanding_tasks))
>   		goto out;
>   
> -	spin_lock_irqsave(hba->host->host_lock, flags);
> +	spin_lock_irqsave(&hba->reg_lock, flags);
>   	ufshcd_utmrl_clear(hba, tag);
> -	spin_unlock_irqrestore(hba->host->host_lock, flags);
> +	spin_unlock_irqrestore(&hba->reg_lock, flags);
>   
>   	/* poll for max. 1 sec to clear door bell register by h/w */
>   	err = ufshcd_wait_for_register(hba,

Hi Avri,

ufshcd_utmrl_clear() performs a single write so I assume that calls of
that function do not have to be serialized?

Thanks,

Bart.