[linux-dvb] Kernel panic w/ CVS drivers and Nexus-CA / TT C2300 OT (rev 2.3)

Johannes Stezenbach js at linuxtv.org
Fri Apr 22 02:09:01 CEST 2005


On Thu, Apr 21, 2005 at 11:24:42PM +0200, Francois Romieu wrote:
> Johannes Stezenbach <js at linuxtv.org> :
> [...]
> > > The driver does too much (slow) things in its softirq part. A part of it
> > > should probably be posted to a workqueue. Doable but it is not a 5min hack.
> > 
> > What exactly is too slow to do from a tasklet?
> 
> Any code which can go to sleep. For instance:
> debiirq
> -> dvb_dmx_swfilter_packets (spin_locks: so far, so good)
>    -> dvb_dmx_swfilter_packet
>       -> dvb_dmx_swfilter_packet_type

>          -> dvb_dmx_swfilter_packet_type
>             -> av7110_write_to_decoder

This would only happen with TS playback through the dvr device,
and this is known broken. I won't touch this code, if you want
to fix it please do.

Anyway, Mikko said his problem was when trying to capture
a stream, so I assume the trace he posted is bogus (there
are other indications for this).

>                                  -> av7110_send_fw_cmd
> !
> ! Issues down_interruptible: broken because of spinlock above or
> ! tasklet/softirq context (pick one).
> !
>                                     -> __av7110_send_fw_cmd
> !
> ! Can issue msleep like crazy: broken (same reason)

These functions aren't broken, it's the av7110_write_to_decoder thing
that is.

> !
>                                        -> rdebi (spin_lock_irqsaves: ok)
>                                           -> av7110_debiread
>                                              -> saa7146_wait_for_debi_done
> !
> ! It does not sleep but it busy waits up to 50 ms (presumably when hardware
> ! is kaputt, I can buy that but please remember that the days of matrox induced
> ! bus stalls are not _that_ far), 2 times. Btw I am not convinced that it is
> ! safe to expect jiffies to be updated when in code protected by a
> ! spin_lock_irqsave.
> !
> 
> Don't hesitate to educate me if I am wrong but this code seems severely
> broken wrt locking rules (not that it prevents to be useful/workable for
> a lot of people :o) ).

The dvr playback code yes. Well known, I've posted this here
multiple times.

Anyway, there's a lot of ugly code in the av7110 driver, I would
not object if you or someone else would clean it up.

But I believe this has nothing to do with Mikka's problem.


Johannes




More information about the linux-dvb mailing list