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

Reply via email to