Fix reading of number of interrupts for IO-APICs
The number read from the io-apic register represents the index of the highest interrupt redirection entry, i.e. the number of interrupts minus one. Change-Id: I54c992e4ff400de24bb9fef5d82251078f92c588 Signed-off-by: Nico Huber <nico.huber@secunet.com> Reviewed-on: http://review.coreboot.org/1624 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
parent
f4ff56f617
commit
23c046b6f1
|
@ -85,8 +85,11 @@ void setup_ioapic(u32 ioapic_base, u8 ioapic_id)
|
|||
|
||||
/* Read the available number of interrupts. */
|
||||
ioapic_interrupts = (io_apic_read(ioapic_base, 0x01) >> 16) & 0xff;
|
||||
if (!ioapic_interrupts || ioapic_interrupts == 0xff)
|
||||
ioapic_interrupts = 24;
|
||||
if (ioapic_interrupts == 0xff)
|
||||
ioapic_interrupts = 23;
|
||||
ioapic_interrupts += 1; /* Bits 23-16 specify the maximum redirection
|
||||
entry, which is the number of interrupts
|
||||
minus 1. */
|
||||
printk(BIOS_DEBUG, "IOAPIC: %d interrupts\n", ioapic_interrupts);
|
||||
|
||||
#if CONFIG_IOAPIC_INTERRUPTS_ON_FSB
|
||||
|
|
Loading…
Reference in New Issue