Re: ide_set_handler: timer already active

Geert Uytterhoeven (geert@thomas.kotnet.org)
Tue, 6 Apr 1999 21:30:01 +0200 (CEST)


On Mon, 5 Apr 1999, Gadi Oxman wrote:
> I think I see it; looks like start_request() in ide_do_request() resulted
> in a completion interrupt calling ide_do_request() again before we exited
> it. That completion interrupt decided to exit the driver now, and set a
> timer to wake us up later. Meanwhile, when we returned, ide_do_request()
> thought that it has just serviced a request which was completed immediately,
> without waiting for any interrupts at all, and we then went again to check
> if we can exit the driver, and set the sleep timer again..
>
> Does the following patch eliminate the warning messages?

Yes it does!

> If it helps, we need to verify that the irq is really masked in the
> interrupt controller while the handler is being called. This can also
> explain the 'eth0: Re-entering the interrupt handler' warnings from the
> ethernet driver.

Now `eth0: Re-entering the interrupt handler' is the only warning message
left...

> --- ide.c~ Fri Mar 26 03:13:28 1999
> +++ ide.c Mon Apr 5 21:16:47 1999
> @@ -1090,7 +1090,7 @@
> unsigned long io_flags;
>
> hwgroup->busy = 1;
> - while (hwgroup->handler == NULL) {
> + while (hwgroup->handler == NULL && hwgroup->busy) {
> spin_lock_irqsave(&io_request_lock, io_flags);
> drive = choose_drive(hwgroup);
> if (drive == NULL) {

Greetings,

Geert

--
Geert Uytterhoeven                   Geert.Uytterhoeven@thomas.kotnet.org
Linux/m68k on Amiga, Wavelets        http://www.thomas.kotnet.org/~geert/
KotNET@Thomas Network Administration -- Make your bed part of Cyberspace!!

- 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/