lkml.org 
[lkml]   [2008]   [Jan]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRegression: VIDIOCGMBUF ioctl hangs on bttv driver (2.6.24-rc6)
    From
    Hi,

    During some tests I've noticed that the VIDIOCGMBUF ioctl hangs on my
    bttv video device. It simply does not return and the process is stuck in
    the D+ state. With Kernel 2.6.22.9 the (attached) testcase works like a
    charm. The V4L2 interface is working with 2.6.24, too (at least displays
    xawtv the usual pixel snow).

    Hard and Software:
    64 bit Linux 2.6.24-rc6 (todays pull) on a Intel Core 2 Duo

    WinTV PCI:
    05:02.0 0400: 109e:036e (rev 02)
    05:02.1 0480: 109e:0878 (rev 02)

    dmesg:
    Rincewind:~# dmesg |grep bttv
    bttv: driver version 0.9.17 loaded
    bttv: using 8 buffers with 2080k (520 pages) each for capture
    bttv: Bt8xx card found (0).
    bttv0: Bt878 (rev 2) at 0000:05:02.0, irq: 23, latency: 64, mmio: 0xdfefe000
    bttv0: detected: Hauppauge WinTV [card=10], PCI subsystem ID is 0070:13eb
    bttv0: using: Hauppauge (bt878) [card=10,autodetected]
    bttv0: gpio: en=00000000, out=00000000 in=00ffffdb [init]
    bttv0: Hauppauge/Voodoo msp34xx: reset line init [5]
    bttv0: Hauppauge eeprom indicates model#61324
    bttv0: tuner type=14
    bttv0: i2c: checking for MSP34xx @ 0x80... found
    bttv0: i2c: checking for TDA9875 @ 0xb0... not found
    bttv0: i2c: checking for TDA7432 @ 0x8a... not found
    bttv0: registered device video0
    bttv0: registered device vbi0
    bttv0: registered device radio0
    bttv0: PLL: 28636363 => 35468950 .. ok

    from /proc/interrupts:
    23: 55900 0 IO-APIC-fasteoi ehci_hcd:usb2, uhci_hcd:usb5, bttv0

    If I could help with more logs, a bisection, some debug printks, please contact me.

    Thanks!

    Gregor
    #include <stdio.h>
    #include <stdlib.h>
    #include <assert.h>
    #include <errno.h>

    #include <sys/ioctl.h>
    #include <sys/mman.h>
    #include <fcntl.h>
    #include <unistd.h>

    #include <linux/ioctl.h>
    #include <linux/videodev.h>

    int main( int argc, char *argv[])
    {
    const char device[] = "/dev/video0";
    int r;

    int fd = open (device, O_RDWR);
    assert(fd);

    struct video_mbuf mbuf = { 0 };
    r = ioctl (fd, VIDIOCGMBUF, &mbuf);
    assert (r == 0);

    printf ("Frames: %i\n", mbuf.frames);

    close (fd);

    return 0;
    }
    \
     
     \ /
      Last update: 2008-01-05 23:37    [W:0.025 / U:63.640 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site