This is a note to let you know that I've just added the patch titled scsi: ufs: core: Fix MCQ tag calculation to the 6.3-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-core-fix-mcq-tag-calculation.patch and it can be found in the queue-6.3 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. commit ea91d4368aadecf8c9c0e1d1f6a57e2551e23c16 Author: Po-Wen Kao <powen.kao@xxxxxxxxxxxx> Date: Thu May 4 23:44:49 2023 +0800 scsi: ufs: core: Fix MCQ tag calculation [ Upstream commit 5149452ca66289ef33d13897ee845a2f6f5b680f ] The transfer command descriptor is allocated in ufshcd_memory_alloc() and referenced by the transfer request descriptor with stride size sizeof_utp_transfer_cmd_desc() instead of sizeof(struct utp_transfer_cmd_desc). Consequently, computing tag by address offset should also refer to the same stride. Signed-off-by: Po-Wen Kao <powen.kao@xxxxxxxxxxxx> Link: https://lore.kernel.org/r/20230504154454.26654-2-powen.kao@xxxxxxxxxxxx Reviewed-by: Bart Van Assche <bvanassche@xxxxxxx> Reviewed-by: Manivannan Sadhasivam <mani@xxxxxxxxxx> Reviewed-by: Stanley Chu <stanley.chu@xxxxxxxxxxxx> Reviewed-by: Ziqi Chen <quic_ziqichen@xxxxxxxxxxx> Signed-off-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx> Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx> diff --git a/drivers/ufs/core/ufs-mcq.c b/drivers/ufs/core/ufs-mcq.c index 202ff71e1b582..b7c5f39b50e6d 100644 --- a/drivers/ufs/core/ufs-mcq.c +++ b/drivers/ufs/core/ufs-mcq.c @@ -265,7 +265,7 @@ static int ufshcd_mcq_get_tag(struct ufs_hba *hba, addr = (le64_to_cpu(cqe->command_desc_base_addr) & CQE_UCD_BA) - hba->ucdl_dma_addr; - return div_u64(addr, sizeof(struct utp_transfer_cmd_desc)); + return div_u64(addr, sizeof_utp_transfer_cmd_desc(hba)); } static void ufshcd_mcq_process_cqe(struct ufs_hba *hba, diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index 8ac2945e849f4..a80eacbb8ef85 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -8422,7 +8422,7 @@ static void ufshcd_release_sdb_queue(struct ufs_hba *hba, int nutrs) { size_t ucdl_size, utrdl_size; - ucdl_size = sizeof(struct utp_transfer_cmd_desc) * nutrs; + ucdl_size = sizeof_utp_transfer_cmd_desc(hba) * nutrs; dmam_free_coherent(hba->dev, ucdl_size, hba->ucdl_base_addr, hba->ucdl_dma_addr);