scsi: ufs: Make ufshcd_print_trs() consider UFSHCD_QUIRK_PRDT_BYTE_GRAN
authorEric Biggers <ebiggers@google.com>
Wed, 26 Aug 2020 02:10:40 +0000 (19:10 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 2 Sep 2020 02:09:51 +0000 (22:09 -0400)
Fix ufshcd_print_trs() to consider UFSHCD_QUIRK_PRDT_BYTE_GRAN when using
utp_transfer_req_desc::prd_table_length, so that it doesn't treat the
number of bytes as the number of entries.

Originally from Kiwoong Kim
(https://lkml.kernel.org/r/20200218233115.8185-1-kwmad.kim@samsung.com).

Link: https://lore.kernel.org/r/20200826021040.152148-1-ebiggers@kernel.org
Fixes: 26f968d7de82 ("scsi: ufs: Introduce UFSHCD_QUIRK_PRDT_BYTE_GRAN quirk")
Cc: Alim Akhtar <alim.akhtar@samsung.com>
Cc: Kiwoong Kim <kwmad.kim@samsung.com>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ufs/ufshcd.c

index 3d91def..0beb35d 100644 (file)
@@ -473,6 +473,9 @@ 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);
+
                dev_err(hba->dev,
                        "UPIU[%d] - PRDT - %d entries  phys@0x%llx\n",
                        tag, prdt_length,