scsi: megaraid_sas: set an unlimited max_segment_size
authorChristoph Hellwig <hch@lst.de>
Mon, 17 Jun 2019 12:20:00 +0000 (14:20 +0200)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 17 Jul 2019 03:02:11 +0000 (23:02 -0400)
When using a virt_boundary_mask, as done for NVMe devices attached to
megaraid_sas controllers, we require an unlimited max_segment_size as the
virt boundary merging code assumes that.  But we also need to propagate
that to the DMA mapping layer to make dma-debug happy.  The SCSI layer
takes care of that when using the per-host virt_boundary setting, but
given that megaraid_sas only wants to set the virt_boundary for actual
NVMe devices, we can't rely on that.  The DMA layer maximum segment is
global to the HBA however, so we have to set it explicitly.  This patch
assumes that megaraid_sas does not have a segment size limitation, which
seems true based on the SGL format, but will need to be verified.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/megaraid/megaraid_sas_base.c

index 8b0dc0795f64a8a66aaa1d8cad67bb0fb55a3a87..178f8e20ee9a206abdadba7c018410175b378220 100644 (file)
@@ -3356,6 +3356,7 @@ static struct scsi_host_template megasas_template = {
        .shost_attrs = megaraid_host_attrs,
        .bios_param = megasas_bios_param,
        .change_queue_depth = scsi_change_queue_depth,
+       .max_segment_size = 0xffffffff,
        .no_write_same = 1,
 };