[linux-dvb] problems and workaround when tuning to a channel with DD enabled

Johannes Stezenbach js at linuxtv.org
Mon Jun 6 16:59:04 CEST 2005


On Mon, Jun 06, 2005 at 09:31:30AM +0200, Wolfgang Rohdewald wrote:
> Jun  6 08:24:10 mm kernel: dvb-ttpci: warning: timeout waiting in BlitBitmap: -512, 1
...
> This happens with vdr-1.3.23 and vdr-1.3.25, firmware 261d and the latest experimental
> firmware and unmodified 2.6.12-rc5 if I 
...
> --- linux-2.6.11.11/drivers/media/dvb/ttpci/av7110_hw.c 2005-06-06 09:08:08.000000000 +0200
> +++ linux-2.6.12/drivers/media/dvb/ttpci/av7110_hw.c    2005-06-06 09:15:24.000000000 +0200
> @@ -887,6 +887,13 @@
>         ret = wait_event_interruptible_timeout(av7110->bmpq,
>                                 av7110->bmp_state != BMP_LOADING, 10*HZ);
>         if (ret == -ERESTARTSYS || ret == 0) {
> +               printk("dvb-ttpci: first try: waiting in BlitBitmap: %d, %d\n",
> +                      ret, av7110->bmp_state);
> +               msleep(20);
> +               ret = wait_event_interruptible_timeout(av7110->bmpq,
> +                               av7110->bmp_state != BMP_LOADING, 10*HZ);
> +       }
> +       if (ret == -ERESTARTSYS || ret == 0) {
>                 printk("dvb-ttpci: warning: timeout waiting in BlitBitmap: %d, %d\n",
>                        ret, av7110->bmp_state);
>                 av7110->bmp_state = BMP_NONE;
> 

The code looks broken. If ret == -ERESTARTSYS (is what you get), then it
is no timeout, but wait_event_interruptible_timeout() got interrupted.
I bet vdr is sending some signals around.

Try using wait_event_timeout(..., HZ/5), i.e. non-interruptible but
with a sensible timeout. 10*HZ is much too long, IMHO.

Johannes




More information about the linux-dvb mailing list