On Mon, Nov 26, 2018 at 08:46:39PM +1100, Finn Thain wrote:
> On Mon, 26 Nov 2018, Christoph Hellwig wrote:
> 
> > On Thu, Nov 22, 2018 at 09:02:13AM +1100, Finn Thain wrote:
> > > > you in the To list maintain or wrote SCSI drivers that set the
> > > > DISABLE_CLUSTERING flag, which basically disable merges of any
> > > > bio segments.  We already have the actual max_segment size limit
> > > > to say which length a segment should have, independent of merged
> > > > or originally created, so this limit generally should rarely if
> > > > ever be required, and mostly is an old cut an paste error.
> > > > 
> > > 
> > > Are you referring to
> > >   blk_queue_max_segment_size(q, dma_get_max_seg_size(dev));
> > > in drivers/scsi/scsi_lib.c?
> > > 
> > > Is the segment size limitation of the DMA controller the only reason to 
> > > want DISABLE_CLUSTERING?
> > 
> > DISABLE_CLUSTERING mixes up two not really related things:
> > 
> >  1) limit the size of each segment to a single page size
> >  2) limit each segment to not actually span a page boundary.
> > 
> > Both could be valid limit for DMA engines, but also might be particularly
> > relevant for pio, if you e.g. kmap each page of a scatterlist do do
> > pio you'd want to see both limits.
> > 
> 
> I looked through all the drivers based on esp_scsi.c and NCR5380.c which 
> use DISABLE_CLUSTERING.
> 
> There is one driver that uses DMA and sometimes kmap too, which is 
> am53c974.c. It defaults to ENABLE_CLUSTERING, which would seem to be a bug 
> if kmap isn't compatible with that (Hannes?).
> 
> For g_NCR5380.c (ISA bus) and dmx3191d.c (PCI bus) these drivers need 
> DISABLE_CLUSTERING because apparently they don't use kmap or DMA. This 
> will need to be addressed if you remove DISABLE_CLUSTERING.
> 
> Then we have the ARM drivers, cumana_1.c and oak.c. I believe that ecard 
> drivers like these are only used with CONFIG_ARCH_RPC, and I think that 
> would imply !CONFIG_HIGHMEM (Russell?).
> 
> m68k that doesn't seem to have CONFIG_HIGHMEM either, so no need for kmap 
> or DISABLE_CLUSTERING when doing PIO or PDMA. That includes mac_esp.c and 
> mac_scsi.c. Michael has already answered for atari_scsi.c.
> 
> That leaves the Sun 3 drivers, sun3_scsi.c and sun3_scsi_vme.c, which may 
> have DMA limitations I don't know about (Sam?).

I don't believe the Sun3 DMA has limitations which require
DISABLE_CLUSTERING as described above.  I'm going to go with the "old
cut and paste error" theory as being most likely.

-- Sam

Reply via email to