From: David Brownell <david-b@pacbell.net>
To: Andrew Morton <akpm@digeo.com>
Cc: "Adam J. Richter" <adam@yggdrasil.com>,
James.Bottomley@steeleye.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] generic device DMA (dma_pool update)
Date: Tue, 31 Dec 2002 15:23:43 -0800 [thread overview]
Message-ID: <3E1226FF.9010407@pacbell.net> (raw)
In-Reply-To: <3E121D28.47282D77@digeo.com>
>> Such a facility could be layered on top of your interface
>>perhaps by extending the mempool code to pass an extra parameter
>>around. If so, then you should think about arranging your interface
>>so that it could be driven with as little glue as possible by mempool.
>>
>
>
> What is that parameter? The size, I assume. To do that you'd
> need to create different pools for different allocation sizes.
In the other allocators it'd be the dma_addr_t for the memory
being returned ...
I don't think the mempool stuff needs that, see the fragments below.
> Bear in mind that mempool only makes sense with memory objects
> which have the special characteristic that "if you wait long enough,
> someone will free one". ie: BIOs, nfs requests, etc. Probably,
> DMA buffers fit into that picture as well.Inside the USB host controller drivers I think that mostly applies
to transfer descriptors (tds), which are freed when some other request
completes. An 8K buffer takes 1 (ehci), 2 (ohci) or 128 (uhci)
of those, and as you know scatterlists can queue quite a few pages.
I'd imagine mempool based td allocation might go like this; it should
be easy enough to slip into most of the HCDs:
void *mempool_alloc_td (int mem_flags, void *pool)
{
struct td *td;
dma_addr_t dma;
td = dma_pool_alloc (pool, mem_flags, &dma);
if (!td)
return td;
td->td_dma = dma; /* feed to the hardware */
... plus other init
return td;
}
void mempool_free_td (void *_td, void *pool)
{
struct td *td = _td;
dma_pool_free (pool, td, td->dma);
}
USB device drivers tend to either allocate and reuse one dma buffer
(kmalloc/kfree usage pattern) or use dma mapping ... so far.
- Dave
next prev parent reply other threads:[~2002-12-31 23:09 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-12-31 22:02 Adam J. Richter
2002-12-31 22:41 ` Andrew Morton
2002-12-31 23:23 ` David Brownell [this message]
2002-12-31 23:27 ` Andrew Morton
2002-12-31 23:44 ` David Brownell
2002-12-31 23:47 ` James Bottomley
2003-01-01 17:10 ` James Bottomley
2002-12-31 23:35 ` David Brownell
-- strict thread matches above, loose matches on Subject: below --
2003-01-02 22:07 Adam J. Richter
2003-01-03 0:20 ` Russell King
2003-01-03 4:50 ` David Brownell
2003-01-03 6:11 ` David Brownell
2003-01-03 6:46 ` David Brownell
2003-01-03 6:52 ` William Lee Irwin III
2003-01-02 17:04 Adam J. Richter
2003-01-02 4:13 Adam J. Richter
2003-01-02 16:41 ` James Bottomley
2003-01-02 18:26 ` David Brownell
2003-01-01 19:21 Adam J. Richter
2003-01-01 19:48 ` James Bottomley
2003-01-02 2:11 ` David Brownell
2003-01-01 0:02 Adam J. Richter
2002-12-31 23:38 Adam J. Richter
2002-12-27 21:40 [RFT][PATCH] generic device DMA implementation James Bottomley
2002-12-28 1:56 ` David Brownell
2002-12-30 23:11 ` [PATCH] generic device DMA (dma_pool update) David Brownell
2002-12-31 15:00 ` James Bottomley
2002-12-31 17:04 ` David Brownell
2002-12-31 17:23 ` James Bottomley
2002-12-31 18:11 ` David Brownell
2002-12-31 18:44 ` James Bottomley
2002-12-31 19:29 ` David Brownell
2002-12-31 19:50 ` James Bottomley
2002-12-31 21:17 ` David Brownell
2002-12-31 16:36 ` James Bottomley
2002-12-31 17:32 ` David Brownell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3E1226FF.9010407@pacbell.net \
--to=david-b@pacbell.net \
--cc=James.Bottomley@steeleye.com \
--cc=adam@yggdrasil.com \
--cc=akpm@digeo.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome