Call for testing and review, busdma changes
freebsd at damnhippie.dyndns.org
Sun Dec 30 18:21:38 UTC 2012
On Mon, 2012-12-24 at 22:13 -0500, Scott Long wrote:
> >>> Still unresolved is what to do about the remaining cases -- attempts to
> >>> do dma in arbitrary buffers not obtained from bus_dmamem_alloc() which
> >>> are not aligned and padded appropriately. There was some discussion a
> >>> while back, but no clear resolution. I decided not to get bogged down
> >>> by that fact and to fix the mbuf and allocated-buffer situations that we
> >>> know how to deal with for now.
> Why would these allocations not be handled as normal dynamic buffers
> would with bus_dmamap_load()?
That's my point -- for "normal dynamic buffers" (that is, they weren't
obtained from bus_dmamem_alloc() and they aren't mbufs) which can have
arbitrary alignment and padding in relation to cache line boundaries --
we don't handle them correctly now unless they're accidentally already
aligned and sized to the right boundaries. What's unresolved is how to
handle them correctly if they're not aligned/padded, that is, what to do
about them that avoids needing a partial cacheline flush at sync time.
More information about the freebsd-arm