PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : IRQ-Vergabe regeln?



-hanky-
26.11.06, 12:30
Hi,

da meine Cardbus-Karte ( WG511T ) partout nicht mit meinem Laptop zusammen funktionieren möchte ( nach dem Einstecken wird das System unerträglich langsam, selbst die Konselenausgabe ruckelt, dmesg wird vollgespammt mit "wifi0: hardware error, reseting" ) habe ich mal ein wenig recherchiert.

Der gleiche Effekt tritt übrigens auch mit einer D-Link-Karte mit dem gleichen Chipsatz auf, ich vermute also den Treiber als Fehlerquelle, zumal ich nicht der einzige mit dem Problem bin.

Doch zurück zum Thema: Im Zuge meiner Recherchen habe ich mir mal die IRQ-Vergabe angesehen, weil ich wissen wollte ob es hier vielleicht Probleme gibt.



CPU0
0: 442413 XT-PIC timer
1: 2034 XT-PIC i8042
2: 0 XT-PIC cascade
9: 4212 XT-PIC acpi
10: 11550 XT-PIC ohci1394, Intel 82801DB-ICH4, yenta, yenta, ehci_hcd:usb1, uhci_hcd:usb3, uhci_hcd:usb4, eth1, eth0
11: 2419 XT-PIC uhci_hcd:usb2, i915@pci:0000:00:02.0
12: 122 XT-PIC i8042
14: 11021 XT-PIC ide0
15: 3537 XT-PIC ide1
NMI: 0
ERR: 0


Ich bin absoluter Laie in diesem Bereich, kann also durchaus sein dass meine Schlussfolgerungen die jetzt kommen völliger Blödsinn sind ;)

Mir fiel auf dass IRQ 5, obwohl dieser ( laut Wikipedia ) frei sein sollte, überhaupt nicht verwendet wird und vor allem dass massiv auf IRQ 10 +11 zurückgegriffen wird. Im BIOS selbst habe ich leider so gut wie gar keine Optionen; lediglich den Parallelport und einen weiteren kann ich manuell konfigurieren ( d.h. IRQs zuteilen ). Diese beiden Ports sind jedoch deaktiviert.

Gibt es eine Möglichkeit den Kernel dazu zu zwingen, auch die unbenutzten IRQs zu verwenden bzw. die IRQ-Vergabe auf mehr als nur IRQ 10+11 zu verteilen? Zumindest IRQ 5 ( sowie 3,4 und 7 - die kann ich nämlich im BIOS fest Parallelport & Co. zuteilen ) sollte er noch verwenden.

Da laut modinfo das Modul für die WLAN-Karte keine Möglichkeit bietet fest einen IRQ zu vergeben fällt die Möglichkeit, diesem z.B. IRQ 5 aufzuzwingen, flach.

-hanky-

zyrusthc
27.11.06, 04:12
Trotz das ne Menge auf IRQ10 und IRQ11 liegt tretten keine Errors auf!

ERR: 0

Wenn der Hersteller des Notebooks "Welches das ist kann man hier nur raten :rolleyes: " keine Optionen im Bios anbietet dann hat das sicher seinen Grund.
Möglichkeit: Biosupdate durchführen

Das von dir beschriebene Problem wird aber höstwahrscheinlich mit dem Chipsatz der Wlankarte"lspci :rolleyes: " zusammenhängen.

Tritt das Problem auf sobald das Kernelmodul für die Karte geladen wird?
Wenn ja , hättest du ja noch die Möglichkeit es mit dem ndiswrapper zu versuchen , zwar eine unschöne Methode , aber ein Versuch währe es wert.

Ich vermute mal das der Treiber für den Chipsatz der Wlankarte einen bestimmten IRQ haben möchte , vieleicht kannst du sogar den Kernelmodul ein Parameter mitgeben in der ein IRQ zugwiesen wird.
bsp io=0x300 irq=7
Habe das mal irgentwo gelesen das das bei einigen Treibern funktioniert.

So nun kannst noch nen bischen rumprobieren und das Ergebnis posten.

Greeez Oli

-hanky-
27.11.06, 16:10
Trotz das ne Menge auf IRQ10 und IRQ11 liegt tretten keine Errors auf!

ERR: 0

Wenn der Hersteller des Notebooks "Welches das ist kann man hier nur raten :rolleyes: " keine Optionen im Bios anbietet dann hat das sicher seinen Grund.
Möglichkeit: Biosupdate durchführen


Hi, Bios ist bereits die aktuellste Version. Hersteller ist Acer ( Travelmate 661 LCi ), allerdings wird das kaum weiterhelfen nehme ich mal an. Einen konkreten Grund wieso mir die Optionen vorenthalten werden kann ich ehrlich gesagt nicht erkennen - selbst das Bios eines beliebigen Billigmainboards bietet mir heute detailliertere Einstellmöglichkeiten. Da wurde einfach gespart bzw. davon ausgegangen dass der Verbraucher davon eh nie Gebrauch macht.



Das von dir beschriebene Problem wird aber höstwahrscheinlich mit dem Chipsatz der Wlankarte"lspci :rolleyes: " zusammenhängen.


Ich weiß schon welcher Chipsatz das ist ( Atheros AR5212 ) und der Fehler hängt auch definitiv mit dem Chipsatz zusammen ( habe noch eine andere Karte eingebaut, der Cardbus-Slot kann es also nicht sein ). Wie gesagt, mein Problem liegt nicht darin herauszufinden woran es liegt, das weiß ich bereits ( die Fehlermeldung die ich gepostet habe findet sich auch im Entwicklerforum etc. ). Mich interessiert momentan eher welche Möglichkeiten mir der Kernel bietet auf die IRQ-Vergabe einzuwirken. Deswegen habe ich auch darauf verzichtet detaillierte Angaben zur Karte selbst zu posten.



Tritt das Problem auf sobald das Kernelmodul für die Karte geladen wird?
Wenn ja , hättest du ja noch die Möglichkeit es mit dem ndiswrapper zu versuchen , zwar eine unschöne Methode , aber ein Versuch währe es wert.


Jein. Das Problem tritt auf sobald die Karte eingesteckt wird ( dann wird das Modul automatisch mitgeladen, falls nicht bereits geschehen ). Das alleinige Laden des Moduls funktioniert; sobald ich die Karte entferne läuft der Laptop wieder völlig normal.

Ndiwsrapper nutze ich nicht gern, in dem Fall bleibe ich lieber bei meiner internen ipw2100. Nutze WLAN in 90% der Fälle eh nur zum Surfen und da reichen 11 mbit.



Ich vermute mal das der Treiber für den Chipsatz der Wlankarte einen bestimmten IRQ haben möchte , vieleicht kannst du sogar den Kernelmodul ein Parameter mitgeben in der ein IRQ zugwiesen wird.
bsp io=0x300 irq=7
Habe das mal irgentwo gelesen das das bei einigen Treibern funktioniert.


Habe bereits nachgesehen, laut modinfo wird das nicht unterstützt. Auch das Modul für den Cardbus-Slot bietet keine solche Möglichkeit.



So nun kannst noch nen bischen rumprobieren und das Ergebnis posten.

Greeez Oli

Ich habe bereits mit diversen Bootparametern zu dem Thema herumgespielt, z.B. acpi_irq_balance, acpi_irq_nobalance, acpi_irq_pci=..., pci=irqmask=...,pci=biosirq, pci=assign-busses, pci=routeirq, ...

Leider brachte keinen einen nennenswerten Erfolg. Nicht nur dass das Problem weiterhin bestand, auch die Ausgabe von "cat /proc/interrupts" zeigte deutlich dass nach wie vor weder IRQ 3,4,5 noch 7 vergeben wurden, es änderte sich schlicht gar nichts.

Da ich irgendwann die Lust verloren habe wegen jeder kleinen Änderung neu zu booten habe ich beschlossen einfach hier nachzufragen, da ich mich wie gesagt auch nicht im Detail mit dem Interruptmanagement auseinandergesetzt habe.

-hanky-

frankpr
27.11.06, 21:45
Den Karten selbst läßt sich normalerweise kein IRQ zuordnen. Über Optionen in der PCMCIA Konfiguration läßt sich aber der IRQ beeinflussen, den der Kontroller bekommt. Mußte ich bei meinem alten Notebook auch machen. Treiber war da ebenfalls yenta_socket. Wenn ich noch irgendwo die alten Konfigurationsdateien finde, poste ich sie Morgen. Ist schon über 2 Jahre her.
Was Du eventuell auch noch versuchen kannst ist, den APIC Support einzuschalten. Vielleicht bekommt dann der Kontroller einen der höheren IRQ's und es funktioniert damit. Da es ein Rechner mit ICH4 ist, sollte auch eine CPU drin stecken, die einen APIC hat. Wenn ich mich recht erinnere, hatten Intel Uniprozessoren ab dem PIII einen.

-hanky-
27.11.06, 22:17
Den Karten selbst läßt sich normalerweise kein IRQ zuordnen. Über Optionen in der PCMCIA Konfiguration läßt sich aber der IRQ beeinflussen, den der Kontroller bekommt. Mußte ich bei meinem alten Notebook auch machen. Treiber war da ebenfalls yenta_socket. Wenn ich noch irgendwo die alten Konfigurationsdateien finde, poste ich sie Morgen. Ist schon über 2 Jahre her.
Was Du eventuell auch noch versuchen kannst ist, den APIC Support einzuschalten. Vielleicht bekommt dann der Kontroller einen der höheren IRQ's und es funktioniert damit. Da es ein Rechner mit ICH4 ist, sollte auch eine CPU drin stecken, die einen APIC hat. Wenn ich mich recht erinnere, hatten Intel Uniprozessoren ab dem PIII einen.

Hi,

wäre super wenn du mal nach den alten Konfigurationsdateien suchen könntest. Mir würde es auf jeden Fall reichen wenn ich dem Controller einen anderen IRQ zuteilen kann, 5 ist denke ich auf alle Fälle frei, zur Not auch 3/4 oder 7.

APIC müsste, wenn ich mich nicht komplett irre, im Kernel aktiviert sein. Werde das aber nachsehen und nachprüfen.

-hanky-

edit: Ich hab mal rasch in die Richtung recherchiert. Ich denke du meinst die /etc/pcmcia/config.opts ( kann je nach Distribution vermutlich variieren )?

Dort gibt es den Schalter


"exclude irq X"

bei dem bei mir IRQ 4 und 7 standardmäßig deaktiviert sind ( serieller/paralleler Port laut laut Kommentar, kommt hin ). Das wäre ja mal ein Ansatzpunkt, eventuell diese beiden IRQs für PCMCIA freizugeben, ich habe die Ports ja sowieso deaktiviert. Allerdings macht mich folgende Aussage ganz zu Beginn der Konfigurationsdatei stutzig:




[...]
# With the kernel PCMCIA subsystem, these settings also have no effect
# at all on resources used for 32-bit CardBus cards. Those are set by
# the PCI hotplug subsystem.
[...]


Die Karte ist meines Wissens nämlich eine 32bit-Cardbus-Karten oder besser gesagt - es würde mich wundern wenn sie das nicht wäre. Aber ausprobieren geht bekanntlich über studieren ;)

frankpr
28.11.06, 15:17
Die Konfigurationsdateien habe ich nicht mehr gefunden, aber noch einen Link zu einem deutschsprachigen HowTo:
http://www.linuxhaven.de/dlhp/HOWTO/DE-PCMCIA-HOWTO.html
Interessant ist in dem Fall Kapitel 5.1:
http://www.linuxhaven.de/dlhp/HOWTO/DE-PCMCIA-HOWTO-5.html#ss5.1
Nach dieser Anleitung bin ich seinerzeit auch vorgegangen und es hat problemlos funktioniert.

-hanky-
03.12.06, 11:17
So, hat etwas länger gedauert.

Habe jetzt mal deine Tipps ausprobiert, leider ohne Erfolg. Ich vermute allerdings dass die config.opts gar nicht mehr ausgelesen wird bei Cardbus-Karten, sondern dass deren Ressourcen auf andere Art und Weise vergeben werden ( d.h. nicht über den cardmgr von pcmcia-cs sondern über hotplug - nachzulesen auch unter [1] ).

Ich habe zudem jetzt mal yenta_socket mit der Option "override_bios=1" geladen, zeigte jedoch keine Wirkung. So langsam bin ich mit meinem Latein dann auch am Ende.

Ich muss vielleicht dazu sagen dass das vermutlich kein Problem von Linux ist sondern eine Inkompatibilität zwischen Laptop/Karte. Mein Vater hatte damals auf dem Laptop Windows XP und auch dort wurde das System unerträglich langsam + der Mauszeiger ruckelte nach dem Einlegen der Karte. Aus dem Grund hat er sie damals auch ersetzt ( gegen eine D-Link mit gleichen Chipsatz und damit gleichen Problemen wie sich herausstellen sollte :ugly: )

Meine Hoffnung war halt dass es etwas mit den IRQs zu tun hat und ich mit ein wenig Trickserei doch noch zu einer funktionierenden Karte komme.

-hanky-

[1] http://qref.sourceforge.net/Debian/reference/ch-kernel.de.html