Russell King - ARM Linux wrote: > Basically... don't do this, you're asking for problems. > > Documentation/DMA-API.txt says: > > | Warnings: Memory coherency operates at a granularity called the cache > | line width. In order for memory mapped by this API to operate > | correctly, the mapped region must begin exactly on a cache line > | boundary and end exactly on one (to prevent two separately mapped > | regions from sharing a single cache line). Since the cache line size > | may not be known at compile time, the API will not enforce this > | requirement. Therefore, it is recommended that driver writers who > | don't take special care to determine the cache line size at run time > | only map virtual regions that begin and end on page boundaries (which > | are guaranteed also to be cache line boundaries). > > Basically, the DMA API operates at cache line granularity and only expects > a _single_ buffer to be mapped per unit of granularity at any one time. > Thank you, that's very clear. Unfortunately I'm not the one doing this - anything that goes through usb_control_msg() could cause this since that function takes a pointer for the data buffer and internally kmalloc's the setup buffer. Martin -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html