Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: CVS MythTV and DEC2000-t kernel panic: oops dump included



On Wednesday 07 January 2004 8:13 pm, Des Herriott wrote:
> Here's the problem I mailed about a few days ago.  Got a bit more info
> now.  Basically, this happens every time I try to watch live TV with
> mythtv (i.e. as soon as I press the "Watch TV" button) - it's triggering
> a panic in the DEC2000-t driver.  It also panics when mythbackend starts
> a scheduled recording.
>
> I've also seen it happen with other kernel versions: 2.4.23 and
> 2.6.0-mm2 (with all the dvb-kernel patches).
>
> Interestingly, it only started happening when I upgraded to the latest
> MythTV CVS code last weekend (and I hadn't changed dvb-kernel version).
>   I don't know what changed in MythTV regarding DVB (my email to the
> myth-users list didn't get a response), but something's obviously
> tickled a bug somewhere...

Thanks, I think you've confirmed a suspicion I was beginning to have.  Please 
try the attached patch, and let me know the results.

Cheers,
Alex
Index: linux/drivers/media/dvb/ttusb-dec/ttusb_dec.c
===================================================================
RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/ttusb-dec/ttusb_dec.c,v
retrieving revision 1.30
diff -u -r1.30 ttusb_dec.c
--- linux/drivers/media/dvb/ttusb-dec/ttusb_dec.c	4 Jan 2004 22:07:57 -0000	1.30
+++ linux/drivers/media/dvb/ttusb-dec/ttusb_dec.c	7 Jan 2004 21:05:38 -0000
@@ -125,6 +125,7 @@
 	struct tasklet_struct	urb_tasklet;
 	spinlock_t		urb_frame_list_lock;
 
+	struct dvb_demux_filter	*av_filter;
 	struct list_head	filter_info_list;
 	spinlock_t		filter_info_list_lock;
 
@@ -285,9 +286,10 @@
 
 static int ttusb_dec_av_pes2ts_cb(void *priv, unsigned char *data)
 {
-	struct dvb_demux_feed *dvbdmxfeed = (struct dvb_demux_feed *)priv;
+	struct ttusb_dec *dec = (struct ttusb_dec *)priv;
 
-	dvbdmxfeed->cb.ts(data, 188, 0, 0, &dvbdmxfeed->feed.ts, DMX_OK);
+	dec->av_filter->feed->cb.ts(data, 188, 0, 0,
+				    &dec->av_filter->feed->feed.ts, DMX_OK);
 
 	return 0;
 }
@@ -311,9 +313,9 @@
 	ttusb_dec_send_command(dec, 0x50, sizeof(b), b, NULL, NULL);
 
 	dvb_filter_pes2ts_init(&dec->a_pes2ts, dec->pid[DMX_PES_AUDIO],
-			       ttusb_dec_av_pes2ts_cb, dec->demux.feed);
+			       ttusb_dec_av_pes2ts_cb, dec);
 	dvb_filter_pes2ts_init(&dec->v_pes2ts, dec->pid[DMX_PES_VIDEO],
-			       ttusb_dec_av_pes2ts_cb, dec->demux.feed);
+			       ttusb_dec_av_pes2ts_cb, dec);
 	dec->v_pes_length = 0;
 	dec->v_pes_postbytes = 0;
 }
@@ -805,6 +807,8 @@
 
 	dprintk("\n");
 
+	dec->av_filter = dvbdmxfeed->filter;
+
 	switch (dvbdmxfeed->pes_type) {
 
 	case DMX_TS_PES_VIDEO:
@@ -1224,7 +1228,8 @@
 
 	dprintk("%s\n", __FUNCTION__);
 
-	if ((result = dvb_register_adapter(&dec->adapter, dec->model_name)) < 0) {
+	if ((result = dvb_register_adapter(&dec->adapter,
+					   dec->model_name)) < 0) {
 		printk("%s: dvb_register_adapter failed: error %d\n",
 		       __FUNCTION__, result);
 

Home | Main Index | Thread Index