[linux-dvb] buffer underruns with budget-av/-ci (vpeirq)

Oliver Endriss o.endriss at gmx.de
Wed Oct 18 23:20:50 CEST 2006

Matthias Dahl wrote:
> On Saturday 14 October 2006 16:27, Matthias Dahl wrote:
> > I own a KNC ONE DVB Plus with a Cineview module (Alphacrypt Light). From
> > the beginning I ran into data corruption problems with the mpeg stream as
> > soon as I made the usual X <-> VT switch or put some load on the Athlon64
> > 3500+ machine with its RAID 5 (3 SATA disks).
> >
> > After some looking around, I soon discovered it was related to a buffer
> > underrun because the following showed up in my logs every time a corruption
> > occurred:
> >
> > saa7146 (0) vpeirq: used 1 times >80% of buffer (65612 bytes now)
> >
> > I searched the mailing list archives and learned this problem had been
> > reported earlier and that I should increase the DMA buffer size- which I
> > did. Running now at the maximum of 1410kb, things have pretty much been
> > fixed. I can put load on the machine, do random X <-> VT switches and
> > everything works most of the time. But there still is the occasional
> > underrun even though the machine is not under load.
> ...

Sorry, I have no real solution. Iirc those problems happen with SATA
systems only. A DMA buffer overflow occurres if the VPE tasklet is not
executed within a reasonable time frame.

Even on a slow machine you should never see this message with default
buffer size. (I'm using a PIII-800 and I can run KDE, compile kernels
etc. while recording and/or watching TV with vdr.)

> I know its bad practice to reply to oneself, nevertheless I wanted to add more 
> information to this: having just switched over to 2.6.19rc2, the problem has 
> gotten worse. Now every single X <-> VT switch results in a...
> saa7146 (0) vpeirq: used 1 times >80% of buffer (65612 bytes now)
> ... msg. Sometimes I get corruptions in the mpeg stream because of this and 
> sometimes it's just fine. Even during normal playback of a stream, those msgs 
> appear without any load on the machine. (with 2.6.19rc2 that is)

Please verify that your DVB card does not share interrupts with the SATA

Check your kernel configuration. Setting
- preemptible kernel
- system timer speed HZ=1000
might help a little bit.

You might also try the CFQ I/O scheduler.

You could replace "tasklet_schedule" by "tasklet_hi_schedule" in
budget-core.c. This would give VPE processing a higher priority.


VDR Remote Plugin 0.3.8 available at

More information about the linux-dvb mailing list