Increasing MAXPHYS

John Baldwin 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 
that
> > > 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.

-- 
John Baldwin


More information about the freebsd-current mailing list