• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[Tipp]Hauppauge HVR-1300 mit Kernel >=2.6.38 & 2.6.39

A

Anonymous

Gast
Hi,

Mit Kernel 2.6.38 wurde die v4l1-API rausgeschmissen, weswegen meine HVR-1300 nicht funktionierte. Die Treiber produzierten Deadlocks, was dazu führte, dass tvtime unbenutzbar war und immer in Zombie-Prozessen endete. S2ram und s2disk funktionierten deswegen auch nicht. Ich hatte auch immer einen durchschnittlichen Load-Wert von > 4.5.
Da ich es aber nicht lassen kann, an meinem System herumzubasteln und ich unbedingt eine Lösung wollte, bin ich endlich fündig geworden:
Man muss die cx88-Treiber patchen und den Kernel neu kompilieren:
Code:
cd /home/Herbie/Temp
wget -O cx88-2.6.38-fix-driver-deadlocks.patch 'https://bugzilla.kernel.org/attachment.cgi?id=52902&action=diff&context=patch&collapsed=&headers=1&format=raw'
cd /usr/src/linux
patch -p1 < /home/Herbie/Temp/cx88-2.6.38-fix-driver-deadlocks.patch
Dann ganz normal den Kernel neu bauen.

Quelle: http://raim.codingfarm.de/blog/2011/04/06/hauppauge-wintv-hvr-1300-with-linux-kernel-2-6-38/ Anders als dort beschrieben funktioniert bei mir jetzt tvtime sofort wieder.
 
Hallo,

nun ist mir klar warum bei mir genau diese Fehler aufreten.

Aber (Zitat):
Dann ganz normal den Kernel neu bauen.

Ich habe verschiedene Anleitungen zum Kernel erstellen durchgelesen und als Konzequenz daraus die TV-Karte entfernt --> keine Fehler mehr und kein DVB-T mehr.
Oder gibt es für genau diesen Zweck eine einfache Anleitung zum Kernel bauen?
Habe bisher ca. 5 Sourcen umgewandelt aber sonst keine Erfahrung in diese Richtung.
 
http://kernelnewbies.org, die README.SuSE im Kernel-Source Ordner unter http://en.opensuse.org/Kernel. http://en.opensuse.org/Portal:Kernel, http://en.opensuse.org/index.php?title=Special%3ASearch&redirs=0&search=kernel&fulltext=Search&ns0=1&ns102=1
 
OP
A

Anonymous

Gast
Das Problem besteht leider unter Kernel 2.6.39 auch. Aber oben genannter Patch funktioniert auch mit diesem Kernel.

Noch ein Hinweis:
Die Entwicker haben an den Parametern des ir-kbd-i2c Moduls (--> Fernbedienung) geschraubt, d.h. es gibt dafür keine Parameter mehr (außer debug). Man muss also unter /etc/modprobe.d/ in den zuständigen Dateien die Parameter-Zeile
Code:
options ir-kbd-i2c hauppauge=1
o.ä. entfernen, sonst wird es nicht geladen.
Bei mir war es die Datei /etc/modprobe.d/50-tv.conf. Es kann aber auch in /etc/modprobe.d/99-local.conf stehen.
 
OP
A

Anonymous

Gast
Mit dem gestrigen Update auf 2.6.39.1 wurde das Problem behoben. Hier der Auszug aus dem Changelog:
Code:
commit fa7e5a133b16147d942345d4dd73665a3d8d1bb2
Author: Jonathan Nieder <jrnieder@gmail.com>
Date:   Sun May 1 06:29:56 2011 -0300

    cx88: hold device lock during sub-driver initialization
    
    commit 1d6213ab995c61f7d1d81cf6cf876acf15d6e714 upstream.
    
    cx8802_blackbird_probe makes a device node for the mpeg sub-device
    before it has been added to dev->drvlist.  If the device is opened
    during that time, the open succeeds but request_acquire cannot be
    called, so the reference count remains zero.  Later, when the device
    is closed, the reference count becomes negative --- uh oh.
    
    Close the race by holding core->lock during probe and not releasing
    until the device is in drvlist and initialization finished.
    Previously the BKL prevented this race.
    
    Reported-by: Andreas Huber <hobrom@gmx.at>
    Tested-by: Andi Huber <hobrom@gmx.at>
    Tested-by: Marlon de Boer <marlon@hyves.nl>
    Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 09c90392d070959e7f4b7942482326aa502298f0
Author: Jonathan Nieder <jrnieder@gmail.com>
Date:   Sun May 1 06:29:37 2011 -0300

    cx88: fix locking of sub-driver operations
    
    commit 1fe70e963028f34ba5e32488a7870ff4b410b19b upstream.
    
    The BKL conversion of this driver seems to have gone wrong.
    Loading the cx88-blackbird driver deadlocks.
    
    The cause: mpeg_ops::open in the cx2388x blackbird driver acquires the
    device lock and calls the sub-driver's request_acquire, which tries to
    acquire the lock again.  Fix it by clarifying the semantics of
    request_acquire, request_release, advise_acquire, and advise_release:
    now all will rely on the caller to acquire the device lock.
    
    Based on work by Ben Hutchings <ben@decadent.org.uk>.
    
    Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=31962
    
    Reported-by: Andi Huber <hobrom@gmx.at>
    Tested-by: Andi Huber <hobrom@gmx.at>
    Tested-by: Marlon de Boer <marlon@hyves.nl>
    Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 508d613a04b5af41b4e9e030082dea0c672b1e62
Author: Jonathan Nieder <jrnieder@gmail.com>
Date:   Sun May 1 06:29:16 2011 -0300

    cx88: protect per-device driver list with device lock
    
    commit 8a317a8760cfffa8185b56ff59fb4b6c58488d79 upstream.
    
    The BKL conversion of this driver seems to have gone wrong.  Various
    uses of the sub-device and driver lists appear to be subject to race
    conditions.
    
    In particular, some functions access drvlist without a relevant lock
    held, which will race against removal of drivers.  Let's start with
    that --- clean up by consistently protecting dev->drvlist with
    dev->core->lock, noting driver functions that require the device lock
    to be held or not to be held.
    
    After this patch, there are still some races --- e.g.,
    cx8802_blackbird_remove can run between the time the blackbird driver
    is acquired and the time it is used in mpeg_release, and there's a
    similar race in cx88_dvb_bus_ctrl.  Later patches will address the
    remaining known races and the deadlock noticed by Andi.  This patch
    just makes the semantics clearer in preparation for those later
    changes.
    
    Based on work by Ben Hutchings <ben@decadent.org.uk>.
    
    Tested-by: Andi Huber <hobrom@gmx.at>
    Tested-by: Marlon de Boer <marlon@hyves.nl>
    Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
 
Jetzt habe ich mich schon so gefreut - der WAF hängt langsam doch etwas schief ;-)

Doch bei mir scheint es nicht zu funktionieren. Aktuell ist kernel-desktop-2.6.39-30.1 aus dem tumbleweed-Repro.

Was mich wundert: auch ein zurückführen auf 2.6.37.1-1.2.2 hat meine Karte nicht wieder zu Leben erweckt. Mal sehen. Vielleicht muss ich doch mal das System neu installieren.

Micha :-D
 
2.6.39.1 -> http://download.opensuse.org/repositories/Kernel:/stable/standard/
Ist noch nicht in Tumbleweed - kommt wohl noch.
 
Oben