> pci_{,un}map_single, so they should work.  I suspect all real non-PCI
> USB controllers are either on a bus that can access all main memory or
> are specific to an architecture that is known to allocate the kernel

Wrong already. x86 with more than 4Gb of memory

> controllers (i.e., usually PCI).  Kernel stacks are typically only
> 4kB, and there are typically only 100 or so processes.  Even on a

8-16K

> the control pipe, not just USB).  These busses are getting much faster
> relative to CPU's and their performance is becoming more of an issue
> as people put more demanding hardware across them, like disk, network,
> and digital video.  I think this usage is common enough and important
> enough that its worth optimizing some kernel programming interfaces
> for it, especially since all architectures currently appear to support
> this optimization anyhow.

I've seen no evidence of this. None at all. 

The DMA mapping document also says

|       This rule also means that you may not use kernel image addresses
|       (ie. items in the kernel's data/text/bss segment, or your driver's)
|       nor may you use kernel stack addresses for DMA.  Both of these items
|       might be mapped somewhere entirely different than the rest of physical
|       memory.

> have the CPU read it.  This requires pointing the USB controllers at
> kernel read only data.  For packets that have to be computed at run

kernel read only data in a module is vmalloc space. Your data might even be
split across two pages

>       1. Identify one real hardware configuration where the USB
>          controller cannot read the kernel stack or kernel read-only

IBM PC

Alan

_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to