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

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
xmm15
Member
Member
Posts: 27
Joined: Mon Dec 16, 2013 6:50 pm

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

Post 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.
User avatar
Brendan
Member
Member
Posts: 8561
Joined: Sat Jan 15, 2005 12:00 am
Location: At his keyboard!
Contact:

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

Post 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
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
xmm15
Member
Member
Posts: 27
Joined: Mon Dec 16, 2013 6:50 pm

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

Post 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?
User avatar
Brendan
Member
Member
Posts: 8561
Joined: Sat Jan 15, 2005 12:00 am
Location: At his keyboard!
Contact:

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

Post 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
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
Post Reply