Call for testing and review, busdma changes
jroberson at jroberson.net
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