Re: [RFC] URBs and buffer management

Pete Zaitcev <[email protected]>
Newsgroups gmane.linux.usb.devel
Organization Red Hat, Inc.
Message-ID <[email protected]>
On Sun, 1 Jul 2007 21:02:11 -0700, David Brownell <[email protected]> wrote:

> As I understand it the actual mechanism is more like:  platforms
> always set up a chunk of memory as uncached, and always map that
> through the IOMMU.  Call that the DMA-{coherent,consistent} region.
> 
> Utilities like dma_alloc_coherent() -- and hence usb_buffer_alloc(),
> dma_pool_*(), and so on -- return memory from that region.
> 
> So the resources are *always* tied up; fixed overhead.  What's visible
> to drivers is that per-transfer buffer operations are not needed.

No, they are normal pages, only uncached. They don't have to be in a
single contiguous region virtually or physically. There's no fixed size
allocation for it (at least, not on every architecture). Look at
arch/sparc/kernel/ioport.c:pci_alloc_consistent for an example.

On Intel, what you write is true in a way, in case of swiotlb.
The swiotlb reserves a real chunk of memory (still cached though).
That memory remains unavailable to normal users regardless
of the number and size of I/Os currently active in the system.

-- Pete

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.