Patch "scsi: ufs: qcom: Perform read back after writing REG_UFS_SYS1CLK_1US" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    scsi: ufs: qcom: Perform read back after writing REG_UFS_SYS1CLK_1US

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     scsi-ufs-qcom-perform-read-back-after-writing-reg_uf.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 418cff2c3074e762e43e14e1a4a2e9fc31be7e55
Author: Andrew Halaney <ahalaney@xxxxxxxxxx>
Date:   Fri Mar 29 15:46:44 2024 -0500

    scsi: ufs: qcom: Perform read back after writing REG_UFS_SYS1CLK_1US
    
    [ Upstream commit a862fafa263aea0f427d51aca6ff7fd9eeaaa8bd ]
    
    Currently after writing to REG_UFS_SYS1CLK_1US a mb() is used to ensure
    that write has gone through to the device.
    
    mb() ensures that the write completes, but completion doesn't mean that it
    isn't stored in a buffer somewhere. The recommendation for ensuring this
    bit has taken effect on the device is to perform a read back to force it to
    make it all the way to the device. This is documented in device-io.rst and
    a talk by Will Deacon on this can be seen over here:
    
        https://youtu.be/i6DayghhA8Q?si=MiyxB5cKJXSaoc01&t=1678
    
    Let's do that to ensure the bit hits the device. Because the mb()'s purpose
    wasn't to add extra ordering (on top of the ordering guaranteed by
    writel()/readl()), it can safely be removed.
    
    Fixes: f06fcc7155dc ("scsi: ufs-qcom: add QUniPro hardware support and power optimizations")
    Reviewed-by: Can Guo <quic_cang@xxxxxxxxxxx>
    Signed-off-by: Andrew Halaney <ahalaney@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20240329-ufs-reset-ensure-effect-before-delay-v5-2-181252004586@xxxxxxxxxx
    Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx>
    Signed-off-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c
index f810b99ef5c51..4809ced13851e 100644
--- a/drivers/scsi/ufs/ufs-qcom.c
+++ b/drivers/scsi/ufs/ufs-qcom.c
@@ -449,7 +449,7 @@ static int ufs_qcom_cfg_timers(struct ufs_hba *hba, u32 gear,
 		 * make sure above write gets applied before we return from
 		 * this function.
 		 */
-		mb();
+		ufshcd_readl(hba, REG_UFS_SYS1CLK_1US);
 	}
 
 	if (ufs_qcom_cap_qunipro(host))




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux