The IntPin register seems to be confusing you. It’s meaningless. It always
has been. It is just a scratch pad used by the BIOS.
Very early PCI PCs used it to convey the 8295 PIC interrupt assignment.
When that proved insufficient, the $PIR table was created for this purpose.
When that couldn’t convey information about an I/O APIC (and couldn’t be
updated at run time) ACPI was created.
Please use the OS-supplied interfaces. You’re going down a pointless hole.
Jake Oshins
Windows Kernel Team
This message implies no warranties and confers no rights.
wrote in message news:xxxxx@ntdev…
Hi Tim
I did read about IoConnectInterrupt and knew before posting this question
that it’s the only way to setup interrupts and IDT is never meant to be
hacked or touched as OS or Firmware owns that.
However, I was more interested in knowing behind the scenes processes of how
PCIe “IntPin register” gets mapped to an IOAPIC pin (IRQL). There must be
some sort of pin to pin linking happening at hardware level and I wanted to
know what mechanism is doing that.
I was trying to connect dots to gain knowledge of system hardware and it’s
working in modern computing.
All I know at this moment is
PCI Device -> Uses PCIe configuration space to configure what interrupt pin
it can use using “IntPin” register.
( SOME CONNECTING THING HERE…I DON’T KNOW WHAT)
IOAPIC -> Which has incoming Interrupt pins from PCI device and are mapped
to Interrupt vector
LAPIC -> LINT0 or LINT1 configured for ExtInt
IDTR & Interrupt Descriptor table.
So far, all above process is understood but I am missing interrupt routing
from PCIe to IOAPIC. This information will help me lot in understanding
system at hardware level.