Date: Wed, 18 Apr 2007 19:26:35 -0700 From: Nate Lawson <nate@root.org> To: "Wilkinson, Alex" <alex.wilkinson@dsto.defence.gov.au> Cc: current <current@freebsd.org> Subject: Re: IRQ Question? Message-ID: <4626D35B.7070308@root.org>
next in thread | raw e-mail | index | archive | help
> 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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4626D35B.7070308>