[Top][All Lists]

[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


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.


Attachment: patch-gnumach-ide
Description: Text document

Attachment: patch-gnumach-irq
Description: Text document

reply via email to

[Prev in Thread] Current Thread [Next in Thread]