[linux-dvb] Re: IRQ issues with Nova-S CI when using CI Module

Michael Ditum mrskensington at gmail.com
Fri Jul 15 11:50:52 CEST 2005


Whilst we've fixed the recurring IRQ issue some times we still get the
NMI Issue that I first talked about. Sometimes when I boot up I get
this problem other times I do not. I've run memtest86+ for one pass
and it came up with nothing... I'll try a longer run during my lunch
break just to make sure but I don't believe it is a RAM issue.

Heres the output to /var/log/messages

Jul 13 16:27:34 bloodhound kernel: Uhhuh. NMI received. Dazed and
confused, but trying to continue
Jul 13 16:27:34 bloodhound kernel: You probably have a hardware
problem with your RAM chips
Jul 13 16:27:34 bloodhound kernel: irq 11: nobody cared!
Jul 13 16:27:34 bloodhound kernel:  [<c014efc4>] __report_bad_irq+0x24/0x7d
Jul 13 16:27:34 bloodhound kernel:  [<c014f0a6>] note_interrupt+0x6b/0x89
Jul 13 16:27:34 bloodhound kernel:  [<c014e5c1>] __do_IRQ+0x180/0x2ff
Jul 13 16:27:34 bloodhound kernel:  [<c011b6d2>] scheduler_tick+0x1a/0x4d4
Jul 13 16:27:34 bloodhound kernel:  [<c0105928>] do_IRQ+0x69/0x85
Jul 13 16:27:34 bloodhound kernel:  [<c0103aea>] common_interrupt+0x1a/0x20
Jul 13 16:27:34 bloodhound kernel:  [<c014e407>] handle_IRQ_event+0x28/0x62
Jul 13 16:27:34 bloodhound kernel:  [<c014e4ff>] __do_IRQ+0xbe/0x2ff
Jul 13 16:27:34 bloodhound kernel:  [<c010590b>] do_IRQ+0x4c/0x85
Jul 13 16:27:34 bloodhound kernel:  =======================
Jul 13 16:27:34 bloodhound kernel:  [<c012c6e0>] process_timeout+0x0/0x5
Jul 13 16:27:34 bloodhound kernel:  [<c0103aea>] common_interrupt+0x1a/0x20
Jul 13 16:27:34 bloodhound kernel:  [<c012797c>] __do_softirq+0x2c/0x8a
Jul 13 16:27:34 bloodhound kernel:  [<c0105a17>] do_softirq+0x39/0x40
Jul 13 16:27:34 bloodhound kernel:  =======================
Jul 13 16:27:34 bloodhound kernel:  [<c0105912>] do_IRQ+0x53/0x85
Jul 13 16:27:34 bloodhound kernel:  [<c0103aea>] common_interrupt+0x1a/0x20
Jul 13 16:27:34 bloodhound kernel:  [<c0112592>] delay_pmtmr+0xb/0x13
Jul 13 16:27:34 bloodhound kernel:  [<c0208779>] __delay+0x9/0xa
Jul 13 16:27:34 bloodhound kernel:  [<e08fc1cc>]
start_ts_capture+0x14a/0x280 [budget_core]
Jul 13 16:27:34 bloodhound kernel:  [<e08fd475>]
ttpci_budget_set_video_port+0xfd/0x1a8 [budget_core]
Jul 13 16:27:34 bloodhound kernel:  [<c011bbcd>] __wake_up_common+0x35/0x55
Jul 13 16:27:34 bloodhound kernel:  [<e091a4c8>]
ciintf_slot_shutdown+0x2d/0x31 [budget_ci]
Jul 13 16:27:34 bloodhound kernel:  [<e09a6d9b>]
dvb_ca_en50221_slot_shutdown+0x5d/0xf5 [dvb_core]
Jul 13 16:27:34 bloodhound kernel:  [<e09a776a>]
dvb_ca_en50221_io_do_ioctl+0x116/0x151 [dvb_core]
Jul 13 16:27:34 bloodhound kernel:  [<e099f5d8>]
dvb_usercopy+0x93/0x102 [dvb_core]
Jul 13 16:27:34 bloodhound kernel:  [<e099f0b3>]
dvb_device_open+0x54/0xe8 [dvb_core]
Jul 13 16:27:34 bloodhound kernel:  [<c0182c51>] chrdev_open+0x14c/0x36b
Jul 13 16:27:34 bloodhound kernel:  [<c01e9ec4>] file_alloc_security+0x29/0x7d
Jul 13 16:27:34 bloodhound kernel:  [<c0176019>] dentry_open+0xaf/0x1a5
Jul 13 16:27:34 bloodhound kernel:  [<e09a77a5>]
dvb_ca_en50221_io_ioctl+0x0/0x1d [dvb_core]
Jul 13 16:27:34 bloodhound kernel:  [<e09a77bd>]
dvb_ca_en50221_io_ioctl+0x18/0x1d [dvb_core]
Jul 13 16:27:34 bloodhound kernel:  [<e09a7654>]
dvb_ca_en50221_io_do_ioctl+0x0/0x151 [dvb_core]
Jul 13 16:27:34 bloodhound kernel:  [<c018de89>] do_ioctl+0x39/0x52
Jul 13 16:27:34 bloodhound kernel:  [<c018df97>] vfs_ioctl+0x55/0x193
Jul 13 16:27:34 bloodhound kernel:  [<c018e134>] sys_ioctl+0x5f/0x6f
Jul 13 16:27:34 bloodhound kernel:  [<c010392d>] syscall_call+0x7/0xb
Jul 13 16:27:34 bloodhound kernel: handlers:
Jul 13 16:27:34 bloodhound kernel: [<e08c70af>]
(interrupt_hw+0x0/0x345 [saa7146])
Jul 13 16:27:34 bloodhound kernel: [<c02c4d70>] (usb_hcd_irq+0x0/0x57)
Jul 13 16:27:35 bloodhound kernel: [<c02c4d70>] (usb_hcd_irq+0x0/0x57)
Jul 13 16:27:35 bloodhound kernel: Disabling IRQ #11
Jul 13 16:27:39 bloodhound kernel: dvb_ca adaptor 0: PC card did not respond :(

According to the stacktrace the last time it was in the dvb code was
in start_ts_capture in budget_core.c. I believe its these lines...

113: saa7146_write(dev, MC2, (MASK_08 | MASK_24));
114: mdelay(10);
115: 
116: saa7146_write(dev, BASE_ODD3, 0);
117: saa7146_write(dev, BASE_EVEN3, 0);
118: saa7146_write(dev, PROT_ADDR3, TS_WIDTH * TS_HEIGHT);
119: saa7146_write(dev, BASE_PAGE3, budget->pt.dma | ME1 | 0x90);

Why is there a 10 millisecond delay done there? How could it cause an
NMI? Is it OK to comment out that line?

I appreciate any help in tracking this issue down.

Mike

On 7/15/05, Michael Ditum <mrskensington at gmail.com> wrote:
> 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 at lidskialf.net> 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.
> >
> 
>




More information about the linux-dvb mailing list