]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/commit
MFC 307333: Reprogram I/O APIC interrupt pins when registering an I/O APIC.
authorjhb <jhb@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Fri, 25 Nov 2016 22:12:03 +0000 (22:12 +0000)
committerjhb <jhb@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Fri, 25 Nov 2016 22:12:03 +0000 (22:12 +0000)
commit2e920315f5f474b0598002ec4a3a19ed6cc4af7b
treef795936802c69bfa2d4df7799a9c9a30a574a482
parent93b45d6efe2e8564808c47ed6f86bde101aa6413
MFC 307333: Reprogram I/O APIC interrupt pins when registering an I/O APIC.

All I/O APIC pins are masked when an I/O APIC is first probed.  The
APIC enumerator (MP Table or MADT) then parses its associated tables to
configure individual pins to set custom delivery modes or alternate
routing (e.g. routing IRQ 0 to intpin 2).  Pins for regular interrupt
pins are left masked until the first interrupt is assigned.  However,
pins with unusual settings (e.g. NMI or SMI) are never assigned an
interrupt and thus never re-programmed.  The I/O APIC code used to
reprogram all interrupt pins during registration but this was lost in
r151979.

In theory, this is mostly a no-op as the ACPI APIC table does not
include a way to enumerate NMI or SMI pins for the I/O APIC, so only
systems using an MP Table would be affected.

git-svn-id: svn://svn.freebsd.org/base/stable/10@309168 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/x86/x86/io_apic.c