Message ID | 20190617122000.22181-8-hch@lst.de (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | [1/8] scsi: add a host / host template field for the virt boundary | expand |
On Mon, Jun 17, 2019 at 8:21 PM Christoph Hellwig <hch@lst.de> wrote: > > When using a virt_boundary_mask, as done for NVMe devices attached to > mpt3sas 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 mpt3sas 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 mpt3sas 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> > --- > drivers/scsi/mpt3sas/mpt3sas_scsih.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c > index 1ccfbc7eebe0..c719b807f6d8 100644 > --- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c > +++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c > @@ -10222,6 +10222,7 @@ static struct scsi_host_template mpt3sas_driver_template = { > .this_id = -1, > .sg_tablesize = MPT3SAS_SG_DEPTH, > .max_sectors = 32767, > + .max_segment_size = 0xffffffff, .max_segment_size should be aligned, either setting it here correctly or forcing to make it aligned in scsi-core. Thanks, Ming Lei
Please consider this as Acked-by: Suganath Prabu <suganath-prabu.subramani@broadcom.com> On Tue, Jun 18, 2019 at 6:16 AM Ming Lei <tom.leiming@gmail.com> wrote: > > On Mon, Jun 17, 2019 at 8:21 PM Christoph Hellwig <hch@lst.de> wrote: > > > > When using a virt_boundary_mask, as done for NVMe devices attached to > > mpt3sas 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 mpt3sas 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 mpt3sas 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> > > --- > > drivers/scsi/mpt3sas/mpt3sas_scsih.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c > > index 1ccfbc7eebe0..c719b807f6d8 100644 > > --- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c > > +++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c > > @@ -10222,6 +10222,7 @@ static struct scsi_host_template mpt3sas_driver_template = { > > .this_id = -1, > > .sg_tablesize = MPT3SAS_SG_DEPTH, > > .max_sectors = 32767, > > + .max_segment_size = 0xffffffff, > > .max_segment_size should be aligned, either setting it here correctly or > forcing to make it aligned in scsi-core. > > Thanks, > Ming Lei
Acked-by: Suganath Prabu <suganath-prabu.subramani@broadcom.com> On Thu, Jun 20, 2019 at 12:34 PM Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com> wrote: > > Please consider this as Acked-by: Suganath Prabu > <suganath-prabu.subramani@broadcom.com> > > > On Tue, Jun 18, 2019 at 6:16 AM Ming Lei <tom.leiming@gmail.com> wrote: > > > > On Mon, Jun 17, 2019 at 8:21 PM Christoph Hellwig <hch@lst.de> wrote: > > > > > > When using a virt_boundary_mask, as done for NVMe devices attached to > > > mpt3sas 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 mpt3sas 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 mpt3sas 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> > > > --- > > > drivers/scsi/mpt3sas/mpt3sas_scsih.c | 1 + > > > 1 file changed, 1 insertion(+) > > > > > > diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c > > > index 1ccfbc7eebe0..c719b807f6d8 100644 > > > --- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c > > > +++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c > > > @@ -10222,6 +10222,7 @@ static struct scsi_host_template mpt3sas_driver_template = { > > > .this_id = -1, > > > .sg_tablesize = MPT3SAS_SG_DEPTH, > > > .max_sectors = 32767, > > > + .max_segment_size = 0xffffffff, > > > > .max_segment_size should be aligned, either setting it here correctly or > > forcing to make it aligned in scsi-core. > > > > Thanks, > > Ming Lei
diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c index 1ccfbc7eebe0..c719b807f6d8 100644 --- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c +++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c @@ -10222,6 +10222,7 @@ static struct scsi_host_template mpt3sas_driver_template = { .this_id = -1, .sg_tablesize = MPT3SAS_SG_DEPTH, .max_sectors = 32767, + .max_segment_size = 0xffffffff, .cmd_per_lun = 7, .shost_attrs = mpt3sas_host_attrs, .sdev_attrs = mpt3sas_dev_attrs,
When using a virt_boundary_mask, as done for NVMe devices attached to mpt3sas 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 mpt3sas 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 mpt3sas 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> --- drivers/scsi/mpt3sas/mpt3sas_scsih.c | 1 + 1 file changed, 1 insertion(+)