On Tue, Aug 07, 2012 at 03:01:29PM +0200, Paolo Bonzini wrote:
LNKS is a bit strange in that it reuses the same PIIX register as LNKA, but has a different interrupt. This means that the _CRS it returns will not be one of the possible resources from _PRS. This shows up in the Linux boot logs as
ACPI: PCI Interrupt Link [LNKS] (IRQs 9) *0
Instead of that, we can simply use a hardwired interrupt index.
Cc: Gleb Natapov gnatapov@redhat.com Cc: Laszlo Ersek lersek@redhat.com Signed-off-by: Paolo Bonzini pbonzini@redhat.com
Looks good to me.
src/acpi-dsdt.dsl | 16 ++++------------ 1 file modificato, 4 inserzioni(+), 12 rimozioni(-)
diff --git a/src/acpi-dsdt.dsl b/src/acpi-dsdt.dsl index 083e2be..66ca853 100644 --- a/src/acpi-dsdt.dsl +++ b/src/acpi-dsdt.dsl @@ -86,7 +86,10 @@ DefinitionBlock ( #define prt_slot3(nr) prt_slot(nr, LNKC, LNKD, LNKA, LNKB) prt_slot0(0x0000), /* Device 1 is power mgmt device, and can only use irq 9 */
prt_slot(0x0001, LNKS, LNKB, LNKC, LNKD),
Package() { 0x1ffff, 0, 0, 9 },
Package() { 0x1ffff, 1, LNKB, 0 },
Package() { 0x1ffff, 2, LNKC, 0 },
Package() { 0x1ffff, 3, LNKD, 0 } prt_slot2(0x0002), prt_slot3(0x0003), prt_slot0(0x0004),
@@ -653,17 +656,6 @@ DefinitionBlock ( Method (_CRS, 0, NotSerialized) { Return (IQCR(PRQ3)) } Method (_SRS, 1, NotSerialized) { SETIRQ(PRQ3, Arg0) } }
Device(LNKS) {
Name(_HID, EISAID("PNP0C0F")) // PCI interrupt link
Name(_UID, 5)
Name(_PRS, ResourceTemplate() {
Interrupt (, Level, ActiveHigh, Shared)
{ 9 }
})
Method (_STA, 0, NotSerialized) { Return (IQST(PRQ0)) }
Method (_DIS, 0, NotSerialized) { DISIRQ(PRQ0) }
Method (_CRS, 0, NotSerialized) { Return (IQCR(PRQ0)) }
}}
/****************************************************************
1.7.11.2
-- Gleb.