[PATCH] Reworked $PIR support for non-ACPI non-APIC PCI interrupt routing

John Baldwin jhb at FreeBSD.org
Tue Jan 20 14:34:21 PST 2004


On i386, when we don't use ACPI and don't have an APIC, we use the $PIR table 
from the BIOS to route interrupts.  I have rewritten the $PIR support to be 
more link-centric somewhat similar to the ACPI PCI link code.  Part of this 
has included a tweak to the 'virgin' interrupt algorithm.  It will now first 
try to use IRQ's that the BIOS has already used for other PCI devices when 
trying to pick a virgin IRQ. So, if you had PCI devices routed to IRQ 3 or 4 
before, this should fix that.  It also allows you to use hints to override 
the IRQ for a given link like so:

hint.pci.link.0x6a.irq=10

Would set the IRQ to 10 for link 0x6a.  If you want to route an interrupt for 
a given PCI device, look up that device in the $PIR output in the dmesg, find 
the associated link device and set a tunable for that link.  Patch is at 
http://www.FreeBSD.org/~jhb/patches/pir.patch

-- 
John Baldwin <jhb at FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



More information about the freebsd-current mailing list