PCI karty/irq a $PIR: ROUTE_INTERRUPT failed.

Dan Lukes dan at obluda.cz
Mon Dec 27 23:30:47 CET 2004


Cizek Milan napsal/wrote, On 12/27/04 20:49:
> Mam zakl.desku (i810 cipset), 5PCI slotu (zadne ISA). V ni mam 2 karty,
> jedna je ZCOM-626 (wi0) pracujici v hostap, druha je 4port DFE-580TX
> (ste0-ste3) - instalovana pred nekolika dny. V BIOSu mam povypinane vse
> zbyetcne (ACPI,usb,floppy+sekundarni radic disku, LPT...) - volnych
> preruseni mam tedy k dispozici dostatek.

	DFE-580TX karta je ve skutecnosti hardwarove implementovana jako ctyri 
samostatne karty D-Link DL10050 plus PCI-PCI bridge - jinymi slovy, do 
slotu zasuneme bridge, za kterym je navazujici PCI sbernice a v ni jsou 
"zastrkane" sitove karty. Podle DMESG je to sbernice PCI2

	Tao smernice je pres zmineny bridge pripojena do PCI1, coz je sbernice 
"rozvedena do slotu". Ta sama je pres dalsi PCI-PCI bridge pripojena na 
PCI0, coz je "hlavni" PCI sbernice do ktere jsou pripojena interni 
zarizeni (PCI-AGP a PCI-ISA bridge a interni IDE).

	No v vsechny tyto PCI sbernice majo dohromady (protoze jsou zapojene za 
sebe) dohromady jen ty ctyri prerusovaci draty - a jelikoz sama DFE 
karta pouziva ctyri preruseni je zrejme, ze kazde zarizeni musi sdilet 
preruseni s nekterou z ctverice DL10050 sitovek.

	Nicmene, "sdileni preruseni" je podle PCI specifikace naprosto bezny 
mode cinnosti. Samozrejme, ze to prinasi urcity overhead, kteremu je 
vhodne se vyhnout, je li to mozne, ale z hlediska funkcnosti to nutne 
neni - za predpokladu, ze jsou vsechny ovladace a souvisejici komponenty 
zapsane korektne.

	Teoreticky by to tedy fungovat melo ...

> Pri laborovani jsem si
> vsiml, ze ste1 s wi0 sdili stejne irq, mimojine jsem si take vsiml v
> messages opakovaneho vyskytu radku s "$PIR: ROUTE_INTERRUPT failed." podle
> cehoz soudim, ze se jedna o problem s irq.
> 
> Osobne povazuji sdilena irq za celkem normalni stav a i podle přečtení
> několika Danovo prispevku si nejsem jist, jestli lze vubec docilit
> "nesdileni" vice jak 4 PCI preruseni (ad hardwarové A,B,C,D). No zkusil jsem
> pro jistotu ruzne sloty a prohozy karet, ale dosahl jsem maximalne zmeny irq
> u wi0, ktera ho pokazde sdilela s jinym interfacem ste.

	No - puvodne hlasis, ze nejprve vypadne ste1 a pak zbytek. Kdyz to 
prehazis - vypadne nejprve ta nejaka jina karta ?

> Muj dotaz primarne smeruje k hlasce "$PIR: ROUTE_INTERRUPT failed.", ktere
> nerozumim, treba je problem uplne jinde nez si myslim a nakonec pak co s tim
> lze udelat. Diky

	$PIR (Pci Interrupt Routing) tabulka je tabulka, kterou poskytuje BIOS 
(co neznamena nutne, ze je staticka - naopak, vetsinou se dynamicky 
generuje) a tato tabulka obsahuje informace ktere umozni OS ujasnit si, 
ktere preruseni jakeho zarizeni je kam zapojeno (vyraz "ujasnit si" 
znamena dve veci - nektera preruseni jsou prirazena jiz BIOSem - pred 
startem OS - a o tom se OS musi dozvedet, dalsi preruseni je treba 
priradit - a to udela OS, ale musi to dat vedet hardware pod sebou).

	Existuje jeste "nahradni" varianta pro pripad, ze $PIR tabulka neni 
dostatecna nebo dokonce vubec neexistuje - a to je volani primo funkci 
BIOSu (konretne BIOS32 Service Entry - PCIBIOS_ROUTE_INTERRUPT - odtud 
pocatek textu chyboveho hlaseni).

	Znervoznujici hlaska je, bohuzel, signalem, ze selhal i tento "zalozni" 
pokus. Pro vsechan ctyri preruseni na PCI2. Nicmene, to selhal tentyz 
BIOS, ktery vytvoril neuplnou $PIR tabulku - takze zas az takove 
prekvapeni to neni.

	Celkove to znamena, ze BIOS se neni schopen vyrovnat s aktualni 
hardwarovou konfiguraci.

	No a co se s tim da delat ? V kazdem pripade upgradovat BIOS, pokud 
novejsi existuje.

	No a pak uz jen laborovat s nastavenimi, ktera by mohla mit na 
relevantni schopnost BIOSu vliv. A to je v tomto pripade predevsim "Plug 
and Play OS" a "ACPI".

	Mimochodem, v techto pripadech je vhodnejsi "verbose" vypis - 
respektive (protoze cely je dlouhy) jeho relevantni vysek ...

						Dan






More information about the Users-l mailing list