Messages in this thread | | | Date | Tue, 30 Dec 2003 19:46:44 -0200 (BRST) | From | Marcelo Tosatti <> | Subject | no DRQ after issuing WRITE was Re: 2.4.23-uv3 patch set released |
| |
Daniel, Steve,
Linus believes the reason for the "no DRQ after issuing WRITE" (and further problems caused by it) is the too small timeout used in ide_wait_stat().
Can you guys please change this line in include/linux/ide.h
#define WAIT_DRQ (5*HZ/100) /* 50msec - spec allows up to 20ms */
to
#define WAIT_DRQ (5*HZ/50)
And check if that makes the problem go away?
On Tue, 30 Dec 2003, Linus Torvalds wrote:
> I suspect that anything in IDE that uses that idiotic "local_irq_set()" > macro is just broken, and should be rewritten to explicitly enable > interrupts. As it is, the code is just incredibly _strange_, and it > actually enables interrupts at all the wrong places. > > Anyway, in ide_wait_stat(), the "timeout" value is always either > "WAIT_DRQ" (5*HZ/100) or it is "WAIT_READY" (3*HZ/100). And look at > WAIT_READY a bit more: > > #if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE) > #define WAIT_READY (5*HZ) /* 5sec - some laptops are very slow */ > #else > #define WAIT_READY (3*HZ/100) /* 30msec - should be instantaneous */ > #endif /* CONFIG_APM || CONFIG_APM_MODULE */ > > I bet that the _real_ problem is this. That "3*HZ/100" value is just too > damn short. It has already been increased to 5*HZ for anything that has > APM enabled, but anybody who doesn't use APM gets a _really_ short > timeout. > > My suggestion: change the non-APM timeout to something much larger. Make > it ten times bigger, rather than leaving it at a value that us so small > that a single interrupt could make a difference.. > > In fact, right now a single timer interrupt on 2.4.x is the difference > between waiting 20ms and 30ms. That's a _big_ relative difference.
Small correction: people are not hitting the WAIT_READY (they are hitting the problem from ide-disk.c, which uses WAIT_DRQ). But still...
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |