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@xxxxxxxxxxxxx> 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@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.... :) >