Re: SCSI aic7xxx driver: Initialization Failure over a kdump reboot

From: Lukasz Kosewski
Date: Thu Jan 06 2005 - 23:35:02 EST


Andrew Morton wrote:
looks like the following is happening:
the controller wants to send an irq (probably from previous life)
then suddenly the driver gets loaded
* which registers an irq handler
* which does pci_enable_device()
and .. the irq goes through. the irq handler just is not yet expecting this irq, so
returns "uh dunno not mine"
the kernel then decides to disable the irq on the apic level
and then the driver DOES need an irq during init
... which never happens.



yes, that's exactly what e100 was doing on my laptop last month. Fixed
that by arranging for the NIC to be reset before the call to
pci_set_master().

I noticed the exact same thing with a usb-uhci hub on a VIA MicroATX
board a month back. I rewrote the init sequence of the driver so that
it resets all of the hubs in the system first, and THEN registers their
interrupts.

This seems like a problem that CAN happen with level-triggered
interrupts. Us fixing it in individual drivers is not the solution; we
need a general solution.

I have an idea of something I might do for 2.6.11, but I doubt anyone
will actually agree with it. Say we keep a counter of how many times
interrupt x has been fired off since the last timer interrupt
(obviously, a timer interrupt resets the counter). Then we can pick an
arbitrary threshold for masking out this interrupt until another device
actually pines for it.

Or something. The point is, we need a general solution to the problem,
not poking about in every single driver trying to tie it down.

Luke Kosewski
Human Cannonball
Net Integration Technologies
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/