Gérard Roudier wrote: > > So, why not using a pure software flag in memory and only tampering the > things if the offending interrupt is actually delivered ? If the given > interrupt is delivered and the software mask is set we could simply do: > > - MASK the given interrupt > - EOI it. > - return > Good idea. I implemented it, and it was a full success: not it always locks up :-( If I apply the attached patch, then I get a lockup after ~ 100 packets flood ping. I've also attached the dmesg print. I know that startup is currently wrong (must set trigger to level), but that doesn't matter since I only ifup once. But I think we can change the bug description: If an io apic io redirection entry is unmasked while the irq pin is active, then the io apic sends out the interrupt as edge triggered, but nevertheless sets the IRR bit. In a second test run I checked the TMR bit in the local apics: the bit on the cpu that received the last interrupt is really 0. I'll not try a 2 step enable: * unmask. * io_apic_sync() * set trigger mode to level. -- Manfred