Page 1 of 1

I'm confused with IOAPIC and PCI interrupts...

Posted: Mon Oct 26, 2015 5:24 am
by xmm15
Hi,

on one PCI bus, all devices share the A,B,C,D int pins right?
On bus0, I have 3 devices that uses PinA:
00:01:03 8086/7113
00:03:00 10EC/8139
00:04:00 10EC/8139

but then, the MP tables tell me that
00:01 PINA -> ioapic index 09
00:03 PINA -> ioapic index 0B
00:04 PINA -> ioapic index 0B
How can the same PINA be connected to ioapic pin 0x9 and 0xB?
Does it mean that when pci bus0 PINA gets pulled low, ioapic int 0x9 and 0xb will be fired?
or does it have something to do with the line shuffling on the board, where PINA for ioapic pin9 is not really PINA but one of the 3 others? Am I making any sense? this is confusing.

Thanks.

Re: I'm confused with IOAPIC and PCI interrupts...

Posted: Mon Oct 26, 2015 5:37 am
by Brendan
Hi,

It's called "barber pole", and it goes sort of like this:

Code: Select all

      |      |      |
   _  \   _  \   _  \   _ 
  |A|_ \_|A|_ \_|A|_ \_|A|____
  | | \  | | \  | | \  | |
  |B|_ \_|B|_ \_|B|_ \_|B|____
  | | \  | | \  | | \  | |      HOST
  |C|_ \_|C|_ \_|C|_ \_|C|____
  | | \  | | \  | | \  | |
  |D|_ \_|D|_ \_|D|_ \_|D|____
  | | \  | | \  | | \  | |
  | | |  | | |  | | |  | |
  | |    | |    | |    | |
  : :    : :    : :    : :
Mostly "INTA" on the first PCI slot is connected to "INTB" on the second slot and "INTC" on the third slot. With this arrangement, all devices can use "INTA" (at their slot) and they get spread across all PCI interrupt lines (at the PCI host controller) evenly.


Cheers,

Brendan

Re: I'm confused with IOAPIC and PCI interrupts...

Posted: Mon Oct 26, 2015 6:25 am
by xmm15
That's what I thought. So the pin number reported by the MP tables is from the device's point of view and NOT the bus point of view then.

So you are confirming that, as per my example, when device 00:01 will trigger an interrupt, only IOAPIC lin 9 will be asserted and not 0x0b. Right?

Re: I'm confused with IOAPIC and PCI interrupts...

Posted: Mon Oct 26, 2015 6:31 am
by Brendan
Hi,
xmm15 wrote:So you are confirming that, as per my example, when device 00:01 will trigger an interrupt, only IOAPIC lin 9 will be asserted and not 0x0b. Right?
Yes :)


Cheers,

Brendan