On Friday 20 July 2007 18:16:23 Mark Bryars wrote:
> Hans Verkuil wrote:
> > I've never been able to get it working again without a full reboot.
> > This might indicate that something else is wrong. Did you check the
> > kernel log to verify that that card did have a DMA TIMEOUT?
>
> I shall try and get evidence of it happening again, if indeed it
> does, ever.
>
> > However, I do recommend that you upgrade to ivtv-0.10.5 (just
> > released). See the comments with the 0.10.5 announcement why that
> > is a good idea
>
> I upgraded to 2.6.22.1 instead, and I put in two new WinTV500 cards

In that case you need to apply the attached patch.

> Both new wintv500 (with samsung tuners sigh) DMA TIMEOUT'ed within
> 30mins the existing wintv500 (philips tuner) is still running OK.

Pure luck. The tuner has definitely no link to DMA timeouts.

> I dont see any ENC DMA ERROR b's anymore with this driver/kernel, but
> i do still get the TIMEOUTS

That's because the debug level was changed from 1 to 0. 
Run 'ivtvctl -D1' to enable those messages again.

> > What chipset/CPU are you using BTW? Are you certain you do not have
> > a CPU frequency changer daemon or whatever running? This tends to
> > be one of the biggest culprits: changing the CPU frequency on the
> > fly seems to wreak havoc on quite a few systems. My new Asus P5K-E
> > motherboard is the first one that remains stable when I do that, on
> > all other nVidia/ATI motherboards that I have the DMA engine just
> > dies within a few minutes of continuous frequency changing.
>
> One thing to note is that with hyperthreading enabled, the system
> keeps running fine after a timeout, but with hyperthreading disabled
> the system freezes and reboots. (untested disabling on the lastest
> build, this was 2.6.19.1 and 0.10.3)

Really? I'd better put that on my lists of things to check. Lately I've 
been using multi-core CPUs almost exclusively, so I probably wouldn't 
notice a bug like that.

> Definately no cpu frequency changer, disabled in kernel, and almost
> no processes running at all.
>
> Hardware wise lspci shows this (i'll get the exact chipset for you
> next week)
>
> 00:00.0 Host bridge: Intel Corporation 915G/P/GV/GL/PL/910GL Express
> Memory Controller Hub (rev 0e)
> 00:02.0 VGA compatible controller: Intel Corporation 82915G/GV/910GL
> Express Chipset Family Graphics Controller (rev 0e)
>
> I've got the kernel compiled with dynticks at the moment, i've turned
> that off and i'm rebuilding to see how that goes. Then to try
> changing the various kernel preemption settings.

Regards,

     Hans
diff -r ce6e2e8c859f linux/drivers/media/video/ivtv/ivtv-irq.c
--- a/linux/drivers/media/video/ivtv/ivtv-irq.c	Tue Jul 17 18:50:46 2007 +0200
+++ b/linux/drivers/media/video/ivtv/ivtv-irq.c	Wed Jul 18 18:02:56 2007 +0200
@@ -409,6 +409,11 @@ static void ivtv_dma_enc_start(struct iv
 	/* Mark last buffer size for Interrupt flag */
 	s->SGarray[s->SG_length - 1].size |= cpu_to_le32(0x80000000);
 
+	if (s->type == IVTV_ENC_STREAM_TYPE_VBI)
+		set_bit(IVTV_F_I_ENC_VBI, &itv->i_flags);
+	else
+		clear_bit(IVTV_F_I_ENC_VBI, &itv->i_flags);
+
 	if (ivtv_use_pio(s)) {
 		for (i = 0; i < s->SG_length; i++) {
 			s->PIOarray[i].src = le32_to_cpu(s->SGarray[i].src);
@@ -603,7 +608,6 @@ static void ivtv_irq_enc_start_cap(struc
 				data[0], data[1], data[2]);
 		return;
 	}
-	clear_bit(IVTV_F_I_ENC_VBI, &itv->i_flags);
 	s = &itv->streams[ivtv_stream_map[data[0]]];
 	if (!stream_enc_dma_append(s, data)) {
 		set_bit(ivtv_use_pio(s) ? IVTV_F_S_PIO_PENDING : IVTV_F_S_DMA_PENDING, &s->s_flags);
@@ -640,7 +644,6 @@ static void ivtv_irq_enc_vbi_cap(struct 
 	   then start a DMA request for just the VBI data. */
 	if (!stream_enc_dma_append(s, data) &&
 			!test_bit(IVTV_F_S_STREAMING, &s_mpg->s_flags)) {
-		set_bit(IVTV_F_I_ENC_VBI, &itv->i_flags);
 		set_bit(ivtv_use_pio(s) ? IVTV_F_S_PIO_PENDING : IVTV_F_S_DMA_PENDING, &s->s_flags);
 	}
 }
_______________________________________________
ivtv-devel mailing list
[email protected]
http://ivtvdriver.org/mailman/listinfo/ivtv-devel

Reply via email to