[ LUGOS ] Teles 16.3c PnP ISDN

Tadej Slemc tadej na security.eu.org
Čet Nov 4 08:14:20 CET 1999


Preden se razpisete .. mislim da sem ze omenil, da je kartica na ISA in ne
na PCI vodilu


On Thu, Nov 04, 1999 at 07:49:37AM +0100, Metod Kozelj wrote:
> Howdy!
> 
> On Wed, 3 Nov 1999, Bostjan Mercun wrote:
> 
> > Kaj pa ce das kernelu ob bootu nastavitve za mrezno kartico? Mislim, da kernel za PCI
> > kartice pregleda vse adrese in jim dodeli irq-je in tako naprej, ampak lahko mu pa dolocis
> > kaj naj pregleda in kaksen irq naj kartici da itd.. V /etc/lilo.conf dodaj tisti "append
> > ether ...". Mislim, da dela tudi za PCI kartice. V najslabsem primeru lahko verjetno tudi
> > prevedes podporo za mrezno kartico kot modul in mu sam poves cifre..
> 
> Ne, ne ... en kratek tecaj strojnistva (malo daljsi tekst):
> 
> PCI vodilo ima 4 interrupt linije, navadno oznacene z A, B, C in D.
> Nekatere kartice imajo kaksnega skakaca (po domace: jumper), s katerim
> nastavis, katero linijo naj uporabi (obicajno lahko izbiras med A in B).
> Linije gredo fizicno od enega PCI slota do drugega in so torej elektricno
> deljene. Uporabljena pa je finta: linije so verizene, tako da pride
> (fizicna) linija A s slota 0 na (fizicno) linijo B na slotu 1 (ostale pa
> podobno). Nekatere starejse plate te finte niso uporabile, zato je prav
> prisel tisti skakac na kartici. Elektricno so interrupti 'level
> sensitive', tako da tudi delitev fizicne interrupt linije ni problem.
> 
> Ko se masina zbudi, BIOS naredi mapiranje med PCI interrupt linijami (A,
> B, C in D) in procesorjevimi interrupti (0-15 oz. 0-127). Kako to naredi,
> je mala magija vsakega proizvajalca BIOSa (v sodelovanju s proizvajalcem
> osnovne plosce). Te nastavitve potem linux kernel *podeduje*, oziroma jih
> prebere iz PCI config registrov (verzija ipd. se izpise precej na zacetku
> bootanja kernela).
> 
> Zgoraj zapisano seveda velja le za eksterne PCI naprave (kartice), za na
> plosco integrirane naprave pa ne, ker lahko proizvajalec cipovja po volji
> doda je kaksno 'PCI interrupt linijo' in jo potem ustrezno zmapira.
> 
> Iz zgoraj zapisanega sledi, da se slej ko prej lahko zgodi deljenje
> interruptov ce je v masini vec kot 4 PCI naprave. Primer so razne
> multi-port ethernet kartice, ki delujejo kot locene naprave, vendar pa si
> potem porti med sabo delijo interrupte. Ali pa kaksne twin SCSI kartice,
> ki se obnasajo kot dva locena SCSI kontrolerja. Seveda ni nujno, da si
> take naprave delijo interrupt med seboj, lahko si ga delijo s kaksno
> drugo.
> 
> Mimogrede, delitev interrupta je strojno podprto ze na vodilu EISA, kjer
> so lahko interrupti level-sensitive ali pa edge-sensitive (za backward
> kompatibilnost z ISA vodilom).
> 
> Delitev prekinitev sama po sebi ni nic napacnega, tezava se pojavi sele
> pri driverjih. Nekateri so pisani tako, da delitve interrupta ne
> podpirajo. Cetudi driverji delitev interruptov podpirajo, pride do
> (nezanemarljivega) overheada, ko se ugotavlja, kateri driver mora
> interrupt sploh servisirati.
> 
> K sreci se vecina PC BIOS proizvajalcev trudi, da bi bili interrupti cim
> manj deljeni. Obstajajo tudi primeri zanikrnih BIOSov.
> 
> Primer iz sveta Alph: enkrat sem poizkusal na eno SX164 alfo instalirati
> Digital Unix. Ta rabi ti. SRM konzolo (primerljivo z BIOSom). Masina je
> imela dve mrezni in eno SCSI kartico. Vse je teklo lepo, dokler ni prislo
> do instocasne uporabe mreze in diska. Potem je hitrost prenosa preko mreze
> padla z kaksnih 90MBps na kaksna 2MBps. Ko smo na masino dali Linux (SRM
> konzolo pa je funkcionalno zamenjal MILO - funkcionalnost je rahlo podobna
> LILOtu), je stvar zacela funkcionirati normalno. Ocitno je SRM konzola
> dodelila vsem PCI interrupt linijam isto CPU interrupt linijo.
> 
> Peace!
>   Mkx
> 
> ---- perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'
> 




Dodatne informacije o seznamu Starilist