]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
scsi: ufs: core: Enable DMA clustering
authorBart Van Assche <bvanassche@acm.org>
Thu, 12 Jan 2023 23:42:15 +0000 (15:42 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 24 Jan 2023 02:35:54 +0000 (21:35 -0500)
All UFS host controllers support DMA clustering. Hence enable DMA
clustering.

Notes:

 - The max_segment_size parameter implements the 256 KiB limit for the
   PRDT. The dma_boundary parameter represents a boundary that must not be
   crossed by DMA scatter/gather lists. I'm not aware of any restrictions
   on DMA scatter/gather lists in the UFSHCI specification other than the
   256 KiB limit for the PRDT and the 32-bit address restriction for
   controllers that only support 32-bits DMA. The latter restriction is
   already handled by ufshcd_set_dma_mask().

 - Without patch "scsi: ufs: exynos: Fix the maximum segment size", this
   patch breaks support for the Exynos controller.

The history of the dma_boundary parameter in the UFS driver is as
follows:

 * The initial UFS driver did not set the dma_boundary parameter.

 * Commit 4dd4130a722f ("scsi: make sure all drivers set the use_clustering
   flag") set the .use_clustering flag.

 * Commit 4af14d113bcf ("scsi: remove the use_clustering flag") removed the
   use_clustering flag and set the dma_boundary parameter instead.

Cc: Avri Altman <avri.altman@wdc.com>
Cc: Alim Akhtar <alim.akhtar@samsung.com>
Cc: Kiwoong Kim <kwmad.kim@samsung.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ufs/core/ufshcd.c

index e626810a9abbfb8a1b0cb925f4aceaa7ce5d26d6..89a78a0f794c63011053ff08dce30832e5c68f48 100644 (file)
@@ -8724,7 +8724,6 @@ static struct scsi_host_template ufshcd_driver_template = {
        .max_host_blocked       = 1,
        .track_queue_depth      = 1,
        .sdev_groups            = ufshcd_driver_groups,
-       .dma_boundary           = PAGE_SIZE - 1,
        .rpm_autosuspend_delay  = RPM_AUTOSUSPEND_DELAY_MS,
 };