We've managed to fix the issue and the card is now running quite happily without any messages going to /var/log/messages We only modified a couple of lines, basically we comment out the line that says it supports IRQ's so the polling section is reached and then instead of directly calling the dvb_ca_en50221_read_data function we wake the thread that calls it. I've attached the patch to the latest CVS drivers. On 7/14/05, Andrew de Quincey <adq_dvb@xxxxxxxxxxxxx> wrote: > On Thursday 14 July 2005 15:10, Michael Ditum wrote: > > ok we've done a bit more investigating... we enabled cam_debug for > > dvb_core and looking at the output it comes up with the error message > > in the dvb_ca_en50221_read_data function which is in dvb_ca_en50221.c. > > > > More specifically its on line 604 with the code... > > > > down_read(&ca->slot_info[slot].sem); > > > > As far as we can tell the read data function is being called by an > > interrupt request handler (line 895 dvb_ca_en50221_frda_irq)... it > > then calls down_read which tries to lock a semaphore which is already > > locked and attempts to sleep until it becomes available. > > > > Another developer here believeds that you cannot sleep in a IRQ > > handler so this looks to be the reason for the error... > > > > Does anyone have any ideas? > > That sounds very likely.... that code supports two mode of operation - IRQ > based and polling.. the last card I supported using it used polling so it > sounds like the IRQ mode needs tweaked to work properly again. > -------------- next part -------------- A non-text attachment was scrubbed... Name: ca_irq.patch Type: application/octet-stream Size: 919 bytes Desc: not available Url : http://www.linuxtv.org/pipermail/linux-dvb/attachments/20050715/a85f1bcb/ca_irq.obj