aboutsummaryrefslogtreecommitdiff
path: root/i386/i386at/acpi_parse_apic.c
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2024-01-29 10:06:57 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2024-01-29 20:02:21 +0100
commit6bca5c2873ef4cfccd8d2ebeedad29c9d5a6ec7f (patch)
tree8ddfc5b93af6151d26df9aa63205bde37ee9f065 /i386/i386at/acpi_parse_apic.c
parentf8d0f98e80b3d7d9b24fa077818113fb0f4b3970 (diff)
downloadgnumach-6bca5c2873ef4cfccd8d2ebeedad29c9d5a6ec7f.tar.gz
gnumach-6bca5c2873ef4cfccd8d2ebeedad29c9d5a6ec7f.tar.bz2
gnumach-6bca5c2873ef4cfccd8d2ebeedad29c9d5a6ec7f.zip
Support up to two IOAPICs with up to 32 GSIs on each
Previously, only IOAPIC[0] was supported. Now this supports up to two IOAPICs. Message-ID: <20240129100652.1262126-1-damien@zamaudio.com>
Diffstat (limited to 'i386/i386at/acpi_parse_apic.c')
-rw-r--r--i386/i386at/acpi_parse_apic.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/i386/i386at/acpi_parse_apic.c b/i386/i386at/acpi_parse_apic.c
index 9cd861ed..1aef53ed 100644
--- a/i386/i386at/acpi_parse_apic.c
+++ b/i386/i386at/acpi_parse_apic.c
@@ -331,6 +331,9 @@ acpi_apic_add_ioapic(struct acpi_apic_ioapic *ioapic_entry)
io_apic.ioapic = (ApicIoUnit *)kmem_map_aligned_table(ioapic_entry->addr,
sizeof(ApicIoUnit),
VM_PROT_READ | VM_PROT_WRITE);
+ io_apic.ioapic->select.r = APIC_IO_VERSION;
+ io_apic.ngsis = ((io_apic.ioapic->window.r >> APIC_IO_ENTRIES_SHIFT) & 0xff) + 1;
+
/* Insert IOAPIC in the list. */
apic_add_ioapic(io_apic);
}