summaryrefslogtreecommitdiffstats
path: root/sys/i386/include
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2004-05-10 18:49:58 +0000
committerjhb <jhb@FreeBSD.org>2004-05-10 18:49:58 +0000
commit3564a3448df2230819f217420bb3856b51fd64c8 (patch)
tree784f1513fbbb25175f0b3292accf66533f5c0077 /sys/i386/include
parent15cc971bcf0f8e77efc49cd1250fc4a311897e47 (diff)
downloadFreeBSD-src-3564a3448df2230819f217420bb3856b51fd64c8.zip
FreeBSD-src-3564a3448df2230819f217420bb3856b51fd64c8.tar.gz
Rework the APIC mixed mode support a bit:
- Require the APIC enumerators to explicitly enable mixed mode by calling ioapic_enable_mixed_mode(). Calling this function tells the apic driver that the PC-AT 8259A PICs are present and routable through the first I/O APIC via an ExtINT pin. The mptable enumerator always calls this function for now. The MADT enumerator only enables mixed mode if the PC-AT compatability flag is set in the MADT header. - Allow mixed mode to be enabled or disabled via a 'hw.apic.mixed_mode' tunable. By default this tunable is set to 1 (true). The kernel option NO_MIXED_MODE changes the default to 0 to preserve existing behavior, but adding 'hw.apic.mixed_mode=0' to loader.conf achieves the same effect. - Only use mixed mode to route IRQ 0 if it is both enabled by the APIC enumerator and activated by the loader tunable. Note that both conditions must be true, so if the APIC enumerator does not enable mixed mode, then you can't set the tunable to try to override the enumerator.
Diffstat (limited to 'sys/i386/include')
-rw-r--r--sys/i386/include/apicvar.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/i386/include/apicvar.h b/sys/i386/include/apicvar.h
index f387969..7bdcc7f 100644
--- a/sys/i386/include/apicvar.h
+++ b/sys/i386/include/apicvar.h
@@ -136,6 +136,7 @@ u_int apic_idt_to_irq(u_int vector);
void apic_register_enumerator(struct apic_enumerator *enumerator);
void *ioapic_create(uintptr_t addr, int32_t id, int intbase);
int ioapic_disable_pin(void *cookie, u_int pin);
+void ioapic_enable_mixed_mode(void);
int ioapic_get_vector(void *cookie, u_int pin);
int ioapic_next_logical_cluster(void);
void ioapic_register(void *cookie);
OpenPOWER on IntegriCloud