Full-TS Mod für FF-Karten

  • Zitat

    Originally posted by UFO
    Schau mal im BIOS, wie der PCI-Latency-Timer eingestellt ist.
    Der Wert 32 erscheint mir niedrig. Versuche mal 64 oder 128.


    Der Wert war auf 32, eine Erhöhung auf 128 hat leider auch keine Verbesserung erzielt.


    Ich frage mich, ob das Problem nicht auch bei "low-level" Tools, wie mode2 auftreten sollte. Der Strom an pulses und spaces der dort geliefert wird, erscheint mir ziemlich konstant, auch wenn nebenbei der VDR läuft.

  • Zitat

    Original von jowi24


    Der Wert war auf 32, eine Erhöhung auf 128 hat leider auch keine Verbesserung erzielt.


    War auch nur eine schwache Hoffnung. :schiel


    Diese Einstellungen wirken sich eigentlich erst aus, wenn die Last auf dem PCI-Bus so hoch ist, daß die Bandbreite zwischen den Komponenten aufgeteilt werden muß. Eine einzige DVB-Karte erzeugt keine nennenswerte Last auf dem PCI-Bus...


    Zitat


    Ich frage mich, ob das Problem nicht auch bei "low-level" Tools, wie mode2 auftreten sollte. Der Strom an pulses und spaces der dort geliefert wird, erscheint mir ziemlich konstant, auch wenn nebenbei der VDR läuft.


    Eigentlich müßte das Problem damit ebenso auftreten. Irgendetwas müßte sich ändern, wenn VDR läuft.


    Sorry, ich kann Dir bzgl. LIRC nicht weiterhelfen, denn LIRC habe ich schon vor mehr als 6 Jahren über Bord geworfen. ;D


    CU
    Oliver

  • Zitat

    Original von UFO
    Sorry, ich kann Dir bzgl. LIRC nicht weiterhelfen, denn LIRC habe ich schon vor mehr als 6 Jahren über Bord geworfen. ;D


    Danke für den Hinweis ;) Ich habe mir grade das remote-Plugin installiert, den IR-Sensor direkt an die DVB-Karte angeschlossen und eine alte RC5-kompatible FB aus dem Schrank gekramt. Das ist das erste Mal, dass ich den full-ts-gemoddeten VDR richtig mit FB nutzen kann. :bounce5


    Was ein Workaround... :rolleyes:

  • Könnte es sein dass die FF im FullTS-Mode einen anderen (oder sogar einen zweiten) IRQ benutzt als normal, und dass dieser dann zufällig identisch mit dem COM1 (standardmässig IRQ4) ist? Dann würde, falls vorhanden, der COM2 (IRQ3) für LIRC besser funktionieren.


    Poste doch mal bitte die Ausgabe von

    Code
    cat /proc/interrupts

    mit und ohne FullTS. Das könnte für andere hilfreich sein.


    Grüße
    Marcus


    EDIT: Sorry, hab grad gemerkt dass ich zu spät bin. Also vergesst es...

    Einmal editiert, zuletzt von Marcus 2208 ()

  • Zitat

    Original von Marcus 2208
    Könnte es sein dass die FF im FullTS-Mode einen anderen (oder sogar einen zweiten) IRQ benutzt als normal, und dass dieser dann zufällig identisch mit dem COM1 (standardmässig IRQ4) ist? Dann würde, falls vorhanden, der COM2 (IRQ3) für LIRC besser funktionieren.


    Die DVB-Karte liegt auf IRQ 11, COM1 auf IRQ 4. Sowohl mit als auch ohne Full-TS. Trotzdem vielen Dank für den Hinweis. :)

  • Zitat

    Original von jowi24


    Danke für den Hinweis ;) Ich habe mir grade das remote-Plugin installiert, den IR-Sensor direkt an die DVB-Karte angeschlossen und eine alte RC5-kompatible FB aus dem Schrank gekramt. Das ist das erste Mal, dass ich den full-ts-gemoddeten VDR richtig mit FB nutzen kann. :bounce5


    Was ein Workaround... :rolleyes:


    :lol2


    Wobei sich LIRC und FullTS-Mod sicher nicht ausschließen (sonst würden sich viel mehr Leute beschweren).
    Da muß bei Dir noch irgendein unbekannter Faktor mitspielen. Ich denke, Du hättest das gleiche Problem bekommen, wenn Du eine gewöhnliche Budget-Karte eingebaut hättest...


    CU
    Oliver

  • Bei aktiven Full-TS-Mod wird alle 16KByte übertragene Daten ein Interrupt ausgelöst, der wiederum ein Tasklet aktiviert, das einen Software-Demuxer startet. Der SW-Demuxer sperrt alle Interrupts und scannt dann die Packete. Kann es sein, daß die CPU so schwachbrüstig ist, daß der Scan zu lange dauert und die LIRC-Interrupts dadurch blockiert werden?


    Gruß
    e9hack

  • Zitat

    Original von e9hack
    Bei aktiven Full-TS-Mod wird alle 16KByte übertragene Daten ein Interrupt ausgelöst, der wiederum ein Tasklet aktiviert, das einen Software-Demuxer startet. Der SW-Demuxer sperrt alle Interrupts und scannt dann die Packete. Kann es sein, daß die CPU so schwachbrüstig ist, daß der Scan zu lange dauert und die LIRC-Interrupts dadurch blockiert werden?


    Dies ist erst seit Changeset http://linuxtv.org/hg/v4l-dvb/rev/aa3e5cc1d833 so.
    War imho keine gute Idee! :tdw


    CU
    Oliver

  • Zitat

    Original von e9hack


    Wenn das wirklich die Ursache ist, könnte av7110 die Daten in TS-Packeten an den SW-Demuxer weiterreichen. Dann werden die Interrupts nicht so lange gesperrt.


    Sehe ich nicht so. Dieser Changeset sollte rückgängig gemacht werden.


    Das ganze war nicht ohne Grund so geschrieben, wie es war: Man verarbeitet keine Datenpuffer mit gesperrten Interrupts.
    Und av7110 und budget*-Treiber verwenden Tasklets, damit man die Interrupts eben nicht sperren muß.


    Damit soll sich aber beschäftigen, wer will. Ich habe keine Lust mehr, mit den v4l-Jungs über Grundlagen der Programmierung zu diskutieren, um zu verhindern, daß irgendetwas kaputt gemacht wird. Ich bin es leid.


    CU
    Oliver

  • Zitat

    Original von UFO
    Wobei sich LIRC und FullTS-Mod sicher nicht ausschließen (sonst würden sich viel mehr Leute beschweren).
    Da muß bei Dir noch irgendein unbekannter Faktor mitspielen. Ich denke, Du hättest das gleiche Problem bekommen, wenn Du eine gewöhnliche Budget-Karte eingebaut hättest...


    Sehe ich auch so. Wenn ich mal eine Budget in die Hand kriege, probiere ich es auf jeden Fall mal aus, rein aus Neugierde...

  • Zitat

    Damit soll sich aber beschäftigen, wer will. Ich habe keine Lust mehr, mit den v4l-Jungs über Grundlagen der Programmierung zu diskutieren, um zu verhindern, daß irgendetwas kaputt gemacht wird. Ich bin es leid.


    Naja, sollte aber auf jeden Fall in Ordnung gebracht werden. Der FullTS-Mod ist eine geniale Sache, schade wenn´s durch sowas kaputt gemacht würde!

  • Zitat

    Original von Marcus 2208


    Naja, sollte aber auf jeden Fall in Ordnung gebracht werden. Der FullTS-Mod ist eine geniale Sache, schade wenn´s durch sowas kaputt gemacht würde!


    Blöde Frage: Gibt es eine Version mit Full-TS und ohne besagte Änderung, die ich mal ausprobieren könnte? Nur um zu verifizieren, ob es da einen Zusammenhang gibt, oder nicht?


    Diese hier, beispielsweise: http://linuxtv.org/hg/~endriss/v4l-dvb-av7110-full-ts-mod ?

  • Zitat

    Original von UFO
    Sehe ich nicht so. Dieser Changeset sollte rückgängig gemacht werden.


    Das ganze war nicht ohne Grund so geschrieben, wie es war: Man verarbeitet keine Datenpuffer mit gesperrten Interrupts.
    Und av7110 und budget*-Treiber verwenden Tasklets, damit man die Interrupts eben nicht sperren muß.


    Damit soll sich aber beschäftigen, wer will. Ich habe keine Lust mehr, mit den v4l-Jungs über Grundlagen der Programmierung zu diskutieren, um zu verhindern, daß irgendetwas kaputt gemacht wird. Ich bin es leid.


    Hat schon jemand diese Änderung als Ursache des Problems ausgemacht?


    Warum wurde die Änderung überhaupt durchgeführt?


    Wer kann das Problem mit LIRC mal bei denen bekannt machen?

  • Zitat

    Original von Mreimer
    Hat schon jemand diese Änderung als Ursache des Problems ausgemacht?


    Warum wurde die Änderung überhaupt durchgeführt?


    Wer kann das Problem mit LIRC mal bei denen bekannt machen?


    Die Änderung war im September, wie aus obigem Link auf das Repository ersichtlich. Noch ist der Zusammenhang meines Erachtens aber nicht bewiesen.

  • Zitat

    Original von jowi24


    Blöde Frage: Gibt es eine Version mit Full-TS und ohne besagte Änderung, die ich mal ausprobieren könnte? Nur um zu verifizieren, ob es da einen Zusammenhang gibt, oder nicht?


    Diese hier, beispielsweise: http://linuxtv.org/hg/~endriss/v4l-dvb-av7110-full-ts-mod ?


    In diesem Repository ist der fragliche Changeset nicht enthalten.


    Habe gerade nachgeschaut:
    Der Changeset ist seit 2.6.27 im Kernel. Ich halte es für wahrscheinlich, daß die Probleme von oben durch diesen Patch verursacht werden. Wer also Interrupt-Probleme hat, sollte diesen Changeset probehalber rückgängig machen.


    Ohne den Hinweis von e9hack wäre ich niemals darauf gekommen. Ich wußte gar nicht, was die da eingebaut haben. Danke nochmal!


    CU
    Oliver

  • Hi,


    ich habe in dvb_dmx_swfilter_packets() zusätzlichen Debug-Code eingefügt, der alle 10000 Aufrufe für die nächsten 20 Aufrufe die Laufzeit innerhalb des Spinlocks bei gesperrten Interrupts mißt:

    Bei mir läuft das ganze mit einer Budget-Karte. Die Ergebnisse sollten aber mit dem Full-TS-Mod vergleichbar sein. Die CPU läuft aktuell mit 1GHz:


    Eigentlich hätte ich ja erwartet, daß ich Aufrufe für ca. 87 TS-Packete sehe, was einem Interrupt/Tasklet alle 16kByte entspricht. Die 349 TS-Packete entsprechenaber einer Blockgröße von 64kByte. Momentan verstehe ich nicht, warum immer ca. 6 kurze und danach wieder ein langes Packet kommt. Wenn ich die CPU-Frequenz auf 1,8GHz erhöhe werden die Laufzeiten entsprechend kürzer. Mit der Interruptsperre von ca. 100µs funktioniert Lirc über den COM-Port mit einer RC5-Fernbedienung problemlos. Bei RC5 ist die kürzeste Pulszeit ca. 890µs. Lirc scheint da tollerant zu sein. Andere Protokolle haben kürzere mögliche Pulszeiten. Bei NEC-Protokoll sind das z.B. 560µs. Wenn die CPU etwas lahm ist und die Sperrzeiten länger werden, kann Lirc Probleme bekommen.


    Gruß
    e9hack

  • Zitat

    Original von e9hack
    Hi,


    ich habe in dvb_dmx_swfilter_packets() zusätzlichen Debug-Code eingefügt, der alle 10000 Aufrufe für die nächsten 20 Aufrufe die Laufzeit innerhalb des Spinlocks bei gesperrten Interrupts mißt:
    ...
    Eigentlich hätte ich ja erwartet, daß ich Aufrufe für ca. 87 TS-Packete sehe, was einem Interrupt/Tasklet alle 16kByte entspricht. Die 349 TS-Packete entsprechenaber einer Blockgröße von 64kByte. Momentan verstehe ich nicht, warum immer ca. 6 kurze und danach wieder ein langes Packet kommt. Wenn ich die CPU-Frequenz auf 1,8GHz erhöhe werden die Laufzeiten entsprechend kürzer. Mit der Interruptsperre von ca. 100µs funktioniert Lirc über den COM-Port mit einer RC5-Fernbedienung problemlos. Bei RC5 ist die kürzeste Pulszeit ca. 890µs. Lirc scheint da tollerant zu sein. Andere Protokolle haben kürzere mögliche Pulszeiten. Bei NEC-Protokoll sind das z.B. 560µs. Wenn die CPU etwas lahm ist und die Sperrzeiten länger werden, kann Lirc Probleme bekommen.


    Ich denke, man muß höllisch aufpassen, daß man durch eine Messung nicht die Ergebnisse verfälscht.
    Habe hier folgendes eingebaut, um einfach nur die Größenverteilung zu ermitteln:


    Test mit Full-TS FF-Karte. Nach einiger Zeit ein "cat /sys/module/dvb_core/parameters/ts_cnt" liefert:

    Code
    10503,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,10502,0,20710,295,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0


    Ich finde die Verteilung nicht ungewöhnlich. Die "kleinen" Puffer stammen daher, daß im Tasklet bei einem Wrap des Puffers die Demuxer-Funktion zweimal aufgerufen wird.


    CU
    Oliver

  • Zitat

    Original von jowi24
    Kurze Rückmeldung von meiner Seite: Mit v4l-dvb-av7110-full-ts-mod-adf34f76ab7c funktioniert alles einwandfrei: full_ts + lirc. :)


    Sag ich doch. ;)


    Um ganz sicher zu sein, könntest Du im fehlerhaften Treiber einmal genau diesen Patch herausnehmen:
    Changeset http://linuxtv.org/hg/v4l-dvb/raw-rev/aa3e5cc1d833 (einfach mit "patch -p1 -R" rückgängig machen)


    CU
    Oliver

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!