> Where (and how) do we decide to (re)map the PCI (device,pin) pairs to
> IRQs when we are using the APIC? In particular, what is happening is
> that I have two PCI cards which both use INTA, and seem to be in slots
> (1 and 5) where these two INTA pins are connected to the same PIRQ

For full details, see the MP spec at:

ftp://download.intel.com/design/pro/datashts/24201606.pdf

The basics are:

1) In PIC mode, the PCI slots IRQs must be braided and have INTA-D routed to 
ISA IRQs.

2) How a board behaves in APIC mode is up to the manufacturer.  A really cheap 
implementation may retain the braiding and route the PCI irqs straight onto 
ISA IRQs via the APIC (the Acer Altos 9000 does this). A rolls-royce 
implementation would disable the braiding in APIC mode and route each card's 
INTA-D to a separate IO-APIC pin (the intel ALDER nearly does this.  In 
practice the 4 IRQs per slot is so wasteful that good SMP boards use an 
intelligent router between the slots and the IO-APIC pins).

3) If your IO-APIC has >16 pins, you get more than 16 IRQs (the latest 
IO-APICs in the 4 way Xeons have 64 pins).

4) Because the complexity is so high, the board must tell the O/S what will 
happend in APIC mode.  It does this via the MP-BIOS.  The pirq kernel option 
provides a way to override the MP-BIOS in the event it is wrong, but 
realistically if the board manufacturer can't get the MP-BIOS right I wouldn't 
hold out too much hope that they got the IO-APIC routing circuitry right 
either.

One of the reasons why your board could be hanging is an Edge/Level interrupt 
problem instead.

James Bottomley


-
Linux SMP list: FIRST see FAQ at http://www.irisa.fr/prive/mentre/smp-faq/
To Unsubscribe: send "unsubscribe linux-smp" to [EMAIL PROTECTED]

Reply via email to