Richard Spiegel has uploaded this change for review. ( https://review.coreboot.org/25107
Change subject: mb/google/kahlee:Fix IRQ routing ......................................................................
mb/google/kahlee:Fix IRQ routing
Current IRQ tables (firmware and ACPI) are based in the assumption of a non-existent IOAPIC redirection table, which probably existed when the code was in UEFI environment. Coreboot does not work with redirection table, instead it relies on much simpler virtual wire. Therefor both table have to be fixed to use virtual wire.
BUG=b:74104946 TEST=Build and boot kahlee and grunt, verify that neither is broken. Someone else will need to verify if PCIe interrupt are working.
Change-Id: Ibb048d3e728dc562cb31b9ddd50bfd8fb032017e Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com --- M src/mainboard/google/kahlee/mainboard.c M src/mainboard/google/kahlee/variants/baseboard/include/baseboard/acpi/routing.asl 2 files changed, 39 insertions(+), 80 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/07/25107/1
diff --git a/src/mainboard/google/kahlee/mainboard.c b/src/mainboard/google/kahlee/mainboard.c index e82569e..e1f5915 100644 --- a/src/mainboard/google/kahlee/mainboard.c +++ b/src/mainboard/google/kahlee/mainboard.c @@ -43,16 +43,14 @@ * MP Tables. TODO: Make ACPI use these values too. */
-// TODO: Move these to board variant specific file -#if IS_ENABLED(CONFIG_BOARD_GOOGLE_KAHLEE) const u8 mainboard_picr_data[] = { - [0x00] = 0x03, 0x04, 0x05, 0x07, 0x0B, 0x0A, 0x1F, 0x1F, + [0x00] = 0x03, 0x04, 0x05, 0x07, 0x1F, 0x1F, 0x1F, 0x1F, [0x08] = 0xFA, 0xF1, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, [0x10] = 0x09, 0x1F, 0x1F, 0x03, 0x1F, 0x1F, 0x1F, 0x03, - [0x18] = 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x18] = 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, [0x20] = 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00, [0x28] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - [0x30] = 0x05, 0x04, 0x05, 0x04, 0x04, 0x05, 0x04, 0x05, + [0x30] = 0x05, 0x04, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, [0x38] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, [0x40] = 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, [0x48] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -65,15 +63,15 @@ };
const u8 mainboard_intr_data[] = { - [0x00] = 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + [0x00] = 0X14, 0x15, 0x16, 0x17, 0x1F, 0x1F, 0x1F, 0x1F, [0x08] = 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, - [0x10] = 0x09, 0x1F, 0x1F, 0x10, 0x1F, 0x1F, 0x1F, 0x10, + [0x10] = 0x09, 0x1F, 0x1F, 0x12, 0x1F, 0x1F, 0x1F, 0x13, [0x18] = 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, [0x20] = 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00, [0x28] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - [0x30] = 0x12, 0x11, 0x12, 0x11, 0x12, 0x11, 0x12, 0x00, + [0x30] = 0x0C, 0x0D, 0x12, 0x11, 0x0C, 0x0D, 0x12, 0x00, [0x38] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - [0x40] = 0x11, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x40] = 0x11, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, [0x48] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, [0x50] = 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, [0x58] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -82,45 +80,6 @@ [0x70] = 0x03, 0x0F, 0x06, 0x0E, 0x0A, 0x0B, 0x1F, 0x1F, [0x78] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; -#else -const u8 mainboard_picr_data[] = { - [0x00] = 0x03, 0x04, 0x05, 0x07, 0x0B, 0x1F, 0x1F, 0x1F, - [0x08] = 0xFA, 0xF1, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, - [0x10] = 0x09, 0x1F, 0x1F, 0x03, 0x1F, 0x1F, 0x1F, 0x03, - [0x18] = 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - [0x20] = 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00, - [0x28] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - [0x30] = 0x05, 0x04, 0x05, 0x04, 0x04, 0x05, 0x04, 0x05, - [0x38] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - [0x40] = 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - [0x48] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - [0x50] = 0x03, 0x04, 0x05, 0x07, 0x1F, 0x1F, 0x1F, 0x1F, - [0x58] = 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, - [0x60] = 0x1F, 0x1F, 0x07, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, - [0x68] = 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, - [0x70] = 0x03, 0x0F, 0x06, 0x0E, 0x0A, 0x0B, 0x1F, 0x1F, - [0x78] = 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, -}; - -const u8 mainboard_intr_data[] = { - [0x00] = 0x10, 0x11, 0x12, 0x13, 0x14, 0x1F, 0x16, 0x17, - [0x08] = 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, - [0x10] = 0x09, 0x1F, 0x1F, 0x10, 0x1F, 0x1F, 0x1F, 0x10, - [0x18] = 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, - [0x20] = 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00, - [0x28] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - [0x30] = 0x12, 0x11, 0x12, 0x11, 0x12, 0x11, 0x12, 0x00, - [0x38] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - [0x40] = 0x11, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - [0x48] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - [0x50] = 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, - [0x58] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - [0x60] = 0x1F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - [0x68] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - [0x70] = 0x03, 0x0F, 0x06, 0x0E, 0x0A, 0x0B, 0x1F, 0x1F, - [0x78] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#endif
/* * This table defines the index into the picr/intr_data tables for each diff --git a/src/mainboard/google/kahlee/variants/baseboard/include/baseboard/acpi/routing.asl b/src/mainboard/google/kahlee/variants/baseboard/include/baseboard/acpi/routing.asl index c61bc4bb..4bbb0fc 100644 --- a/src/mainboard/google/kahlee/variants/baseboard/include/baseboard/acpi/routing.asl +++ b/src/mainboard/google/kahlee/variants/baseboard/include/baseboard/acpi/routing.asl @@ -50,7 +50,7 @@ Package() { 0x0012FFFF, 0, INTC, 0 }, Package() { 0x0012FFFF, 1, INTB, 0 },
- /* Bus 0, Dev 10 Func 0 - USB: xHCI */ + /* Bus 0, Dev 16 Func 0 - USB: xHCI */ Package() { 0x0010FFFF, 0, INTC, 0 }, Package() { 0x0010FFFF, 1, INTB, 0 },
@@ -65,14 +65,14 @@ /* Bus 0, Dev 0 - F15 Host Controller */
/* Bus 0, Dev 1 - PCI Bridge for Internal Graphics(IGP) */ - Package() { 0x0001FFFF, 0, 0, 43 }, - Package() { 0x0001FFFF, 1, 0, 40 }, + Package() { 0x0001FFFF, 0, 0, 17 }, + Package() { 0x0001FFFF, 1, 0, 18 },
/* Bus 0, Dev 2 - PCIe Bridges */ - Package() { 0x0002FFFF, 0, 0, 44 }, - Package() { 0x0002FFFF, 1, 0, 45 }, - Package() { 0x0002FFFF, 2, 0, 46 }, - Package() { 0x0002FFFF, 3, 0, 47 }, + Package() { 0x0002FFFF, 0, 0, 26 }, + Package() { 0x0002FFFF, 1, 0, 23 }, + Package() { 0x0002FFFF, 2, 0, 24 }, + Package() { 0x0002FFFF, 3, 0, 25 },
/* SB devices in APIC mode */ /* Bus 0, Dev 20 - F0:SMBus/ACPI;F3:LPC;F7:SD */ @@ -82,15 +82,15 @@ Package() { 0x0014FFFF, 3, 0, 19 },
/* Bus 0, Dev 18 Func 0 - USB: EHCI */ - Package() { 0x0012FFFF, 0, 0, 18 }, - Package() { 0x0012FFFF, 1, 0, 17 }, + Package() { 0x0012FFFF, 0, 0, 12 }, + Package() { 0x0012FFFF, 1, 0, 13 },
/* Bus 0, Dev 10 Func 0 - USB: xHCI */ - Package() { 0x0010FFFF, 0, 0, 18}, - Package() { 0x0010FFFF, 1, 0, 17}, + Package() { 0x0010FFFF, 0, 0, 12}, + Package() { 0x0010FFFF, 1, 0, 13},
/* Bus 0, Dev 17 - SATA controller */ - Package() { 0x0011FFFF, 0, 0, 19 }, + Package() { 0x0011FFFF, 0, 0, 5 }, })
@@ -105,10 +105,10 @@ Name (APS4, Package() { /* PCIe slot - Hooked to PCIe slot 4 */ - Package() { 0x0000FFFF, 0, 0, 24 }, - Package() { 0x0000FFFF, 1, 0, 25 }, - Package() { 0x0000FFFF, 2, 0, 26 }, - Package() { 0x0000FFFF, 3, 0, 27 }, + Package() { 0x0000FFFF, 0, 0, 0 }, + Package() { 0x0000FFFF, 1, 0, 1 }, + Package() { 0x0000FFFF, 2, 0, 2 }, + Package() { 0x0000FFFF, 3, 0, 3 }, })
/* GPP 1 */ @@ -121,10 +121,10 @@ }) Name (APS5, Package() { - Package() { 0x0000FFFF, 0, 0, 28 }, - Package() { 0x0000FFFF, 1, 0, 29 }, - Package() { 0x0000FFFF, 2, 0, 30 }, - Package() { 0x0000FFFF, 3, 0, 31 }, + Package() { 0x0000FFFF, 0, 0, 8 }, + Package() { 0x0000FFFF, 1, 0, 9 }, + Package() { 0x0000FFFF, 2, 0, 10 }, + Package() { 0x0000FFFF, 3, 0, 11 }, })
/* GPP 2 */ @@ -137,10 +137,10 @@ }) Name (APS6, Package() { - Package() { 0x0000FFFF, 0, 0, 32 }, - Package() { 0x0000FFFF, 1, 0, 33 }, - Package() { 0x0000FFFF, 2, 0, 34 }, - Package() { 0x0000FFFF, 3, 0, 35 }, + Package() { 0x0000FFFF, 0, 0, 16 }, + Package() { 0x0000FFFF, 1, 0, 17 }, + Package() { 0x0000FFFF, 2, 0, 18 }, + Package() { 0x0000FFFF, 3, 0, 19 }, })
/* GPP 3 */ @@ -153,10 +153,10 @@ }) Name (APS7, Package() { - Package() { 0x0000FFFF, 0, 0, 36 }, - Package() { 0x0000FFFF, 1, 0, 37 }, - Package() { 0x0000FFFF, 2, 0, 38 }, - Package() { 0x0000FFFF, 3, 0, 39 }, + Package() { 0x0000FFFF, 0, 0, 24 }, + Package() { 0x0000FFFF, 1, 0, 25 }, + Package() { 0x0000FFFF, 2, 0, 26 }, + Package() { 0x0000FFFF, 3, 0, 27 }, })
/* GPP 4 */ @@ -168,8 +168,8 @@ }) Name (APS8, Package() { - Package() { 0x0000FFFF, 0, 0, 40 }, - Package() { 0x0000FFFF, 1, 0, 41 }, - Package() { 0x0000FFFF, 2, 0, 42 }, - Package() { 0x0000FFFF, 3, 0, 43 }, + Package() { 0x0000FFFF, 0, 0, 0 }, + Package() { 0x0000FFFF, 1, 0, 1 }, + Package() { 0x0000FFFF, 2, 0, 2 }, + Package() { 0x0000FFFF, 3, 0, 3 }, })