Re: irq routing conflict - einige varianten
Hallo Liste,
> Nun, passive Karten (weitverbreitet sind die AVM Fritz, deine HFCs
> wahrscheinlich auch) lassen einen großen Teil der Arbeit die CPU
> erledigen, was bei schwachen Rechnern bzw. starke Nutzung der CPU schon
> mal in die Hose gehen kann. Aktive Karten haben erweiterte Chips und
> damit Logik auf der Karte selbst, entlasten also die CPU,
axo, thx für die info - also rein prinzipiell dürfte das eigentlich kein
problem für
die pentium2 cpu sein mit mehreren passiven karten zurechtzukommen, eine
pentium1 cpu
kam ja schon gut mit nur einer passiven karte aus ....
> > nur wenn die karte korrekt initialisiert wird (mit optionalem
> > routing-conflict), geht die pbx oder
> > es kommt ein routing conflict und der alte mISDN-treiber wird verwendet,
> > dann geht die pbx auch - bringt aber ein echo.
>
> "Echo" ist irgendeine Reaktion von pbx?
ich vermute das echo hängt mit dem mISDN Treiber zusammen,
also mit echo meine ich hier während eines telefonats über die anlage
hört man sein eigenes, akustisches echo.
es gab auf der mailingliste von pbx4linux bereits einen thread mit
lösungsvorschlag, jedoch
ist der für den alten Treiber gedacht und funktioniert zudem auch nicht...
http://ischtar.koeln.ccc.de/pipermail/pbx4linux/2004-June/000258.html
...deswegen auch der versuch mit dem neuen mISDN treiber.
> Außer der Hersteller würde (meist für DOS/Windows) ein Konfig-Tool für
> die Karten anbieten: das wäre dann ein Hinweis, das *doch*
> Einstellungen möglich bzw. auch *nötig* sind.
ich habe mal geschaut:
http://www.colognechip.com/isdn/controllers/frame-software.htm
da gibts nur treiber, aber hier verwende ich sowieso mISDN, da pbx4linux
nur damit funktioniert (DSP).
> Nein, lass sie auf PCI/PnP. Ich meinte eher: manche BIOSe haben die
> Möglichkeit, im BIOS den PCI-Slots manuell die IRQs zuzuordnen. Heißt
> dann irgendwie wie: SLOT-A: auto/IRQx. Wenn du sowas hast, da meinte
> ich auf auto zurückzustellen. Oder halt per Funktionstaste das ganze
> BIOS auf Default zu stellen.
ok, ich werde das mal machen, jeweils mit neuer und alter Bios Version.
> Doch, sollten sie. Die Debian-Kernel sind i.d.R. mit allen vorhandenen
> Treibern und Funktionen kompililiert.
nunja, mISDN wird erst durch einen patch im kernel verfügbar, also es ist
ein seperates paket für den kernel.
http://home.foni.net/~jolly/download/
> Ja, weil *beide* Karten sollten eigentlich (auch gleichzeitig) über
> Hisax-Module ladbar sein. Im ungünstigen Fall würde halt auch eine der
> beiden Karten nicht initialisiert werden, dann wären wir IMHO aber um
> eine Erkenntniss reicher (Kernel-unabhängiges Problem).
ok, kommt auch noch auf die to-test liste *g* werde heute abend mal einen
neuen 2.6.x debian und 2.4.x zusätzlich zum 2.4.18-bf2.4 ausprobieren.
> Ich weiß, wollte aber ein bißchen Heiterkeit in diesen Thread bringen.
> Aber da kann dir wahrscheinlich nur jemand helfen, der auch
> gleichzeitig vor Ort ist.
*g* np, falls wirklich garnichts funktioniert, es keine möglichkeit gibt das
zum laufen zu bekommen,
hole ich mir noch weitere 15 Interrupts - sprich einen weiteren betagteren
PC über ebay o.ä. und
dann wird einer als telefonanlage und einer als lan-router im einsatz sein
;-)
> Der Kernel-PCI Treiber liest aus einem Register der PCI-Karte aus welchen
> Pin (INTn#) die Karte verwendet und mit welchem Pin (PIRQn) des Interrupt
> Routers dieser verbunden ist
ok, damit ich das auch verstehe *g* man kann sich das so vorstellen, dass
es gibt verschiedene "informations"-Leitungen vom gerät in richtung router
gibt, welche
eine karte verwenden kann ?
____________ router_____
| _ | | _ |
| ========|====|====|==== pci#1
| ========|====|====|==== pci#2
| ========|====|====|==== pci#3
| ===|=====|====|========= pci#4
| ===|=========|========= pci#5
|______|
also es bspw. so aussieht, wenn die karte in einem der steckplätze sich
befindet, sie eine begrente auswahl hat,
welche Leitung sie zum router verwendet ?
> Dann schaut er nach zu welchem IRQn des PIC der
> PIRQn geroutet wird (das kann man manchmal im BIOS einstellen).
dh sobald eine leitung zwischen karte und router ausgehandelt ist, weißt der
router dem steckplatz mit der dann
zugehörigen leitung einen Interrupt zu (im Bios eingestellt), wobei ein IRQ
router 8 interrupts vergeben kann an geräte ?
würde das bedeuten, dass prinzipiell hier die begrenzte anzahl der
interrupts nicht am router selbst liegt (man könnte ihn
mittels weiteren pins für leitungen erweitern), sondern an unzureichend
flexibel verschalteten leitungen zu den steckplätzen ?
wie kann es dann sein, dass manche geräte immer nur einen bestimmten IRQ
haben ?
also wenn beispielsweise die uhr auf IRQ0 immer ist, kann das ja durchaus
bedeuten, dass diese
eine seperate leitung zum IRQ router hat, aber es würde nicht bedeuten, dass
der router prinzipiell den IRQ nicht frei zuweisen kann, oder ?
eine weitere Frage wäre, wie die CPU mit dem IRQ Router verbunden ist, also
wie die Interaktion zwischen beiden funktioniert.
> Der Interrupt Router -durch BIOS programmiert- weist also diesem
Steckplatz
> den IRQ11 zu.
hmm - also ist hardwaremäßig der pci steckplatz nicht fest verschaltet, der
router hat prinzipiell die möglichkeit, den IRQ zuzuweisen, auch
wenn das bios keine einstellungsmöglichkeiten bietet, programmierbar ist der
router doch trotzdem ....
und APIC bedeutet dann, dass das OS wieder etwas am IRQ Router machen kann,
also die IRQs neu verteilen ?
nun, ich weiß nicht, ob sich das lohnt bzw. das mainboard es überlebt - ich
hab da mal ein Tool gesehen, "WCPUID" hieß das glaube ich,
mit denen man direkt dinge editieren konnte, die es zwar gab, aber nicht im
bios waren ... (wo ist sowas denn gespeichert ?).
im zusammanhang war beispielsweise beschrieben, wie man das board anweist,
s-ata laufwerke als normale IDE laufwerke erscheinen zu
lassen, auch wenn man das im bios nicht einstellen konnte, zum zwecke der
unterstützung durch den linux-kernel, als dieser mit der
s-ata unterstützung nicht soweit war... wie auch immer - wäre es möglich,
damit auch den IRQ router zu manipulieren ?
> Christoph, kannst Du mir bitte den Output von scanpci -v oder von
dump_pirq
> zumailen? scanpci ist in den xutils...
server:/usr/src/pbx4linux# scanpci -v
pci bus 0x0 cardnum 0x00 function 0x0000: vendor 0x1106 device 0x0691
VIA Device unknown
STATUS 0xa290 COMMAND 0x0006
CLASS 0x06 0x00 0x00 REVISION 0x01
HEADER 0x00 LATENCY 0x10
pci bus 0x0 cardnum 0x01 function 0x0000: vendor 0x1106 device 0x8598
VIA VT 82C598 MVP3 PCI/AGP Bridge
STATUS 0x2220 COMMAND 0x0007
CLASS 0x06 0x04 0x00 REVISION 0x00
HEADER 0x01 LATENCY 0x00
PRIBUS 0x00 SECBUS 0x01 SUBBUS 0x01 SECLT 0x00
IOBASE 0xb000 IOLIM 0xbfff SECSTATUS 0x0000
NOPREFETCH_MEMBASE 0xfdd00000 MEMLIM 0xffdfffff
PREFETCH_MEMBASE 0xf3b00000 MEMLIM 0xf5bfffff
NO_FAST_B2B NO_SEC_BUS_RST NO_M_ABRT VGA_EN NO_ISA_EN NO_PERR_EN
pci bus 0x0 cardnum 0x07 function 0x0000: vendor 0x1106 device 0x0596
VIA Device unknown
CardVendor 0x1106 card 0x0000 (VIA, Card unknown)
STATUS 0x0200 COMMAND 0x0087
CLASS 0x06 0x01 0x00 REVISION 0x05
HEADER 0x80 LATENCY 0x00
pci bus 0x0 cardnum 0x07 function 0x0001: vendor 0x1106 device 0x0571
VIA VT 82C586 MVP3 IDE Bridge
STATUS 0x0280 COMMAND 0x0007
CLASS 0x01 0x01 0x8a REVISION 0x06
BIST 0x00 HEADER 0x00 LATENCY 0x40 CACHE 0x00
BASE4 0x0000ffa1 addr 0x0000ffa0 I/O
MAX_LAT 0x00 MIN_GNT 0x00 INT_PIN 0x00 INT_LINE 0xff
BYTE_0 0xba09c20b BYTE_1 0x00 BYTE_2 0x806cb48 BYTE_3 0xffffffff
pci bus 0x0 cardnum 0x07 function 0x0003: vendor 0x1106 device 0x3050
VIA Device unknown
STATUS 0x0280 COMMAND 0x0000
CLASS 0x06 0x00 0x00 REVISION 0x00
pci bus 0x0 cardnum 0x09 function 0x0000: vendor 0x1397 device 0x2bd0
Device unknown
CardVendor 0x1397 card 0x2bd0 (Card unknown)
STATUS 0x0210 COMMAND 0x0006
CLASS 0x02 0x80 0x00 REVISION 0x02
BIST 0x00 HEADER 0x00 LATENCY 0x10 CACHE 0x00
BASE0 0x0000de01 addr 0x0000de00 I/O
BASE1 0xffefff00 addr 0xffefff00 MEM
MAX_LAT 0x10 MIN_GNT 0x00 INT_PIN 0x01 INT_LINE 0x09
BYTE_0 0x7e210001 BYTE_1 0x00 BYTE_2 0x806d238 BYTE_3 0xffffffff
pci bus 0x0 cardnum 0x0a function 0x0000: vendor 0x1397 device 0x2bd0
Device unknown
CardVendor 0x1397 card 0x2bd0 (Card unknown)
STATUS 0x0210 COMMAND 0x0006
CLASS 0x02 0x80 0x00 REVISION 0x02
BIST 0x00 HEADER 0x00 LATENCY 0x10 CACHE 0x00
BASE0 0x0000dc01 addr 0x0000dc00 I/O
BASE1 0xffeffe00 addr 0xffeffe00 MEM
MAX_LAT 0x10 MIN_GNT 0x00 INT_PIN 0x01 INT_LINE 0x0a
BYTE_0 0x7e210001 BYTE_1 0x00 BYTE_2 0x806d5b0 BYTE_3 0xffffffff
pci bus 0x0 cardnum 0x0b function 0x0000: vendor 0x1282 device 0x9102
Device unknown
CardVendor 0x3030 card 0x5032 (Card unknown)
STATUS 0x8210 COMMAND 0x0107
CLASS 0x02 0x00 0x00 REVISION 0x31
BIST 0x00 HEADER 0x00 LATENCY 0x40 CACHE 0x00
BASE0 0x0000da01 addr 0x0000da00 I/O
BASE1 0xffeffd00 addr 0xffeffd00 MEM
BASEROM 0xffe80000 addr 0xffe80000 not-decode-enabled
MAX_LAT 0x28 MIN_GNT 0x14 INT_PIN 0x01 INT_LINE 0x0b
pci bus 0x0 cardnum 0x0c function 0x0000: vendor 0x10ec device 0x8139
Realtek RTL8139 10/100 Ethernet
CardVendor 0x10ec card 0x8139 (Realtek Generic)
STATUS 0x8290 COMMAND 0x0107
CLASS 0x02 0x00 0x00 REVISION 0x10
BIST 0x00 HEADER 0x00 LATENCY 0x40 CACHE 0x00
BASE0 0x0000d801 addr 0x0000d800 I/O
BASE1 0xffeffc00 addr 0xffeffc00 MEM
BASEROM 0xffee0000 addr 0xffee0000 not-decode-enabled
MAX_LAT 0x40 MIN_GNT 0x20 INT_PIN 0x01 INT_LINE 0x0c
pci bus 0x1 cardnum 0x00 function 0x0000: vendor 0x10de device 0x0020
NVidia Riva TNT
CardVendor 0x1092 card 0x0550 (Diamond Viper 550)
STATUS 0x02b0 COMMAND 0x0007
CLASS 0x03 0x00 0x00 REVISION 0x04
BIST 0x00 HEADER 0x00 LATENCY 0x40 CACHE 0x00
BASE0 0xfe000000 addr 0xfe000000 MEM
BASE1 0xf4000008 addr 0xf4000000 MEM PREFETCHABLE
BASEROM 0xffdf0000 addr 0xffdf0000 not-decode-enabled
MAX_LAT 0x01 MIN_GNT 0x05 INT_PIN 0x01 INT_LINE 0x00
BYTE_0 0x5501092 BYTE_1 0x00 BYTE_2 0x806e018 BYTE_3 0xffffffff
dump_pirq habe ich auch gefunden:
server:~# ./dump_pirq.pl
Interrupt routing table found at address 0xf7940:
Version 1.0, size 0x0090
Interrupt router is device 00:07.0
PCI exclusive interrupt mask: 0x0000 []
Compatible router: vendor 0x1106 device 0x0596
Device 00:01.0 (slot 0): PCI bridge
INTA: link 0xd6, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTB: link 0x56, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTC: link 0xd7, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTD: link 0xd5, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
Device 00:07.0 (slot 0): ISA bridge
INTA: link 0xfe, irq mask 0x4000 [14]
INTB: link 0xff, irq mask 0x8000 [15]
INTD: link 0x01, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
Device 00:08.0 (slot 1):
INTA: link 0x03, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTB: link 0x02, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTC: link 0x05, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTD: link 0x01, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
Device 00:09.0 (slot 2): Network controller
INTA: link 0x02, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTB: link 0x05, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTC: link 0x01, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTD: link 0x03, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
Device 00:0a.0 (slot 3): Network controller
INTA: link 0x05, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTB: link 0x01, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTC: link 0x03, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTD: link 0x02, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
Device 00:0b.0 (slot 4): Ethernet controller
INTA: link 0x01, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTB: link 0x03, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTC: link 0x02, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTD: link 0x05, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
Device 00:0c.0 (slot 5): Ethernet controller
INTA: link 0x03, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTB: link 0x02, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTC: link 0x05, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTD: link 0x01, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
Interrupt router at 00:07.0: VIA 82C596 PCI-to-ISA bridge
PIRQA (link 0x01): irq 12
PIRQB (link 0x02): irq 9
PIRQC (link 0x03): irq 10
PIRQD (link 0x05): irq 11
PIRQA : level
PIRQB : level
PIRQC : level
PIRQD : level
PIC Level mask: 0x1e20 [5,9,10,11,12]
> Kompilier Deinen kernel nochmal neu, diesmal mit CONFIG_PCI_MSI=y (bei den
BUS
> Optionen). Damit wird die Fehlermeldung (IRQ conflict) verschwinden, wenn
der
> kernel booten kann...
okay, das probiere ich heute abend/nacht dann auch mal aus...
vielen dank für eure hilfe :-)
mfg christoph
Reply to: