Interrupt storm on acpi0 occurred after madt.c change
John Baldwin
jhb at FreeBSD.org
Fri Feb 6 11:25:21 PST 2004
On Thursday 05 February 2004 06:19 pm, Nate Lawson wrote:
> It should work fine in Linux. mp_config_ioapic_for_sci() in
> arch/i386/kernel/mpparse.c has an exception for Tyans:
>
> /*
> * Although the ACPI spec says that the SCI should be level/low
> * don't reprogram it unless there is an explicit MADT OVR entry
> * instructing us to do so -- otherwise we break Tyan boards which
> * have the SCI wired edge/high but no MADT OVR.
> */
>
> This is for the case where there is no source override in the MADT for the
> interrupt defined as ACPI_FADT->sci_int.
The problem is that these motherboards _do_ have an MADT override entry. Even
worse, I have seen different motherboards (some Tyan, some non-Tyan) that
both have the exact same MADT override entry that maps IRQ 9 to interrupt 20
with active-hi polarity and level trigger. Now, on the !Tyan motherboards,
using those params results in an interrupt storm, so I force the polarity to
active-lo (on these motherboards, another PCI device such as fxp0 also uses
IRQ 20). On the Tyan motherboards, the MADT entry is _identical_, but it
storms if I set the polarity to low but works if it uses the bogus setting of
active-hi (but with level trigger). The Tyan motherboards do not seem to
share IRQ 20 with a PCI device, but I can't tell if a PCI device uses IRQ 20
in the MADT parser. It's a big mess, as I have two different vendors using
the same exact MADT entry both with a bogus polarity, and one wants hte bogus
polarity and one wants the normal polarity (i.e. use active-lo with level
trigger).
--
John Baldwin <jhb at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve" = http://www.FreeBSD.org
More information about the freebsd-current
mailing list