patch-2.4.25 linux-2.4.25/drivers/ide/ide-iops.c
Next file: linux-2.4.25/drivers/ide/ide-proc.c
Previous file: linux-2.4.25/drivers/ide/Config.in
Back to the patch index
Back to the overall index
- Lines: 16
- Date:
2004-02-18 05:36:31.000000000 -0800
- Orig file:
linux-2.4.24/drivers/ide/ide-iops.c
- Orig date:
2003-11-28 10:26:20.000000000 -0800
diff -urN linux-2.4.24/drivers/ide/ide-iops.c linux-2.4.25/drivers/ide/ide-iops.c
@@ -666,6 +666,15 @@
timeout += jiffies;
while ((stat = hwif->INB(IDE_STATUS_REG)) & BUSY_STAT) {
if (time_after(jiffies, timeout)) {
+ /*
+ * One last read after the timeout in case
+ * heavy interrupt load made us not make any
+ * progress during the timeout..
+ */
+ stat = hwif->INB(IDE_STATUS_REG);
+ if (!(stat & BUSY_STAT))
+ break;
+
local_irq_restore(flags);
*startstop = DRIVER(drive)->error(drive, "status timeout", stat);
return 1;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)