Title: [8927] trunk/drivers/usb/host/isp1760-hcd.c: [#5873] Trunk kernel crashed when testing bonnie++ for usb1761 driver
Revision
8927
Author
hennerich
Date
2010-06-18 04:36:09 -0400 (Fri, 18 Jun 2010)

Log Message

[#5873] Trunk kernel crashed when testing bonnie++ for usb1761 driver

Fix BUG_ON(!skip_map) issue. When we busy wait in order to guarantee
ISP1760 timing requirements, we need to make sure that the previous
write 
actually drained the hardware.  
Add mmiowb()I/O write barrier before the ndelay() to ensure ordering of 
I/O space writes. This will make sure that writes
following the barrier will arrive after all previous writes.

Modified Paths

Diff

Modified: trunk/drivers/usb/host/isp1760-hcd.c (8926 => 8927)


--- trunk/drivers/usb/host/isp1760-hcd.c	2010-06-18 08:33:22 UTC (rev 8926)
+++ trunk/drivers/usb/host/isp1760-hcd.c	2010-06-18 08:36:09 UTC (rev 8927)
@@ -859,6 +859,7 @@
 	 * almost immediately. With ISP1761, this register requires a delay of
 	 * 195ns between a write and subsequent read (see section 15.1.1.3).
 	 */
+	mmiowb();
 	ndelay(195);
 	skip_map = isp1760_readl(hcd->regs + HC_ATL_PTD_SKIPMAP_REG);
 
@@ -900,6 +901,7 @@
 	 * almost immediately. With ISP1761, this register requires a delay of
 	 * 195ns between a write and subsequent read (see section 15.1.1.3).
 	 */
+	mmiowb();
 	ndelay(195);
 	skip_map = isp1760_readl(hcd->regs + HC_INT_PTD_SKIPMAP_REG);
 
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to