Názor k článku
CEO Nvidie: děti už se nemají učit programovat od František Ryšánek - Odpusťte OT reakci... I na PCI přetrvala potřeba, IRQ...

  • Článek je starý, nové názory již nelze přidávat.
  • 28. 2. 2024 17:24

    František Ryšánek

    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...