Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 Jan 2015 17:21:50 +0200
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        Poul-Henning Kamp <phk@phk.freebsd.dk>, 'freebsd-arch' <freebsd-arch@freebsd.org>
Subject:   Re: Wrapper API for static bus_dma allocations
Message-ID:  <20150130152150.GX42409@kib.kiev.ua>
In-Reply-To: <54CB9B9F.50905@FreeBSD.org>
References:  <2800970.jY4xzTy9Hz@ralph.baldwin.cx> <67604.1422568494@critter.freebsd.dk> <54CB9B9F.50905@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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@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.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150130152150.GX42409>