kernel/x86: Initialize IO-APIC only after PCI enumeration is complete.

Before the PCI refactor, PCI initialization/enumeration occurred
immediately after the PCI module was loaded, and so by the time
we got to IOAPIC initialization, it was already complete.

After the refactor, PCI enumeration is deferred until slightly later,
and so we would try to initialize IO-APICs without knowing PCI
information. This would fail, as read_irq_routing_table needs to
have that available.

Hopefully fixes #18425, #18393, #18398.

Change-Id: I1e4b06367da26eeb10085a1c6322ed39885b632b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6476
Reviewed-by: X512 <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
This commit is contained in:
Augustin Cavalier
2023-05-29 19:44:32 +00:00
committed by waddlesplash
parent b256fa4adf
commit e223e8e94b
5 changed files with 30 additions and 38 deletions
+2 -1
View File
@@ -11,6 +11,7 @@ struct kernel_args;
bool ioapic_is_interrupt_available(int32 gsi);
void ioapic_init(kernel_args* args);
void ioapic_preinit(kernel_args* args);
void ioapic_init();
#endif // _KERNEL_ARCH_x86_IOAPIC_H