[linux-dvb] SAA7146 DMA buffer overflow

Oliver Endriss o.endriss at gmx.de
Wed Feb 15 13:29:27 CET 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.
> I would tend to increase this buffer to about 1 or 2 megabytes to stop 
> getting those TS continuity errors,
> is there a reason why this buffer was chosen to be so small ? Spec of 
> SAA7146 says it can handle 4 megabytes for DMA.

I guess this size was chosen because dma buffer size is usually large
enough. Afaik you are the first one who needs a larger buffer...

Since the driver is widely used on systems with limited memory I vote
against increasing the default value.

But if you deliver a clean patch which adds a module parameter for that,
I will commit it to the hg repository (something like DMA_BUF_SIZE in

> Also, there is a special handling for BUDGET_FS_ACTIVY which has a 
> different buffer "layout" - why is this ?

The buffer size is the same, only the DMA ist configured in a slightly
different way. That must be done to strip the ECC bytes from the data
stream: 188 bytes data + 16 bytes ECC = 204 bytes total.

Other budget cards have a different hardware design and do not require


VDR Remote Plugin available at

More information about the linux-dvb mailing list