IRQ routing debugging help

John Baldwin jhb at FreeBSD.org
Tue Jan 6 14:46:44 PST 2004


On Tuesday 06 January 2004 02:13 pm, Doug White wrote:
> On Mon, 5 Jan 2004, M. Warner Losh wrote:
> > : So whats the next step?
> >
> > Are you set for fresh goat entrails?  How about Eye of Newt? :-)
>
> I've got the rubber gloves and bleach handy :)
>
> > The next step is to find the $PIR table.  This will give you one set
> > of information.  Here's a sample PIR table, the format may be a little
> > different than what I've presented here:
>
> How do you find this? This system doesn't appear to have one; it doesn't
> show up in boot -v with either SMP or UP kernels, with or without apic.
>
> > If an interrupt works under non-ACPI, then you can use something like
> > hw.acpi.pci.link.%d.%d.%d.irq to route it.  First %d busno, then %d
> > slot and the last %d is pin.  A is 0, B is 1, etc.  If non-ACPI works,
> > then you you can power through things by doing something like
> >
> > 	hw.acpi.pci.link.2.12.0.irq=11
> > 	hw.acpi.pci.link.2.15.0.irq=5
>
> I guess I have a bad example. The affected component on this system, the
> keyboard, is an ISA interrupt.
>
> Comparing ACPI and non-ACPI boots, the main difference is in the final
> apic programming. In Non-ACPI, it looks like this:
>
> ioapic1: routing intpin 2 (IRQ 18) to cluster 0
> ioapic1: routing intpin 8 (IRQ 24) to cluster 0
> ioapic1: routing intpin 9 (IRQ 25) to cluster 0
> ioapic0: routing intpin 1 (IRQ 1) to cluster 0
> ioapic0: routing intpin 4 (IRQ 4) to cluster 0
> ioapic0: routing intpin 6 (IRQ 6) to cluster 0
> ioapic0: routing intpin 8 (IRQ 8) to cluster 0
> ioapic0: routing intpin 11 (IRQ 11) to cluster 0
> ioapic0: routing intpin 13 (IRQ 13) to cluster 0
> ioapic0: routing intpin 14 (IRQ 14) to cluster 0
> ioapic0: routing intpin 15 (IRQ 15) to cluster 0
>
> In ACPI, the intpin 1 line is missing:
> ioapic1: routing intpin 2 (IRQ 18) to cluster 0
> ioapic1: routing intpin 8 (IRQ 24) to cluster 0
> ioapic1: routing intpin 9 (IRQ 25) to cluster 0
> ioapic0: routing intpin 4 (IRQ 4) to cluster 0
> ioapic0: routing intpin 6 (IRQ 6) to cluster 0
> ioapic0: routing intpin 7 (IRQ 7) to cluster 0
> ioapic0: routing intpin 8 (IRQ 8) to cluster 0
> ioapic0: routing intpin 11 (IRQ 11) to cluster 0
> ioapic0: routing intpin 13 (IRQ 13) to cluster 0
> ioapic0: routing intpin 14 (IRQ 14) to cluster 0
> ioapic0: routing intpin 15 (IRQ 15) to cluster 0
>
> So there's something specifically funky with IRQ 1 in the ACPI case.
> I'll extract the DSDT and take a poke around.

That would just have no keyboard.  Do you have your verbose boot output from 
the ACPI case?  acpidump -t would be useful too. Not the full ASL, just the 
table dump.

-- 
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