IRQ megosztás, mert így szeretlek...

Miért van az, hogy a csudaszuper linux nem képes olyan egyszerű műveletekre, mint az IRQ megosztás kezelése?
Értem én, hogy büdöspumpán véges számú IRQ van, de ha 20 évvel ezelőtt már képesek voltak nagysebességű, két IRQt használó buszrendszert készíteni és hozzá egy megfelelő sebességű megosztott IRQ kezelőt írni, akkor mi a rákért nem lehet ebből tanulni? Vagy esetleg átvenni?
Miért kell a "csúcsfejlett számítógépet" kétnaponta szétszedni, egy kártyát kivenni belőle és utána imátkozni, hogy a BIOS a negyedik, ötödik próbálkozásra kisakkozza az ütközésmentes konfigurációt?
Miért van, hogy egy 10 éves szabványt nem képesek implementálni a linux kernelbe?
Nem kell válaszolni. Inkább előveszek egy 18 éves, kissé kopott gépet, és élvezem, hogy az ő megszokott, kényelmes tempójában, szépen tudom a munkám végezni...

Hozzászólások

küld be bugként egy kicsit részletesebben

--
Írj egy e-mailt, ha itt bármi hibát találsz. ^ ^

pci=routeirq és az irqpoll próbáltad már?

a grubban valahogy igy:
/boot/vmlinuz root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ro quiet acpi=force apm=off pci=routeirq elevator=deadline video=uvesafb:1024x700-16@60,mtrr:0,ywrap irqpoll

Erre két megoldás lehetséges:
1. ["troll" autoreply] welcome to linux - ez van ezt kell szeretni
2. [fossfan autoreply] shut up and hack - közben csöndben hálát ad minden felsőbb hatalomnak hogy nála ez a hiba éppen nem jött elő

Sajnos a 3. megoldás, a "nincs időm/nem tudok programozni de azért néha örülnék ha működne a gépem" nem opció.

szerintem ez chipset es bios fuggo ezert nehez jol megcsinalni kb mint az acpi-t

udv Zoli

Ezt azért így túlzás kijelenteni, mert nekem egyszerre működik az USB, az Nvidia és a hang is, pedig osztoznak az IRQ -n:

CPU0 CPU1
16: 206729 982078 IO-APIC-fasteoi ohci_hcd:usb3, ohci_hcd:usb4, HDA Intel
18: 674977 19997273 IO-APIC-fasteoi ohci_hcd:usb5, ohci_hcd:usb6, ohci_hcd:usb7, nvidia

Egyébként szvsz nincs olyan a kernelben, hogy "megosztott IRQ kezelő". Osztott megszakításnál minden driver IRQ handlere meghívódik, azok csekkelik a hozzájuk tartozó eszközök regisztereit, hogy az generálta-e a megszakítást, aztán vagy lekezelik a megszakítást vagy engedik tovább a láncban.

Ha valami nem működik osztott IRQ -val az szerintem elsősorban hardver (pl. race), másodsorban egy adott eszköz driver-ének hibája lehet. A driverekben nagyon minimális az a kód ami lefut ha megosztott IRQ -t kap és nem az ő fia borja generálta. Abban igen kis valószínűséggel lehet bug.