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/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to