scsi: ufshcd: set max_segment_size in the scsi host template
authorChristoph Hellwig <hch@lst.de>
Mon, 17 Jun 2019 12:19:55 +0000 (14:19 +0200)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 17 Jul 2019 03:01:49 +0000 (23:01 -0400)
We need to also mirror the value to the device to ensure IOMMU merging
doesn't undo it, and the SCSI host level parameter will ensure that.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ufs/ufshcd.c

index a208589426b1b9af5e0a596d76dde1a29b664c13..a3b6cd1a623d1834e84cf5d45f43ab3eff3490e1 100644 (file)
@@ -4586,8 +4586,6 @@ static int ufshcd_slave_configure(struct scsi_device *sdev)
        struct request_queue *q = sdev->request_queue;
 
        blk_queue_update_dma_pad(q, PRDT_DATA_BYTE_COUNT_PAD - 1);
-       blk_queue_max_segment_size(q, PRDT_DATA_BYTE_COUNT_MAX);
-
        return 0;
 }
 
@@ -7021,6 +7019,7 @@ static struct scsi_host_template ufshcd_driver_template = {
        .sg_tablesize           = SG_ALL,
        .cmd_per_lun            = UFSHCD_CMD_PER_LUN,
        .can_queue              = UFSHCD_CAN_QUEUE,
+       .max_segment_size       = PRDT_DATA_BYTE_COUNT_MAX,
        .max_host_blocked       = 1,
        .track_queue_depth      = 1,
        .sdev_groups            = ufshcd_driver_groups,