* When initializing MSI support, don't assume a single 24 entry IO-APIC. Instead
mark the ISA interrupts as unusable and then use ioapic_is_interrupt_available to determine if that vector is possibly taken by an IO-APIC. If IO-APICs are not used, this will simply always return false, leaving all vectors free for MSI use. * The msi_init() now has to be done after a potential IO-APIC init, so it is now done after ioapic_init() instead of inside apic_init(). * Add apic_disable_local_ints() to clear the local ints on the local APIC once we are in APIC mode (i.e. the IO-APIC is set up and we don't need the external routing anymore). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41445 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -115,6 +115,8 @@ void apic_write(uint32 offset, uint32 data);
|
||||
uint32 apic_local_id();
|
||||
void apic_end_of_interrupt();
|
||||
|
||||
void apic_disable_local_ints();
|
||||
|
||||
status_t apic_init(kernel_args *args);
|
||||
status_t apic_per_cpu_init(kernel_args *args, int32 cpu);
|
||||
|
||||
|
||||
@@ -5,8 +5,12 @@
|
||||
#ifndef _KERNEL_ARCH_x86_IOAPIC_H
|
||||
#define _KERNEL_ARCH_x86_IOAPIC_H
|
||||
|
||||
#include <SupportDefs.h>
|
||||
|
||||
struct kernel_args;
|
||||
|
||||
bool ioapic_is_interrupt_available(int32 gsi);
|
||||
|
||||
void ioapic_map(kernel_args* args);
|
||||
void ioapic_init(kernel_args* args);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user