Hi Bart >-----Original Message----- >From: Bart Van Assche [mailto:bvanassche@xxxxxxx] >Sent: Saturday, January 7, 2023 3:28 AM >To: Martin K . Petersen <martin.petersen@xxxxxxxxxx> >Cc: Jaegeuk Kim <jaegeuk@xxxxxxxxxx>; Avri Altman ><avri.altman@xxxxxxx>; Adrian Hunter <adrian.hunter@xxxxxxxxx>; linux- >scsi@xxxxxxxxxxxxxxx; Bart Van Assche <bvanassche@xxxxxxx>; Kiwoong Kim ><kwmad.kim@xxxxxxxxxxx>; James E.J. Bottomley <jejb@xxxxxxxxxxxxx>; >Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx>; Bean Huo ><beanhuo@xxxxxxxxxx>; Stanley Chu <stanley.chu@xxxxxxxxxxxx>; >Jinyoung Choi <j-young.choi@xxxxxxxxxxx>; Chanho Park ><chanho61.park@xxxxxxxxxxx>; Alim Akhtar <alim.akhtar@xxxxxxxxxxx>; >Arthur Simchaev <Arthur.Simchaev@xxxxxxx>; Keoseong Park ><keosung.park@xxxxxxxxxxx>; Yoshihiro Shimoda ><yoshihiro.shimoda.uh@xxxxxxxxxxx> >Subject: [PATCH 1/3] scsi: ufs: Exynos: Fix DMA alignment for PAGE_SIZE != >4096 > >The Exynos UFS controller only supports scatter/gather list elements that are >aligned on a 4 KiB boundary. Fix DMA alignment in case PAGE_SIZE != 4096. >Rename UFSHCD_QUIRK_ALIGN_SG_WITH_PAGE_SIZE into >UFSHCD_QUIRK_4KB_DMA_ALIGNMENT. > >Cc: Kiwoong Kim <kwmad.kim@xxxxxxxxxxx> >Fixes: 2b2bfc8aa519 ("scsi: ufs: Introduce a quirk to allow only page-aligned sg >entries") >Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx> >--- Thanks! Reviewed-by: Alim Akhtar <alim.akhtar@xxxxxxxxxxx> Tested on platforms containing Exynos HCI, so feel free to add Tested-by: Alim Akhtar <alim.akhtar@xxxxxxxxxxx> > drivers/ufs/core/ufshcd.c | 4 ++-- > drivers/ufs/host/ufs-exynos.c | 2 +- > include/ufs/ufshcd.h | 4 ++-- > 3 files changed, 5 insertions(+), 5 deletions(-) > >diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index >99ca5b035028..be18edf4ef7f 100644 >--- a/drivers/ufs/core/ufshcd.c >+++ b/drivers/ufs/core/ufshcd.c >@@ -5029,8 +5029,8 @@ static int ufshcd_slave_configure(struct scsi_device >*sdev) > ufshcd_hpb_configure(hba, sdev); > > blk_queue_update_dma_pad(q, PRDT_DATA_BYTE_COUNT_PAD - >1); >- if (hba->quirks & UFSHCD_QUIRK_ALIGN_SG_WITH_PAGE_SIZE) >- blk_queue_update_dma_alignment(q, PAGE_SIZE - 1); >+ if (hba->quirks & UFSHCD_QUIRK_4KB_DMA_ALIGNMENT) >+ blk_queue_update_dma_alignment(q, 4096 - 1); > /* > * Block runtime-pm until all consumers are added. > * Refer ufshcd_setup_links(). >diff --git a/drivers/ufs/host/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c >index c3628a8645a5..3cdac89a28b8 100644 >--- a/drivers/ufs/host/ufs-exynos.c >+++ b/drivers/ufs/host/ufs-exynos.c >@@ -1673,7 +1673,7 @@ static const struct exynos_ufs_drv_data >exynos_ufs_drvs = { > >UFSHCD_QUIRK_BROKEN_OCS_FATAL_ERROR | > >UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL | > >UFSHCD_QUIRK_SKIP_DEF_UNIPRO_TIMEOUT_SETTING | >- >UFSHCD_QUIRK_ALIGN_SG_WITH_PAGE_SIZE, >+ UFSHCD_QUIRK_4KB_DMA_ALIGNMENT, > .opts = EXYNOS_UFS_OPT_HAS_APB_CLK_CTRL | > >EXYNOS_UFS_OPT_BROKEN_AUTO_CLK_CTRL | > EXYNOS_UFS_OPT_BROKEN_RX_SEL_IDX | >diff --git a/include/ufs/ufshcd.h b/include/ufs/ufshcd.h index >dd5912b4db77..583611444f12 100644 >--- a/include/ufs/ufshcd.h >+++ b/include/ufs/ufshcd.h >@@ -567,9 +567,9 @@ enum ufshcd_quirks { > UFSHCD_QUIRK_SKIP_DEF_UNIPRO_TIMEOUT_SETTING = 1 << 13, > > /* >- * This quirk allows only sg entries aligned with page size. >+ * Align DMA SG entries on a 4 KiB boundary. > */ >- UFSHCD_QUIRK_ALIGN_SG_WITH_PAGE_SIZE = 1 << 14, >+ UFSHCD_QUIRK_4KB_DMA_ALIGNMENT = 1 << >14, > > /* > * This quirk needs to be enabled if the host controller does not