[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: irq routing conflict - einige varianten



Christoph Klein wrote:
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 verschiedene "informations"-Leitungen vom gerät in richtung router
gibt, welche eine karte verwenden kann ?

Kann man so sagen.

____________ router_____
|                       _ |   | _         |
|     ========|====|====|====  pci#1
|     ========|====|====|====  pci#2
|     ========|====|====|====  pci#3
|    ===|=====|====|=========  pci#4
|     ===|=========|=========  pci#5
|______|


Router  PIRQ1  PIRQ2  PIRQ3  PIRQ4
          |      |      |      |
          |      |      |      |
          |      |      |      |
          |      |      |      |
Slot1   INTA#  INTB#  INTC#  INTD#
           \      \      \     /
            \      \      \   /
          .--\------\------\-'
          |   \      \      \
          |    \      \      \
          |     \      \      \
          |      |      |      |
Slot2   INTA#  INTB#  INTC#  INTD#
           \      \      \     /
            \      \      \   /
          .--\------\------\-'
          |   \      \      \
          |    \      \      \
          |     \      \      \
          |      |      |      |
Slot3   INTA#  INTB#  INTC#  INTD#
           \      \      \     /
            \      \      \   /
          .--\------\------\-'
          |   \      \      \
          |    \      \      \
          |     \      \      \
          |      |      |      |
Slot4   INTA#  INTB#  INTC#  INTD#
           \      \      \     /
            \      \      \   /
          .--\------\------\-'
          |   \      \      \
          |    \      \      \
          |     \      \      \
          |      |      |      |
Slot5   INTA#  INTB#  INTC#  INTD#
           \      \      \     /
[...]
          |      |      |      |
SlotN   INTA#  INTB#  INTC#  INTD#

Der Router verbindet dann die PIRQ1-4 mit den IRQ-Eingängen am PIC. Es gibt
Chipsätze die können mehr als 4 Leitungen auf die Steckplätze verteilen, z.B.
der SiS735.


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 ?

Sie nimmt immer INTA#, es sei denn sie braucht mehrere INTs. INTA# ist von
Steckplatz zu Steckplatz mit einem anderen PIRQ verbunden. Bei Slot1 und
Slot5 sind jeweils INTA# mit PIRQ1 verbunden. Wenn in beiden eine Karte
drinsteckt führt das unvermeidbar zum IRQ-Sharing. Das Bild erklärt im übrigen
ziemlich gut warum das Vertauschen von Karten Sinn macht, oder?


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

Die Verbindung von Karte zum Router ist gemäß dem Bild fest verdrahtet,
variiert aber von Board zu Board. Geroutet wird von PIRQ zu den PIC Eingängen.

zugehörigen leitung einen Interrupt zu (im Bios eingestellt), wobei ein IRQ
router 8 interrupts vergeben kann an geräte ?

Welche IRQ Nummer je PIRQ zugewiesen werden kann steht in den []-Klammern
in der Ausgabe von dump_pirq. Theoretisch kann jedem PIRQ die gleiche IRQ
Nummer zugewiesen werden -> IRQ-Sharing.

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 ?

Die Begrenzte Anzahl ist in der PC Architektur begründet. Theoretisch sind
224 IRQ Nummern möglich, da aber nur zwei PICs eingebaut sind, sind es halt
nur 16. Davon führen aus Sicht des PIC 11 Leitungen zum Router und zum
ISA-Bus (parallel). IRQ2 und IRQ9 ist ein und derselbe IRQ.

wie kann es dann sein, dass manche geräte immer nur einen bestimmten IRQ
haben ?

Die IRQ 0, 1, 2, 8, 13 sind fest verdrahtet, es ist kein Router angeschlossen.

also wenn beispielsweise die uhr auf IRQ0 immer ist, kann das ja durchaus
bedeuten, dass diese

Die Uhr ist auf 8. 0 ist der Timer.

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.

Welche Interaktion meinst Du?

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

Sicher, in einigen Fällen macht der kernel das sogar.

und APIC bedeutet dann, dass das OS wieder etwas am IRQ Router machen kann,
also die IRQs neu verteilen ?

Bei IOAPIC sind alle 24 Interrupts fest verdrahtet, ohne Router. Der alte PIC
wird bei aktivierung der IO-APIC abgeschaltet.

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

Damit kann man im msr einige Offsets ändern. Vergiss es, das bringt Dir
nichts...

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 ?

Mit setpci soll es gehen...



[dump_pirq] -> schaue ich mir später an.

--
Mit freundlichen Gruessen
Bjoern Schmidt





Reply to: