Call for testing and review, busdma changes

Jeff Roberson jroberson at
Sat Dec 8 18:52:41 UTC 2012


I have a relative large patch that reforms the busdma API so that new 
types may be added without modifying every architecture's 
busdma_machdep.c.  It does this by unifying the bus_dmamap_load_buffer() 
routines so that they may be called from MI code.  The MD busdma is then 
given a chance to do any final processing in the complete() callback. 
This patch also contains cam changes to unify the bus_dmamap_load* 
handling in cam drivers.

The arm and mips implementations saw the largest changes since they have 
to track virtual addresses for sync().  Previously this was done in a type 
specific way.  Now it is done in a generic way by recording the list of 
virtuals in the map.

I have verified that this patch passes make universe which includes 
several kernel builds from each architecture.  I suspect that if I broke 
anything your machine simply won't boot or will throw I/O errors.  There 
is little subtlety, it is mostly refactoring.

The next step is to allow for dma loading of physical addresses.  This 
will permit unmapped I/O.  Which is a significant performance optimization 
targeted for 10.0.

Many thanks for your assistance.  Any review feedback is also appreciated.


More information about the freebsd-arm mailing list