[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnumach patch (ide unexpected interrupt, hang, then irq timeout)
From: |
Samuel Thibault |
Subject: |
gnumach patch (ide unexpected interrupt, hang, then irq timeout) |
Date: |
Tue, 19 Jul 2005 05:27:04 +0200 |
User-agent: |
Mutt/1.5.9i-nntp |
Hi,
While running debian's gnumach 20050501-4 on qemu and some heavy IDE
disk load, I sometimes get an "unexpected interrupt" error, then
disk operations hang, and finally an "irq timeout" error occurs, and
things work again. I also sometimes observed the same behavior on the
real machine, though quite more rarely (but maybe Marcus can remember me
listening to my hard drive at lsm :) ).
Actually, in several places, the ide functions sends IDE orders _before_
setting the irq handler, and qemu seems to be fast to send the interrupt
back, this latter is hence unexpected that soon. Here is a patch
(patch-gnumach-ide) to correct this. It is needed when the unmask drive
field is set.
But in my case, the unmask field was not set... The errors I got were
also coming from a complementary bug:
The ide_intr() expects its caller to have disabled interrupts already,
this is expressed by the SA_INTERRUPT flag in the request_irq()
call. However, I tried and noticed that interrupts are _not_ disabled
by the caller. The gnumach interrupt handler i386/i386at/interrup.S does
not disable interrupts, and linux_intr() does not either. Here is a patch
(patch-gnumach-irq) to make linux_intr() care about that. I guess several
other device drivers will probably be happier with this bugfix.
Regards,
Samuel
patch-gnumach-ide
Description: Text document
patch-gnumach-irq
Description: Text document
- gnumach patch (ide unexpected interrupt, hang, then irq timeout),
Samuel Thibault <=