IRQ Question?
Nate Lawson
nate at root.org
Thu Apr 19 02:26:41 UTC 2007
> FreeBSD 7.0-CURRENT #0: Tue Apr 10 13:47:53 WST 2007
>
> Could be an insanely dumb question, however, I have to ask.
>
> Why don't IRQs in the BIOS map to IRQs in the output of vmstat(8) ?
>
> e.g.
>
> I manually changed an IRQ assingment of an Intel NIC [em(4)] to be on IRQ 11 in
> the BIOS and vmstat(8) reports its as irq16.
>
> #vmstat -i | egrep -i em
> irq16: em0 uhci0 2990236 18
>
> Can someone (njl@ jhb@) please enlighten me ?
Interrupt routing is determined by a number of factors. Without acpi,
it's determined by the BIOS initial irq and then anything the $PIR table
changes (usually matches the BIOS value). With acpi, it's the BIOS irq
and MADT acpi table. And that assumes APIC, not PIC-based routing.
You can override the values with these tunables from the acpi man page:
hw.pci.link.%s.%d.irq
Override the interrupt to use for this link and index. This
capability should be used carefully, and only if a device is not
working with acpi enabled. "%s" is the name of the link (e.g.,
LNKA). "%d" is the resource index when the link supports multi-
ple IRQs. Most PCI links only have one IRQ resource, so the
below form should be used.
hw.pci.link.%s.irq
Override the interrupt to use. This capability should be used
carefully, and only if a device is not working with acpi enabled.
"%s" is the name of the link (e.g., LNKA).
You'll have to look at your dmesg to determine the proper values here.
--
Nate
More information about the freebsd-current
mailing list