How to find PCI APIC routing ?

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
Anon5710
Posts: 21
Joined: Thu Nov 08, 2012 1:44 pm

How to find PCI APIC routing ?

Post by Anon5710 »

Hello,

My current APIC implementation requires me to write the correct IRQ to the Interrupt Line registers, for-each pci device.

For most devices i able to find the correct IRQ using the Interrupt Pin registers and Interrupt Route registers. (datasheet information) A de-compile of the DSDT table results in the same information.

But i'm stuck on finding out IRQ information for pci devices that are not listed in the chipset datasheet. When i check my decompiled DSDT table i can't find any reference to devices higher than pci bus 0. So for pci devices on bus 1 or higher, I end up checking all IRQ untill it works. Not exactly optimal ...

Can anyone explain how i can find the correct IRQ for such pci devices ?
Thanks in advance !

(i've attached my decompiled DSDT table, most of it is Gibberish to me. Maybe someone can see more than i could :) )
Attachments
DSDT.rar
(17.73 KiB) Downloaded 25 times
rdos
Member
Member
Posts: 3306
Joined: Wed Oct 01, 2008 1:55 pm

Re: How to find PCI APIC routing ?

Post by rdos »

Short answer: You need a full ACPI with AML support to be able to figure out IRQs for PCI (unless you probe them). In fact, that is about the only important use of ACPI (which is a very complex thing).
palk
Posts: 16
Joined: Mon Nov 15, 2010 8:30 pm

Re: How to find PCI APIC routing ?

Post by palk »

Read this: http://people.freebsd.org/~jhb/papers/b ... ticle.html. It's a guide to how FreeBSD handles PCI IRQ Routing.
Post Reply