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

Michael Ditum mike at mikeditum.co.uk
Fri Oct 14 12:07:19 CEST 2005


I was wondering if there had been any change on this problem yet?

Marco Coli is also having the problem and contacted me regarding my
fix. You can see his thread at
http://www.linuxtv.org/pipermail/linux-dvb/2005-October/005328.html

Thanks for your help

Mike Ditum

On 28/07/05, Andrew de Quincey <adq_dvb at lidskialf.net> wrote:
> On Thursday 28 Jul 2005 17:32, Michael Ditum wrote:
> > I've just has a chance to test the changes you made... unfortunately I
> > could not test the latest CVS version as I couldn't get 2.6.13 to boot
> > on my hardware... some problem with lvm... Instead I basically took
> > the changes you made to dvb_ca_en50221.c and put them into my source
> > tree which is fedora core 3's 2.6.12-1.1372 kernel. When I booted up
> > and run vlc I got the following error in /var/log/messages....
> >
> > Jul 26 17:12:25 bloodhound kernel: Debug: sleeping function called
> > from invalid context at arch/i386/lib/usercopy.c:601
> > Jul 26 17:12:25 bloodhound kernel: in_atomic():0, irqs_disabled():1
> > Jul 26 17:12:25 bloodhound kernel:  [<c011ed91>] __might_sleep+0x9d/0xae
> > Jul 26 17:12:25 bloodhound kernel:  [<c01d2f11>] copy_to_user+0x18/0x5f
> > Jul 26 17:12:25 bloodhound kernel:  [<e099f67b>]
> > dvb_ringbuffer_pkt_read+0xea/0x111 [dvb_core]
> > Jul 26 17:12:25 bloodhound kernel:  [<e099b399>]
> > dvb_ca_en50221_io_read+0x18f/0x3ae [dvb_core]
> > Jul 26 17:12:25 bloodhound kernel:  [<c0172415>] poll_freewait+0x34/0x3c
> > Jul 26 17:12:25 bloodhound kernel:  [<c0160a9f>] vfs_read+0x106/0x108
> > Jul 26 17:12:25 bloodhound kernel:  [<c0160ce1>] sys_read+0x41/0x6a
> > Jul 26 17:12:25 bloodhound kernel:  [<c0103fe9>] syscall_call+0x7/0xb
> >
> > I get one of these roughly every second. Do the changes you made
> > require more changes than the ones in dvb_ca_en50221.c?
>
> Arrrgh, I didn't realise copy_to_user called __might_sleep. OK, I've fixed the
> problems in the _irq_ handler. I'll sort out these ones next :)
>
> And yeah - you just need to copy dvb_ca_en50221.c for the changes for your
> card.
>
> > I then modified the kernel adding in my modifications and didn't get
> > any IRQ messages including the NMI releated one. I have noticed that
> > cat /proc/interrupts now shows...
> >
> > [root at bloodhound php]# cat /proc/interrupts
> >            CPU0       CPU1
> >   0:     155663     158340    IO-APIC-edge  timer
> >   1:          6          4    IO-APIC-edge  i8042
> >   8:          1          0    IO-APIC-edge  rtc
> >   9:          0          1   IO-APIC-level  acpi
> >  12:         51         50    IO-APIC-edge  i8042
> >  15:       1186       1257    IO-APIC-edge  ide1
> > 169:          0          0   IO-APIC-level  uhci_hcd:usb2
> > 177:       4004       3309   IO-APIC-level  ioc0
> > 185:         17         13   IO-APIC-level  ioc1
> > 193:      18717         18   IO-APIC-level  eth0
> > 201:          0          0   IO-APIC-level  saa7146 (0)
> > 209:       1890        843   IO-APIC-level  saa7146 (1)
> > 217:          0          2   IO-APIC-level  saa7146 (2)
> > 225:          0          0   IO-APIC-level  ehci_hcd:usb1
> > 233:          0          0   IO-APIC-level  uhci_hcd:usb3
> > NMI:          0          0
> > LOC:     307139     307581
> > ERR:          0
> > MIS:          0
>
> From the above, you're now using your motherboard's APIC instead of the legacy
> IRQ routing. Definitely a bug in legacy mode support somewhere with your
> system. But as it works when you use APIC, which should theoretically give
> better performance anyway.... :)
>



More information about the linux-dvb mailing list