Felix Held has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/80330?usp=email )
Change subject: [WIP,UNTESTED] arch/x86/ioapic: always write IOAPIC ID in set_ioapic_id ......................................................................
[WIP,UNTESTED] arch/x86/ioapic: always write IOAPIC ID in set_ioapic_id
It seems very odd to me that the IOAPIC ID doesn't get written to the register if it's 0 which is a valid IOAPIC ID which is used for the first IOAPIC in the system. I'm not sure yet if that was to work around some issue with some older system, but relying of the IOAPIC ID of the first IOAPIC in the system to be 0 seems to be a bad idea to me.
Signed-off-by: Felix Held felix-coreboot@felixheld.de Change-Id: Ic8538f82a6b10f16eeb228669db197dc8e326ffd --- M src/arch/x86/ioapic.c 1 file changed, 2 insertions(+), 6 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/30/80330/1
diff --git a/src/arch/x86/ioapic.c b/src/arch/x86/ioapic.c index 04c852b..df97a50 100644 --- a/src/arch/x86/ioapic.c +++ b/src/arch/x86/ioapic.c @@ -131,12 +131,8 @@ ioapic_base); printk(BIOS_DEBUG, "IOAPIC: ID = 0x%02x\n", ioapic_id);
- if (ioapic_id) { - /* Set IOAPIC ID if it has been specified. */ - io_apic_write(ioapic_base, 0x00, - (io_apic_read(ioapic_base, 0x00) & 0xf0ffffff) | - (ioapic_id << 24)); - } + io_apic_write(ioapic_base, 0x00, + (io_apic_read(ioapic_base, 0x00) & 0xf0ffffff) | (ioapic_id << 24));
printk(BIOS_SPEW, "IOAPIC: Dumping registers\n"); for (i = 0; i < 3; i++)