SAA7146 DMA buffer overflow

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

 



Hello again !

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.

Now what I didn't say is that the buffer size is "on the edge", so there are only spurios buffer overflows,
about 100 in 5 minutes - enough to have bad dropouts, though.
Maybe the buffer has to be increased just a little bit, to hold about 60ms ? I'll try it out this weekend.

When the system has no I/O load at all - except writing out six 3 Mbit-MPEG-2 streams to disk -
the DMA buffer usage is most time 327 or 348 TS packets - so about 33%.

I now changed my source to have a module option for setting the buffer size.
I will test this thing this weekend.
The second thing I'll try then is to re-enable my local APIC in bios, maybe APIC will also work again if the DMA buffer is bigger.

If it works, I'll generate a patch.
When it works with a slightly bigger buffer, I'd change the default value, too. The most important change will be to issue a warning when the buffer is used more than 90% - this should save people with similar problems debugging time ...
the buffers following the DMA buffer actually do report overflows.

Regards,
Ingo Schneider.


P.S.: The weired thing is that my 400 Mhz K6 with 128 MB RAM never had these problems with the same cards ...






_______________________________________________

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