diff options
author | jhb <jhb@FreeBSD.org> | 2005-11-02 20:11:47 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2005-11-02 20:11:47 +0000 |
commit | 830d2103fbe6636ab7adf8d4fb308b9a383be46f (patch) | |
tree | 0abf84b2a71d8deda27b993addab30eae0f16b6a /sys/compat/ia32 | |
parent | c104267c1a97cafb9b2e7707382601a452ced831 (diff) | |
download | FreeBSD-src-830d2103fbe6636ab7adf8d4fb308b9a383be46f.zip FreeBSD-src-830d2103fbe6636ab7adf8d4fb308b9a383be46f.tar.gz |
Change the x86 code to allocate IDT vectors on-demand when an interrupt
source is first enabled similar to how intr_event's now allocate ithreads
on-demand. Previously, we would map IDT vectors 1:1 to IRQs. Since we
only have 191 available IDT vectors for I/O interrupts, this limited us
to only supporting IRQs 0-190 corresponding to the first 190 I/O APIC
intpins. On many machines, however, each PCI-X bus has its own APIC even
though it only has 1 or 2 devices, thus, we were reserving between 24 and
32 IRQs just for 1 or 2 devices and thus 24 or 32 IDT vectors. With this
change, a machine with 100 IRQs but only 5 in use will only use up 5 IDT
vectors. Also, this change provides an API (apic_alloc_vector() and
apic_free_vector()) that will allow a future MSI interrupt source driver to
request IDT vectors for use by MSI interrupts on x86 machines.
Tested on: amd64, i386
Diffstat (limited to 'sys/compat/ia32')
0 files changed, 0 insertions, 0 deletions