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 --- 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)) } - } }
/****************************************************************
On 08/07/12 15:01, 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
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)) }
}}
/****************************************************************
Reviewed-by: Laszlo Ersek lersek@redhat.com
Thanks! Laszlo
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.
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
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),
I get an error (missing comma?):
out/acpi-dsdt.dsl.i 43: Package() { 0x0002ffff, 0, LNKB, 0 }, Package() { 0x0002ffff, 1, LNKC, 0 }, Package() { 0x0002ffff, 2, LNKD, 0 }, Package() { 0x0002ffff, 3, LNKA, 0 }, ,, PW32, AddressRangeMemory, TypeStatic) Error 4096 - ^ syntax error, unexpected PARSEOP_PACKAGE, expecting ',' or '}'
-Kevin
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.
I fixed the missing comma and committed this patch.
-Kevin