[coreboot] v3 interrupt tables...

Rudolf Marek r.marek at assembler.cz
Mon Feb 11 11:06:46 CET 2008


> Who understands ACPI interrupt
> specification? I still don't.

It depends what you need. If you care only about APIC interrupt based routing
then it is quite easy.

Just create a _PRT method for all PCI bridges:

Package (0x04) { 0x000BFFFF, 0x00, 0x00, 0x10 }, //slot 0xB
      Package (0x04) { 0x000BFFFF, 0x01, 0x00, 0x11 },
      Package (0x04) { 0x000BFFFF, 0x02, 0x00, 0x12 },
      Package (0x04) { 0x000BFFFF, 0x03, 0x00, 0x13 },

0x0B is slot 0x00 0xffff means all functions 0x00-0x03 is INTA-INTD and

0x10-0x13 are so called GSI (global system interrupt). All your interrupts
routed through first APIC will start with 0x00, second APIC will perhaps start
at IRQ24 etc etc.

If you want to support also PIC based routing and let OS choose, then you need
to put there instead 0f 0x00 on third position PIRQA-PIRQD special devices and
create some method which will either return APIC based table like abobe or PIC
based table if IOAPIC is "disabled". I dont care about DOS and very legacy
systems so I have implemented just APIC based _PRTs.

In other words you dont need PIR if you implement the _PRT with legacy PIRQ entries.

http://www.microsoft.com/whdc/system/CEC/ACPI-MP.mspx

Maybe we can add this link to wiki?

Rudolf





More information about the coreboot mailing list