[linux-dvb] System load raises when budget_av is loaded

Oliver Endriss o.endriss at gmx.de
Fri Aug 17 22:47:39 CEST 2007

e9hack wrote:
> Oliver Endriss schrieb:
> > Jukka Pirinen wrote:
> >> As workaround I commented out initialisation of CI interface, that's not
> >> a problem because I don't have CI.
> >>
> >> diff budget-av.c.orig budget-av.c
> >> 1175c1175
> >> <        ciintf_init(budget_av);
> >> ---
> >>>        //ciintf_init(budget_av);
> > 
> > Could you please try to find out, why the CI thread is causing high
> > load? You might start checking the values of ca->delay and ca->wakeup
> > before wait_event_interruptible_timeout().
> > 
> > Sorry, I can't do this. I don't have budget-av hardware.
> It may be a problem of saa7146_wait_for_debi_done(). Without a CI/CAM, every debi read/write request
> ends with an error. In this case, SPCI_DEBI_S will never go low.

Yep, this might be a problem. But it is surprising that this issue
was never detected before.

If DEBI_S ever goes high, it will never be reset.
Afaics there is no direct way to reset this bit.
(A new debi command should reset it, though.)

> Most of the debi requests are done with an spinlock held.

None of the debiread/write accesses in budget-av uses locks,
which is probably a bug. See the other thread.

> Saa7146_wait_for_debi_done() polls for 250msec the PSR. Possible, this is the 
> reason for the high load. Usually, saa7146_wait_for_debi_done() can bail out earlier,
> if SPCI_DEBI_E is set.

Some debiread/write calls in budget-av use busy-waiting.
For testing it might be worth to set the last parameter of the
debiread/write calls to 1 (nobusyloop).

> saa7146_wait_for_debi_done() is also used by the TT-FF cards. During the booting of the ARM, 
> this cards need the timeout/wait after a debi error.

Could you please explain why the FF card needs this timeout?


VDR Remote Plugin 0.3.9: http://www.escape-edv.de/endriss/vdr/

More information about the linux-dvb mailing list