lkml.org 
[lkml]   [1999]   [Sep]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
SubjectRe: IDE DMA/irq timeouts
Date
From
> To clarify: we didn't experience the ide bus resets on 2.2.9 and below,
> but we do on 2.2.10 and above.

Ok the only IDE change that should matter after 2.2.10 is the one attached
below. If so then 2.2.12 with that patch reversed should behave

> Both were built with CONFIG_IDEDMA_AUTO. Previous kernels to 2.2.10 were
> also built with this option.

Ok


Alan


diff -u --recursive --new-file v2.2.9/linux/drivers/block/ide.c linux/drivers/block/ide.c
--- v2.2.9/linux/drivers/block/ide.c Thu May 13 23:10:29 1999
+++ linux/drivers/block/ide.c Sun Jun 13 10:40:27 1999
@@ -926,6 +927,7 @@
int ide_wait_stat (ide_drive_t *drive, byte good, byte bad, unsigned long timeout)
{
byte stat;
+ int i;
unsigned long flags;

udelay(1); /* spec allows drive 400ns to assert "BUSY" */
@@ -942,9 +944,18 @@
}
__restore_flags(flags); /* local CPU only */
}
- udelay(1); /* allow status to settle, then read it again */
- if (OK_STAT((stat = GET_STAT()), good, bad))
- return 0;
+ /*
+ * Allow status to settle, then read it again.
+ * A few rare drives vastly violate the 400ns spec here,
+ * so we'll wait up to 10usec for a "good" status
+ * rather than expensively fail things immediately.
+ * This fix courtesy of Matthew Faupel & Niccolo Rigacci.
+ */
+ for (i = 0; i < 10; i++) {
+ udelay(1);
+ if (OK_STAT((stat = GET_STAT()), good, bad))
+ return 0;
+ }
ide_error(drive, "status error", stat);
return 1;
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:54    [W:0.036 / U:0.236 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site