Felix Held has submitted this change. ( https://review.coreboot.org/c/coreboot/+/55571 )
Change subject: soc/amd: Use ioapic helper functions ......................................................................
soc/amd: Use ioapic helper functions
Calling setup_ioapic() was only correct for the IOAPIC routing GSI 0..15 that mimic legacy PIC IRQs.
Change-Id: Ifdacc61b72f461ec6bea334fa06651c09a9695d6 Signed-off-by: Kyösti Mälkki kyosti.malkki@gmail.com Reviewed-on: https://review.coreboot.org/c/coreboot/+/55571 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Angel Pons th3fanbus@gmail.com Reviewed-by: Felix Held felix-coreboot@felixheld.de --- M src/soc/amd/cezanne/acpi.c M src/soc/amd/cezanne/root_complex.c M src/soc/amd/common/block/lpc/lpc.c M src/soc/amd/glinda/acpi.c M src/soc/amd/glinda/root_complex.c M src/soc/amd/mendocino/acpi.c M src/soc/amd/mendocino/root_complex.c M src/soc/amd/morgana/acpi.c M src/soc/amd/morgana/root_complex.c M src/soc/amd/picasso/acpi.c M src/soc/amd/picasso/root_complex.c M src/soc/amd/stoneyridge/acpi.c M src/soc/amd/stoneyridge/northbridge.c 13 files changed, 41 insertions(+), 31 deletions(-)
Approvals: build bot (Jenkins): Verified Felix Held: Looks good to me, approved Angel Pons: Looks good to me, but someone else must approve
diff --git a/src/soc/amd/cezanne/acpi.c b/src/soc/amd/cezanne/acpi.c index 934547d..189e84e 100644 --- a/src/soc/amd/cezanne/acpi.c +++ b/src/soc/amd/cezanne/acpi.c @@ -26,11 +26,10 @@ /* create all subtables for processors */ current = acpi_create_madt_lapics(current);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current, - FCH_IOAPIC_ID, IO_APIC_ADDR, 0); + current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, IO_APIC_ADDR);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current, - GNB_IOAPIC_ID, GNB_IO_APIC_ADDR, IO_APIC_INTERRUPTS); + current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, + GNB_IO_APIC_ADDR);
/* PIT is connected to legacy IRQ 0, but IOAPIC GSI 2 */ current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)current, diff --git a/src/soc/amd/cezanne/root_complex.c b/src/soc/amd/cezanne/root_complex.c index 31c2e1a..81b2b96 100644 --- a/src/soc/amd/cezanne/root_complex.c +++ b/src/soc/amd/cezanne/root_complex.c @@ -172,7 +172,7 @@
static void root_complex_init(struct device *dev) { - setup_ioapic((u8 *)GNB_IO_APIC_ADDR, GNB_IOAPIC_ID); + register_new_ioapic((u8 *)GNB_IO_APIC_ADDR); }
static void acipgen_dptci(void) diff --git a/src/soc/amd/common/block/lpc/lpc.c b/src/soc/amd/common/block/lpc/lpc.c index 26e0c26..5633d8f 100644 --- a/src/soc/amd/common/block/lpc/lpc.c +++ b/src/soc/amd/common/block/lpc/lpc.c @@ -38,7 +38,7 @@ static void fch_ioapic_init(void) { fch_enable_ioapic_decode(); - setup_ioapic(VIO_APIC_VADDR, FCH_IOAPIC_ID); + register_new_ioapic_gsi0(VIO_APIC_VADDR); }
static void lpc_init(struct device *dev) diff --git a/src/soc/amd/glinda/acpi.c b/src/soc/amd/glinda/acpi.c index 5a219cb..85430b9 100644 --- a/src/soc/amd/glinda/acpi.c +++ b/src/soc/amd/glinda/acpi.c @@ -29,11 +29,10 @@ /* create all subtables for processors */ current = acpi_create_madt_lapics(current);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current, - FCH_IOAPIC_ID, IO_APIC_ADDR, 0); + current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, IO_APIC_ADDR);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current, - GNB_IOAPIC_ID, GNB_IO_APIC_ADDR, IO_APIC_INTERRUPTS); + current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, + GNB_IO_APIC_ADDR);
/* PIT is connected to legacy IRQ 0, but IOAPIC GSI 2 */ current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)current, diff --git a/src/soc/amd/glinda/root_complex.c b/src/soc/amd/glinda/root_complex.c index 04d0599..5cc88f1 100644 --- a/src/soc/amd/glinda/root_complex.c +++ b/src/soc/amd/glinda/root_complex.c @@ -187,7 +187,7 @@
static void root_complex_init(struct device *dev) { - setup_ioapic((u8 *)GNB_IO_APIC_ADDR, GNB_IOAPIC_ID); + register_new_ioapic((u8 *)GNB_IO_APIC_ADDR); }
static void acipgen_dptci(void) diff --git a/src/soc/amd/mendocino/acpi.c b/src/soc/amd/mendocino/acpi.c index 779ea4e..b867930 100644 --- a/src/soc/amd/mendocino/acpi.c +++ b/src/soc/amd/mendocino/acpi.c @@ -28,11 +28,10 @@ /* create all subtables for processors */ current = acpi_create_madt_lapics(current);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current, - FCH_IOAPIC_ID, IO_APIC_ADDR, 0); + current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, IO_APIC_ADDR);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current, - GNB_IOAPIC_ID, GNB_IO_APIC_ADDR, IO_APIC_INTERRUPTS); + current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, + GNB_IO_APIC_ADDR);
/* PIT is connected to legacy IRQ 0, but IOAPIC GSI 2 */ current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)current, diff --git a/src/soc/amd/mendocino/root_complex.c b/src/soc/amd/mendocino/root_complex.c index abc49cf..0d24a25 100644 --- a/src/soc/amd/mendocino/root_complex.c +++ b/src/soc/amd/mendocino/root_complex.c @@ -187,7 +187,7 @@
static void root_complex_init(struct device *dev) { - setup_ioapic((u8 *)GNB_IO_APIC_ADDR, GNB_IOAPIC_ID); + register_new_ioapic((u8 *)GNB_IO_APIC_ADDR); }
static void acipgen_dptci(void) diff --git a/src/soc/amd/morgana/acpi.c b/src/soc/amd/morgana/acpi.c index 945dc54..5eb21ff 100644 --- a/src/soc/amd/morgana/acpi.c +++ b/src/soc/amd/morgana/acpi.c @@ -29,11 +29,10 @@ /* create all subtables for processors */ current = acpi_create_madt_lapics(current);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current, - FCH_IOAPIC_ID, IO_APIC_ADDR, 0); + current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, IO_APIC_ADDR);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current, - GNB_IOAPIC_ID, GNB_IO_APIC_ADDR, IO_APIC_INTERRUPTS); + current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, + GNB_IO_APIC_ADDR);
/* PIT is connected to legacy IRQ 0, but IOAPIC GSI 2 */ current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)current, diff --git a/src/soc/amd/morgana/root_complex.c b/src/soc/amd/morgana/root_complex.c index 10e5415..5a1a4ad 100644 --- a/src/soc/amd/morgana/root_complex.c +++ b/src/soc/amd/morgana/root_complex.c @@ -187,7 +187,7 @@
static void root_complex_init(struct device *dev) { - setup_ioapic((u8 *)GNB_IO_APIC_ADDR, GNB_IOAPIC_ID); + register_new_ioapic((u8 *)GNB_IO_APIC_ADDR); }
static void acipgen_dptci(void) diff --git a/src/soc/amd/picasso/acpi.c b/src/soc/amd/picasso/acpi.c index a8639eb..2af6459 100644 --- a/src/soc/amd/picasso/acpi.c +++ b/src/soc/amd/picasso/acpi.c @@ -33,11 +33,10 @@ /* create all subtables for processors */ current = acpi_create_madt_lapics(current);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current, - FCH_IOAPIC_ID, IO_APIC_ADDR, 0); + current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, IO_APIC_ADDR);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current, - GNB_IOAPIC_ID, GNB_IO_APIC_ADDR, IO_APIC_INTERRUPTS); + current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, + GNB_IO_APIC_ADDR);
/* PIT is connected to legacy IRQ 0, but IOAPIC GSI 2 */ current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)current, diff --git a/src/soc/amd/picasso/root_complex.c b/src/soc/amd/picasso/root_complex.c index c662320..9af9c0a 100644 --- a/src/soc/amd/picasso/root_complex.c +++ b/src/soc/amd/picasso/root_complex.c @@ -169,7 +169,7 @@
static void root_complex_init(struct device *dev) { - setup_ioapic((u8 *)GNB_IO_APIC_ADDR, GNB_IOAPIC_ID); + register_new_ioapic((u8 *)GNB_IO_APIC_ADDR); }
static void acipgen_dptci(void) diff --git a/src/soc/amd/stoneyridge/acpi.c b/src/soc/amd/stoneyridge/acpi.c index d6f7048..20221d2 100644 --- a/src/soc/amd/stoneyridge/acpi.c +++ b/src/soc/amd/stoneyridge/acpi.c @@ -29,11 +29,9 @@ current = acpi_create_madt_lapics(current);
/* Write Kern IOAPIC, only one */ - current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current, - FCH_IOAPIC_ID, IO_APIC_ADDR, 0); + current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, IO_APIC_ADDR);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current, - GNB_IOAPIC_ID, IO_APIC2_ADDR, 24); + current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, IO_APIC2_ADDR);
/* PIT is connected to legacy IRQ 0, but IOAPIC GSI 2 */ current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)current, diff --git a/src/soc/amd/stoneyridge/northbridge.c b/src/soc/amd/stoneyridge/northbridge.c index 7e93896..3960a39 100644 --- a/src/soc/amd/stoneyridge/northbridge.c +++ b/src/soc/amd/stoneyridge/northbridge.c @@ -164,7 +164,7 @@
static void northbridge_init(struct device *dev) { - setup_ioapic((u8 *)IO_APIC2_ADDR, GNB_IOAPIC_ID); + register_new_ioapic((u8 *)IO_APIC2_ADDR); }
static unsigned long acpi_fill_hest(acpi_hest_t *hest)