On Tue, 24 May 2005, Alan Stern wrote: > On x86 it won't make any difference, but for other architectures it's an > important distinction. The host controller might try to access locations > not present or not mapped to physical RAM, which would cause the sort of > errors you saw.
Well, IMHO one doesn't need an iommu-arch to run into trouble with invalid busmastering buffer, it's just less "silent" there ;-) FWIW, it did happen for me (long ago around 2.4.20) on i86 with UHCI hardware - probably the Intel PIIX4 one, but might have been Via as well. And I'm not sure whether it was usb-uhci or uhci(JE) or both. Exactly this "HC halted, very bad" error triggered by a static buffer: reproducible - and it disappeared after switching to kmalloc. IIRC the stack is not guaranteed to be mapped from physically continous pages, even on i86 (strictly speaking, it might be with 2.6 and 4KSTACKS). Not sure about bss/data sections. And unless I missed something, the coherency provision on i86 arch wouldn't help if a mapped buffer shared a cacheline with memory accessed by the cpu. If both were writing to the same place, snooping is not enough - it would need merging with sub-cacheline resolution. Btw, do you know whether the "HC halted" thing is caused by a signaled PCI error (like target abort) or due to the HC succesfully fetching (according to the PCI transaction) an invalid TD? Martin ------------------------------------------------------- SF.Net email is sponsored by: GoToMeeting - the easiest way to collaborate online with coworkers and clients while avoiding the high cost of travel and communications. There is no equipment to buy and you can meet as often as you want. Try it free.http://ads.osdn.com/?ad_id=7402&alloc_id=16135&op=click _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel