Comment 24 for bug 1440072

Revision history for this message
Joseph Salisbury (jsalisbury) wrote :

Feedback and update to the upstream bug:

"The ACPI MADT table includes an interrupt source overridden entry for ACPI SCI:
[236h 0566 1] Subtable Type : 02 <Interrupt Source Override>
[237h 0567 1] Length : 0A
[238h 0568 1] Bus : 00
[239h 0569 1] Source : 09
[23Ah 0570 4] Interrupt : 00000009
[23Eh 0574 2] Flags (decoded below) : 000D
                                   Polarity : 1
                               Trigger Mode : 3
That means ACPI SCI interrupt(Interrupt : 00000009) works in
level(Trigger Mode : 3), high(Polarity : 1) mode.
For more information, please refer to Table 5-50 in ACPI spec 5.a.

And in DSDT table, we have _PRT method to define PCI interrupts, which eventually goes to:
        Name (PRSA, ResourceTemplate ()
        {
            IRQ (Level, ActiveLow, Shared, )
                {3,4,5,7,9,10,11,12,14,15}
        })
        Name (PRSB, ResourceTemplate ()
        {
            IRQ (Level, ActiveLow, Shared, )
                {3,4,5,7,9,10,11,12,14,15}
        })
        Name (PRSC, ResourceTemplate ()
        {
            IRQ (Level, ActiveLow, Shared, )
                {3,4,5,7,9,10,11,12,14,15}
        })
        Name (PRSD, ResourceTemplate ()
        {
            IRQ (Level, ActiveLow, Shared, )
                {3,4,5,7,9,10,11,12,14,15}
        })
which means it's also possible to use IRQ9 for PCI interrupt, but works in
Level, ActiveLow mode. And this conflicts with ACPI SCI definition.

So it's an ACPI BIOS bug. There may several ways out here:
1) Change ACPI SCI IRQ working mode to level, low.
2) Exclude IRQ9 from Interrupt Link Device A-D
3) Use acpi_sci=low to override BIOS configuration.
4) revert the patch
Thanks!
Gerry"