From 0ea8f89e4095f82de0562142968e81d9588b2b7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ky=C3=B6sti=20M=C3=A4lkki?= Date: Tue, 8 Jun 2021 11:28:25 +0300 Subject: [PATCH] arch/x86: Add register_new_ioapic() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Using this I/O APIC IDs will be assigned incrementally in the order of calling. I/O APIC ID #0 is reserved for the I/O APIC delivering GSI #0. Change-Id: I6493dc3b4fa542e81f80bb0355eac6dad30b93ec Signed-off-by: Kyösti Mälkki Reviewed-on: https://review.coreboot.org/c/coreboot/+/55313 Tested-by: build bot (Jenkins) Reviewed-by: Arthur Heymans --- src/arch/x86/include/arch/ioapic.h | 2 ++ src/arch/x86/ioapic.c | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/arch/x86/include/arch/ioapic.h b/src/arch/x86/include/arch/ioapic.h index 9e524e250f..288f54cefc 100644 --- a/src/arch/x86/include/arch/ioapic.h +++ b/src/arch/x86/include/arch/ioapic.h @@ -37,6 +37,8 @@ void ioapic_set_max_vectors(void *ioapic_base, int mre_count); void ioapic_lock_max_vectors(void *ioapic_base); void setup_ioapic(void *ioapic_base, u8 ioapic_id); +void register_new_ioapic(void *ioapic_base); +void register_new_ioapic_gsi0(void *ioapic_base); void ioapic_set_boot_config(void *ioapic_base, bool irq_on_fsb); #endif diff --git a/src/arch/x86/ioapic.c b/src/arch/x86/ioapic.c index d65637c662..1440bb4331 100644 --- a/src/arch/x86/ioapic.c +++ b/src/arch/x86/ioapic.c @@ -163,3 +163,16 @@ void setup_ioapic(void *ioapic_base, u8 ioapic_id) clear_vectors(ioapic_base, 0, ioapic_get_max_vectors(ioapic_base) - 1); route_i8259_irq0(ioapic_base); } + +void register_new_ioapic_gsi0(void *ioapic_base) +{ + setup_ioapic(ioapic_base, 0); +} + +void register_new_ioapic(void *ioapic_base) +{ + static u8 ioapic_id; + ioapic_id++; + set_ioapic_id(ioapic_base, ioapic_id); + clear_vectors(ioapic_base, 0, ioapic_get_max_vectors(ioapic_base) - 1); +}