lkml.org 
[lkml]   [2001]   [Feb]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [patch] 2.4.0, 2.4.0-ac12: APIC lock-ups
Manfred Spraul wrote:
>
> 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.
>

I found another workaround:
8390.c currently calls

outb_p(ENISR_ALL, e8390_base + EN0_IMR);
enable_irq(dev->irq);

and locks up after ~ 100 packets flood ping.

If I reorder these calls to

enable_irq(dev->irq);
outb_p(ENISR_ALL, e8390_base + EN0_IMR);
(and the correct spin_lock()'s)

the lockup disappears.

But I have no idea how io_apic.c could prevent lockups.

Playing with the trigger mode is not 100% reliable - I assume it kicks
the io apic only after several changes of the trigger mode bit. Maciej's
patch switches that bit twice during every start_tx operation and thus
doesn't lock up, my patch touches the redirection entry exactly once and
reliably locks up - even if I change trigger mode, polarity, delivery
mode and vector during enable_level_irq().

Any ideas?

--
Manfred
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 12:52    [W:0.086 / U:25.644 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site