Re: IRQ Question?

From: Nate Lawson <nate_at_root.org>
Date: Wed, 18 Apr 2007 19:26:35 -0700
> 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_at_ jhb_at_) 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
Received on Thu Apr 19 2007 - 00:26:41 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:08 UTC