From b691cb35d31f051437e4e3e13fbeaad67db1bdb0 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Tue, 27 Oct 2020 09:26:59 -0700 Subject: [PATCH] ANDROID: scsi: ufs: fix more bad merge resolutions with custom sg entry size Fix bad merge resolutions between Android-specific commit 8de80df7d7e4 ("ANDROID: scsi: ufs: allow ufs variants to override sg entry size") and the following upstream commits: - commit 26f968d7de82 ("scsi: ufs: Introduce UFSHCD_QUIRK_PRDT_BYTE_GRAN quirk") - commit cc770ce34aee ("scsi: ufs: Make ufshcd_print_trs() consider UFSHCD_QUIRK_PRDT_BYTE_GRAN") This should be folded into ANDROID-scsi-ufs-allow-ufs-variants-to-override-sg-entry-size.patch. Fixes: 2c136de3024f ("Merge 86cfccb66937 ("Merge tag 'dlm-5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/linux-dlm") into android-mainline") Fixes: 22a7eefbebcf ("Merge 55e0500eb5c0 ("Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi") into android-mainline") Bug: 162257402 Change-Id: I3a2f1f5b6df43028dde248b9a932f5595dd13e21 Signed-off-by: Eric Biggers --- drivers/scsi/ufs/ufshcd.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index e57b7c2647b5..ee8b08c1d401 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -477,7 +477,7 @@ void ufshcd_print_trs(struct ufs_hba *hba, unsigned long bitmap, bool pr_prdt) prdt_length = le16_to_cpu( lrbp->utr_descriptor_ptr->prd_table_length); if (hba->quirks & UFSHCD_QUIRK_PRDT_BYTE_GRAN) - prdt_length /= sizeof(struct ufshcd_sg_entry); + prdt_length /= hba->sg_entry_size; dev_err(hba->dev, "UPIU[%d] - PRDT - %d entries phys@0x%llx\n", @@ -2209,8 +2209,7 @@ static int ufshcd_map_sg(struct ufs_hba *hba, struct ufshcd_lrb *lrbp) if (hba->quirks & UFSHCD_QUIRK_PRDT_BYTE_GRAN) lrbp->utr_descriptor_ptr->prd_table_length = - cpu_to_le16((sg_segments * - sizeof(struct ufshcd_sg_entry))); + cpu_to_le16(sg_segments * hba->sg_entry_size); else lrbp->utr_descriptor_ptr->prd_table_length = cpu_to_le16((u16) (sg_segments));