jhb at freebsd.org
Mon Mar 22 14:51:04 UTC 2010
On Monday 22 March 2010 7:40:18 am Gary Jennejohn wrote:
> On Sun, 21 Mar 2010 19:03:56 +0200
> Alexander Motin <mav at FreeBSD.org> wrote:
> > Scott Long wrote:
> > > Are there non-CAM drivers that look at MAXPHYS, or that silently assume
> > > MAXPHYS will never be more than 128k?
> > That is a question.
> I only did a quick&dirty grep looking for MAXPHYS in /sys.
> Some drivers redefine MAXPHYS to be 512KiB. Some use their own local
> MAXPHYS which is usually 128KiB.
> Some look at MAXPHYS to figure out other things; the details escape me.
> There's one driver which actually uses 100*MAXPHYS for something, but I
> didn't check the details.
> Lots of them were non-CAM drivers AFAICT.
The problem is the drivers that _don't_ reference MAXPHYS. The driver author
at the time "knew" that MAXPHYS was 128k, so he did the MAXPHYS-dependent
calculation and just put the result in the driver (e.g. only supporting up to
32 segments (32 4k pages == 128k) in a bus dma tag as a magic number to
bus_dma_tag_create() w/o documenting that the '32' was derived from 128k or
what the actual hardware limit on nsegments is). These cannot be found by a
simple grep, they require manually inspecting each driver.
More information about the freebsd-current