Wrapper API for static bus_dma allocations
Konstantin Belousov
kostikbel at gmail.com
Fri Jan 30 15:21:57 UTC 2015
On Fri, Jan 30, 2015 at 09:56:31AM -0500, John Baldwin wrote:
> On 1/29/15 4:54 PM, Poul-Henning Kamp wrote:
> > --------
> > In message <2800970.jY4xzTy9Hz at ralph.baldwin.cx>, John Baldwin writes:
> >
> >> The bus_dma API to allocate a chunk of static DMA'able memory (e.g. for
> >> descriptor rings) can be a bit obtuse [...]
> >
> > Isn't it time we take a good hard stare at all of the bus_dma API,
> > and refactor it into something a lot more compact ?
>
> Given the amount of oddball hardware out there I don't think there is a
> lot you can cut out. The filter function might be something we can lose
> (and losing it would simplify the implementation), but all the other
> weird constraints are actually used by something AFAIK. I do think we
> can provide some simpler wrappers for some of the more common cases, but
> there will be some hardware for which those wrappers do not work.
>
> One suggestion Scott has had is to at least make it easier to extend the
> API by using getter/setter routines on the tag to work with tag
> attributes instead of passing them all in bus_dma_tag_create().
BTW, filter function is useless. It can deny specific bus address from
being used, but it does not provide the busdma implementation even a hint
what other address should be (tried to) used. In dmar busdma, I simply
ignored it. And there is no real users of filter in the tree.
More information about the freebsd-arch
mailing list