Odpusťte OT reakci...
I na PCI přetrvala potřeba, IRQ signály nějakým způsobem routovat až na procesor (LAPIC). Děje se to sice automaticky, ale je tam prostor pro chyby tvůrců BIOSu, na několika úrovních (konfigurace routování v čipsetu, obsah ACPI DSDT).
S tím měla zatočit sběrnice PCI-e, která odjakmrtva v normě stanoví, že PCI-e zařízení musí podporovat message-signaled interrupty, rozumí se v moderní podobě "přímo na procesor", takže na tom není co explicitně konfigurovat v čipsetu nebo sdělovat skrz tabulky BIOSu.
Jenom jako mechanismus pro "legacy kompatibilitu" se starým softwarem a pro ranou fázi bootu počítače, než naběhne OS se všemi bells and whistles, zbyla na PCI-e legacy emulace starých routovaných IRQ = "virtual wire, INTx messages".
PCI-e je stará asi dvacet let. Dneska už paralelní legacy PCI prakticky vymizela, jsou to fakt poslední historické zbytky co občas zahlédnu. Vnitřnosti čipsetu komplet na PCI-e, periferie taky na PCI-e, včetně moderních miniaturních formátů M.2 a MiniPCI-e.
Přesto dodnes existují ovladače, i pro relativně moderní PCI-e hardware, které jedou IRQ tvrdošíjně v režimu "virtual wire". Nepřepnou na MSI.
Zrovna jsem řešil, že mi ovladač konkrétní PCI-e periferie jede "virtual wire", a jeho INTA je údajně dle DSDT naroutovaný na IRQ18, ale ve skutečnosti interrupty chodí na IRQ16. Výrobce švába se nemá, upravit ovladač pro Windows na MSI (přestože vanilkový ovladač v Linuxu spokojeně MSI jede), výrobce motherboardu zívá nudou a nijak se nehrne, opravit si bug v inicializaci čipsetu (nebo aspoň popravdě přiohnout DSDT).
Hlavně že už 30 let nemusíme konfigurovat interrupty ručně...
Já bych tak rád dělal něco tvůrčího! ale živí mě, že diagnostikuju cízí bugy a následně nad nimi často lámu hůl / hledám workaround, pokud se nedomůžu triviální přímé opravy...