Re: eth*: transmit timed out since .27

From: Maciej W. Rozycki
Date: Mon Aug 16 2004 - 18:44:34 EST


On Tue, 17 Aug 2004, Oliver Feiler wrote:

> MIS: 8
>
> What exactly is MIS? Something like "interrupt occured, but I have no
> idea what device caused it"? I don't know much about it, but it's always
> >0 when the problem happens.

It's a trigger mode MISmatch. It only happens for level-triggered
interrupts and the problem is they get recorded as edge-triggered ones in
the receiving local APIC. The two interrupt trigger modes require the
hardware to perform different actions when the software interrupt handler
concludes and such a mismatch would lead to a lock-up of the affected
line. Specifically, the local APIC involved sends an End Of Interrupt
(EOI) message to the originating I/O APIC for level-triggered interrupts
and for edge-triggered interrupts nothing is sent. Fortunately just
before sending the final ACK to the hardware at the conclusion of the
handler we can detect that the trigger mode recorded by the local APIC
disagrees with the setup of the corresponding I/O APIC line and if that
happens we execute an (expensive) unlock action at the I/O APIC so that it
resets its logic for the input as if it received an EOI message from a
local APIC for a level-triggered interrupt.

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