Re: SAA7146 DMA buffer overflow

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

 



On Tue, Feb 14, 2006, Ingo Schneider wrote:
> I hava a problem that I loose TS packets due to overruns of the SAA 7146 
> DMA buffer when the system is under I/O load (e.g. backup).
> 
> I modified the budget-core.c to give warning when the buffer is nearly 
> full to verify that this is really the cause (see code below).
> The simplest thing would be to increase the buffer size. The current 
> size = 1024 TS packets, about 192k.

Processing is done from the irq handler (well, actually from
a tasklet triggered by irq). For a 30Mbit/s stream
this buffer holds ~50ms worth of TS packets which are then pushed
into a larger ringbuffer where it waits to be picked up by read()
from the demux/dvr device. If the DMA buffer overflows you have
an irq/tasklet latency problem.

If your irqs/tasklets are delayed more than 50ms you need to find
out why. First check hdparm settings if you have ATA disk.
Second consider trying -rt kernel.

If you just try to increase the buffer size the vpeirq
might create similar latency problems for other drivers ;-/
IIRC the saa7146 has some hw bugs which restrict DMA
settings.

One thing you could try is to call vpeirq() directly from
irq handler (i.e. replace the tasklet_schedule() call).


HTH,
Johannes

_______________________________________________

linux-dvb@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

[Index of Archives]     [Linux Media]     [Video 4 Linux]     [Asterisk]     [Samba]     [Xorg]     [Xfree86]     [Linux USB]

  Powered by Linux