Re: drivers/scsi/aic7xxx/aic7xxx_osm.c: warning is error

Mike Anderson (andmike@us.ibm.com)
Wed, 14 May 2003 08:56:53 -0700


Jens Axboe [axboe@suse.de] wrote:
> On Wed, May 14 2003, Mike Anderson wrote:
> > Justin T. Gibbs [gibbs@scsiguy.com] wrote:
> > > Comments have indicated since the 2.4.X days that Linux will never allocate
> > > segments that cross a 4GB boundary. If this is truely enforced, then this
> > > code can just be removed. It was only added out of paranoia (hence the
> > > printf) while adding high address support to the driver.
> >
> > Jens can give the more complete answer on enforcement, and also correct
> > any mis-statements I made.
>
> This property can be toggled with blk_queue_segment_boundary, and we do
> default to setting a 4GB boundary mask. So you can be sure that a
> request will never straddle a 4GB boundary.
>
> > Base on the queue values below the aic7xxx driver should see the
> > following characteristics on IO. The IO should be for no more than 8k
> > made up of no more than 128 sg entries with no segment crossing the
> > seg_boundary_mask.
>
> I suppose you mean for no more than 8k sectors, ie 4MiB of data.
>

Yes, late night typing (my brain went to sleep before my fingers).

> > Adaptec AIC7xxx driver version: 6.2.33
> > scsi_alloc_queue: queue for aic7xxx
> > bounce_pfn: 0xfffff
> > bounce_gfp: 0x10 (GFP_NOIO)
> > queue_flags: 0x1 (QUEUE_FLAG_QUEUED)
> > max_sectors: 0x2000 (8192)
> > max_phys_segments: 0x80 (128)
> > max_hw_segments: 0x80 (128)
> > hardsect_size: 0x200 (512)
> > max_segment_size: 0x10000 (65536)
> > seg_boundary_mask: 0xffffffff
>
> that is the key here.
>
> > dma_alignment: 0x1ff (511)
>
> So to recap, aic7xxx will never see a request that exceeds one of the
> above values. Total request size will always be equal to or below 4MiB,
> less than or equal to 128 segments, and will never cross a 4GB memory
> boundary. Memory above pfn 0xfffff (4GB) will be bounced, but this could
> be because that's just the amount of memory the box has you dumped this
> info from.
>

The system I dumped the info from only has 256MB. SCSI calls
blk_queue_bounce_limit with the return value of
scsi_calculate_bounce_limit which takes the dma_mask set by the adapter.
Some adapters set this value based the adapters capabilities and
CONFIG_HIGHMEM64G, but the aic7xxx also checks the memsize.

My config on this system also has (CONFIG_HIGHMEM64G, CONFIG_HIGHMEM,
and CONFIG_X86_PAE) set.

-andmike

--
Michael Anderson
andmike@us.ibm.com

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/