Hello, On Fri, May 14, 2004, Andrew de Quincey wrote: > > >Maybe its the load on the machine that causes it. Previously the IRQ > > > kicked off a tasklet, which then kicked off a thread to do the reading. I > > > changed it so it just did the reading in the tasklet directly. > > > > With the latest patch I haven't seen any more CAM errors so I'd say you > > nailed it! (I'll let you know if anything else turns up.) I think you > > can go ahead and commit the patch. Many thanks for the quick fix. Have a > > nice weekend! > > great! There seems to be an extra problem with this patch. I'm using Linux kernel 2.6.6 on Debian testing, with the latest CVS from linuxtv.org. The machine is a Dell 1750 1U server with two hyperthreaded xeon 3.0 GHz. The CAM is an AstonCrypt Mediaguard. I get the following kernel log while loading the module : Jun 8 18:04:18 streaming-28 kernel: saa7146: register extension 'budget_ci dvb'. Jun 8 18:04:18 streaming-28 kernel: saa7146: found saa7146 @ mem e08bf000 (revision 1, irq 24) (0x13c2,0x100f). Jun 8 18:04:18 streaming-28 kernel: DVB: registering new adapter (TT-Budget/WinTV-NOVA-CI PCI). Jun 8 18:04:19 streaming-28 kernel: adapter has MAC addr = 00:d0:5c:23:b4:d9 Jun 8 18:04:19 streaming-28 kernel: dvb_ca_en50221_init Jun 8 18:04:19 streaming-28 kernel: budget_ci: CI interface initialised Jun 8 18:04:19 streaming-28 kernel: dvb_ca_en50221_thread Jun 8 18:04:19 streaming-28 kernel: CAMCHANGE IRQ slot:0 change_type:1 Jun 8 18:04:19 streaming-28 kernel: dvb_ca_en50221_thread_wakeup Jun 8 18:04:19 streaming-28 kernel: CAMREADY IRQ slot:0 Jun 8 18:04:19 streaming-28 kernel: dvb_ca_en50221_thread_wakeup Jun 8 18:04:19 streaming-28 kernel: TUPLE type:0x1d length:4 Jun 8 18:04:19 streaming-28 kernel: 0x00: 0x00 . Jun 8 18:04:19 streaming-28 kernel: 0x01: 0xdb . Jun 8 18:04:19 streaming-28 kernel: 0x02: 0x08 . Jun 8 18:04:19 streaming-28 kernel: 0x03: 0xff . Jun 8 18:04:19 streaming-28 kernel: TUPLE type:0x1c length:3 Jun 8 18:04:19 streaming-28 kernel: 0x00: 0x00 . Jun 8 18:04:19 streaming-28 kernel: 0x01: 0x08 . Jun 8 18:04:19 streaming-28 kernel: 0x02: 0xff . Jun 8 18:04:19 streaming-28 kernel: TUPLE type:0x15 length:23 Jun 8 18:04:19 streaming-28 kernel: 0x00: 0x05 . Jun 8 18:04:19 streaming-28 kernel: 0x01: 0x00 . Jun 8 18:04:19 streaming-28 kernel: 0x02: 0x41 A Jun 8 18:04:19 streaming-28 kernel: 0x03: 0x53 S Jun 8 18:04:19 streaming-28 kernel: 0x04: 0x54 T Jun 8 18:04:19 streaming-28 kernel: 0x05: 0x4f O Jun 8 18:04:19 streaming-28 kernel: 0x06: 0x4e N Jun 8 18:04:19 streaming-28 kernel: 0x07: 0x00 . Jun 8 18:04:19 streaming-28 kernel: 0x08: 0x44 D Jun 8 18:04:19 streaming-28 kernel: 0x09: 0x56 V Jun 8 18:04:19 streaming-28 kernel: 0x0a: 0x42 B Jun 8 18:04:19 streaming-28 kernel: 0x0b: 0x20 Jun 8 18:04:19 streaming-28 kernel: 0x0c: 0x43 C Jun 8 18:04:19 streaming-28 kernel: 0x0d: 0x41 A Jun 8 18:04:19 streaming-28 kernel: 0x0e: 0x20 Jun 8 18:04:19 streaming-28 kernel: 0x0f: 0x4d M Jun 8 18:04:19 streaming-28 kernel: 0x10: 0x6f o Jun 8 18:04:19 streaming-28 kernel: 0x11: 0x64 d Jun 8 18:04:19 streaming-28 kernel: 0x12: 0x75 u Jun 8 18:04:19 streaming-28 kernel: 0x13: 0x6c l Jun 8 18:04:19 streaming-28 kernel: 0x14: 0x65 e Jun 8 18:04:19 streaming-28 kernel: 0x15: 0x00 . Jun 8 18:04:19 streaming-28 kernel: 0x16: 0xff . Jun 8 18:04:19 streaming-28 kernel: TUPLE type:0x20 length:4 Jun 8 18:04:20 streaming-28 kernel: 0x00: 0xff . Jun 8 18:04:20 streaming-28 kernel: 0x01: 0xff . Jun 8 18:04:20 streaming-28 kernel: 0x02: 0x01 . Jun 8 18:04:20 streaming-28 kernel: 0x03: 0x00 . Jun 8 18:04:20 streaming-28 kernel: TUPLE type:0x1a length:21 Jun 8 18:04:20 streaming-28 kernel: 0x00: 0x01 . Jun 8 18:04:20 streaming-28 kernel: 0x01: 0x0f . Jun 8 18:04:20 streaming-28 kernel: 0x02: 0x00 . Jun 8 18:04:20 streaming-28 kernel: 0x03: 0x02 . Jun 8 18:04:20 streaming-28 kernel: 0x04: 0x01 . Jun 8 18:04:20 streaming-28 kernel: 0x05: 0xc0 . Jun 8 18:04:20 streaming-28 kernel: 0x06: 0x0e . Jun 8 18:04:20 streaming-28 kernel: 0x07: 0x41 A Jun 8 18:04:20 streaming-28 kernel: 0x08: 0x02 . Jun 8 18:04:20 streaming-28 kernel: 0x09: 0x44 D Jun 8 18:04:20 streaming-28 kernel: 0x0a: 0x56 V Jun 8 18:04:20 streaming-28 kernel: 0x0b: 0x42 B Jun 8 18:04:20 streaming-28 kernel: 0x0c: 0x5f _ Jun 8 18:04:20 streaming-28 kernel: 0x0d: 0x43 C Jun 8 18:04:20 streaming-28 kernel: 0x0e: 0x49 I Jun 8 18:04:20 streaming-28 kernel: 0x0f: 0x5f _ Jun 8 18:04:20 streaming-28 kernel: 0x10: 0x56 V Jun 8 18:04:20 streaming-28 kernel: 0x11: 0x31 1 Jun 8 18:04:20 streaming-28 kernel: 0x12: 0x2e . Jun 8 18:04:20 streaming-28 kernel: 0x13: 0x30 0 Jun 8 18:04:20 streaming-28 kernel: 0x14: 0x30 0 Jun 8 18:04:20 streaming-28 kernel: TUPLE type:0x1b length:17 Jun 8 18:04:20 streaming-28 kernel: 0x00: 0xc9 . Jun 8 18:04:20 streaming-28 kernel: 0x01: 0x41 A Jun 8 18:04:20 streaming-28 kernel: 0x02: 0x19 . Jun 8 18:04:20 streaming-28 kernel: 0x03: 0x37 7 Jun 8 18:04:20 streaming-28 kernel: 0x04: 0x55 U Jun 8 18:04:20 streaming-28 kernel: 0x05: 0x4e N Jun 8 18:04:20 streaming-28 kernel: 0x06: 0x5e ^ Jun 8 18:04:20 streaming-28 kernel: 0x07: 0x1d . Jun 8 18:04:20 streaming-28 kernel: 0x08: 0x56 V Jun 8 18:04:20 streaming-28 kernel: 0x09: 0xaa . Jun 8 18:04:20 streaming-28 kernel: 0x0a: 0x60 ` Jun 8 18:04:20 streaming-28 kernel: 0x0b: 0x20 Jun 8 18:04:20 streaming-28 kernel: 0x0c: 0x03 . Jun 8 18:04:20 streaming-28 kernel: 0x0d: 0x03 . Jun 8 18:04:20 streaming-28 kernel: 0x0e: 0x50 P Jun 8 18:04:20 streaming-28 kernel: 0x0f: 0xff . Jun 8 18:04:20 streaming-28 kernel: 0x10: 0xff . Jun 8 18:04:20 streaming-28 kernel: TUPLE type:0x1b length:37 Jun 8 18:04:20 streaming-28 kernel: 0x00: 0xcf . Jun 8 18:04:20 streaming-28 kernel: 0x01: 0x04 . Jun 8 18:04:20 streaming-28 kernel: 0x02: 0x09 . Jun 8 18:04:20 streaming-28 kernel: 0x03: 0x37 7 Jun 8 18:04:20 streaming-28 kernel: 0x04: 0x55 U Jun 8 18:04:20 streaming-28 kernel: 0x05: 0x4d M Jun 8 18:04:20 streaming-28 kernel: 0x06: 0x5d ] Jun 8 18:04:21 streaming-28 kernel: 0x07: 0x1d . Jun 8 18:04:21 streaming-28 kernel: 0x08: 0x56 V Jun 8 18:04:21 streaming-28 kernel: 0x09: 0x22 " Jun 8 18:04:21 streaming-28 kernel: 0x0a: 0xc0 . Jun 8 18:04:21 streaming-28 kernel: 0x0b: 0x09 . Jun 8 18:04:21 streaming-28 kernel: 0x0c: 0x44 D Jun 8 18:04:21 streaming-28 kernel: 0x0d: 0x56 V Jun 8 18:04:21 streaming-28 kernel: 0x0e: 0x42 B Jun 8 18:04:21 streaming-28 kernel: 0x0f: 0x5f _ Jun 8 18:04:21 streaming-28 kernel: 0x10: 0x48 H Jun 8 18:04:21 streaming-28 kernel: 0x11: 0x4f O Jun 8 18:04:21 streaming-28 kernel: 0x12: 0x53 S Jun 8 18:04:21 streaming-28 kernel: 0x13: 0x54 T Jun 8 18:04:21 streaming-28 kernel: 0x14: 0x00 . Jun 8 18:04:21 streaming-28 kernel: 0x15: 0xc1 . Jun 8 18:04:21 streaming-28 kernel: 0x16: 0x0e . Jun 8 18:04:21 streaming-28 kernel: 0x17: 0x44 D Jun 8 18:04:21 streaming-28 kernel: 0x18: 0x56 V Jun 8 18:04:21 streaming-28 kernel: 0x19: 0x42 B Jun 8 18:04:21 streaming-28 kernel: 0x1a: 0x5f _ Jun 8 18:04:21 streaming-28 kernel: 0x1b: 0x43 C Jun 8 18:04:21 streaming-28 kernel: 0x1c: 0x49 I Jun 8 18:04:21 streaming-28 kernel: 0x1d: 0x5f _ Jun 8 18:04:21 streaming-28 kernel: 0x1e: 0x4d M Jun 8 18:04:21 streaming-28 kernel: 0x1f: 0x4f O Jun 8 18:04:21 streaming-28 kernel: 0x20: 0x44 D Jun 8 18:04:21 streaming-28 kernel: 0x21: 0x55 U Jun 8 18:04:21 streaming-28 kernel: 0x22: 0x4c L Jun 8 18:04:21 streaming-28 kernel: 0x23: 0x45 E Jun 8 18:04:21 streaming-28 kernel: 0x24: 0x00 . Jun 8 18:04:21 streaming-28 kernel: TUPLE type:0x14 length:0 Jun 8 18:04:21 streaming-28 kernel: TUPLE type:0xff length:0 Jun 8 18:04:21 streaming-28 kernel: Valid DVB CAM detected MANID:ffff DEVID:1 CONFIGBASE:0x200 CONFIGOPTION:0xf Jun 8 18:04:21 streaming-28 kernel: dvb_ca_en50221_set_configoption Jun 8 18:04:21 streaming-28 kernel: Set configoption 0xf, read configoption 0xfJun 8 18:04:21 streaming-28 kernel: DVB CAM validated successfully Jun 8 18:04:21 streaming-28 kernel: dvb_ca_en50221_link_init Jun 8 18:04:21 streaming-28 kernel: dvb_ca_en50221_wait_if_status Jun 8 18:04:21 streaming-28 kernel: dvb_ca_en50221_wait_if_status succeeded timeout:0 Jun 8 18:04:21 streaming-28 kernel: dvb_ca_en50221_wait_if_status Jun 8 18:04:21 streaming-28 kernel: FR/DA IRQ slot:0 Jun 8 18:04:21 streaming-28 kernel: CAM supports DA IRQ Jun 8 18:04:22 streaming-28 kernel: dvb_ca_en50221_wait_if_status succeeded timeout:0 Jun 8 18:04:22 streaming-28 kernel: dvb_ca_en50221_read_data Jun 8 18:04:22 streaming-28 kernel: Received CA packet for slot 0 connection id 0x0 last_frag:1 size:0x2 Jun 8 18:04:22 streaming-28 kernel: Chosen link buffer size of 16 Jun 8 18:04:22 streaming-28 kernel: dvb_ca_en50221_wait_if_status Jun 8 18:04:22 streaming-28 kernel: dvb_ca_en50221_wait_if_status succeeded timeout:0 Jun 8 18:04:22 streaming-28 kernel: dvb_ca_en50221_write_data Jun 8 18:04:22 streaming-28 kernel: Wrote CA packet for slot 0, connection id 0x0 last_frag:1 size:0x2 Jun 8 18:04:22 streaming-28 kernel: dvb_ca: DVB CAM detected and initialised successfully Jun 8 18:05:18 streaming-28 kernel: probe_tuner: try to attach to saa7146 (0) Jun 8 18:05:18 streaming-28 kernel: drivers/media/dvb/frontends/stv0299.c: setup for tuner SU1278 (TSA5059 synth) Jun 8 18:05:18 streaming-28 kernel: DVB: registering frontend 0 (STV0299/TSA5059/SL1935 based)... When I launch the cam_set program : Jun 8 18:06:09 streaming-28 kernel: dvb_ca_en50221_io_open Jun 8 18:06:09 streaming-28 kernel: dvb_ca_en50221_thread_wakeup Jun 8 18:06:09 streaming-28 kernel: dvb_ca_en50221_io_do_ioctl Jun 8 18:06:09 streaming-28 kernel: dvb_ca_en50221_io_do_ioctl Jun 8 18:06:09 streaming-28 kernel: dvb_ca_en50221_io_release Jun 8 18:06:09 streaming-28 kernel: dvb_ca_en50221_io_open Jun 8 18:06:09 streaming-28 kernel: dvb_ca_en50221_thread_wakeup Jun 8 18:06:09 streaming-28 kernel: dvb_ca_en50221_io_do_ioctl Jun 8 18:06:09 streaming-28 kernel: dvb_ca_en50221_io_do_ioctl Jun 8 18:06:09 streaming-28 kernel: dvb_ca_en50221_slot_shutdown Jun 8 18:06:09 streaming-28 kernel: Slot 0 shutdown Jun 8 18:06:09 streaming-28 kernel: CAMCHANGE IRQ slot:0 change_type:1 Jun 8 18:06:09 streaming-28 kernel: dvb_ca_en50221_thread_wakeup Jun 8 18:06:09 streaming-28 kernel: dvb_ca_en50221_thread_wakeup Jun 8 18:06:09 streaming-28 kernel: dvb_ca_en50221_io_do_ioctl Jun 8 18:06:09 streaming-28 kernel: CAMREADY IRQ slot:0 Jun 8 18:06:09 streaming-28 kernel: dvb_ca_en50221_thread_wakeup Jun 8 18:09:37 streaming-28 kernel: 1_read_data Jun 8 18:09:37 streaming-28 kernel: dvb_ca_en50221_read_data Jun 8 18:09:37 streaming-28 last message repeated 1154 times Jun 8 18:09:37 streaming-28 kernel: dvb_ca: CAM tried to send a buffer larger than the link buffer size! Jun 8 18:09:37 streaming-28 kernel: dvb_ca_en50221_link_init Jun 8 18:09:37 streaming-28 kernel: dvb_ca_en50221_wait_if_status Jun 8 18:09:37 streaming-28 kernel: dvb_ca_en50221_wait_if_status succeeded timeout:1 Jun 8 18:09:37 streaming-28 kernel: dvb_ca_en50221_wait_if_status Jun 8 18:09:37 streaming-28 kernel: dvb_ca_en50221_wait_if_status succeeded timeout:0 Jun 8 18:09:37 streaming-28 kernel: dvb_ca_en50221_read_data Jun 8 18:09:37 streaming-28 kernel: dvb_ca: CAM tried to send a buffer larger than the ecount size! Jun 8 18:09:37 streaming-28 kernel: dvb_ca: DVB CAM link initialisation failed :( Jun 8 18:09:37 streaming-28 kernel: dvb_ca_en50221_io_do_ioctl Jun 8 18:09:37 streaming-28 kernel: FR/DA IRQ slot:0 Jun 8 18:09:37 streaming-28 kernel: dvb_ca_en50221_io_release Jun 8 18:09:51 streaming-28 kernel: FR/DA IRQ slot:0 Jun 8 18:09:51 streaming-28 kernel: CAMCHANGE IRQ slot:0 change_type:0 Jun 8 18:09:51 streaming-28 kernel: dvb_ca_en50221_thread_wakeup Jun 8 18:09:51 streaming-28 kernel: dvb_ca_en50221_slot_shutdown Jun 8 18:09:51 streaming-28 kernel: Slot 0 shutdown Note that between 18:06:09 and 18:09:37 (the "last message repeated 1154 times"), the machine is completely locked up and doesn't respond to ping. Alt-sysrq-I doesn't even revive the machine. It only stopped because I removed _and inserted_ the CAM at 18:09:37. I have also tried without Andrew's patch, using revisions 1.9 and 1.1 of dvb_ca_en50221.[ch], and although it doesn't lock up the machine this time, the CAM still doesn't work : Jun 8 18:26:25 streaming-28 kernel: 0x24: 0x00 . Jun 8 18:26:25 streaming-28 kernel: TUPLE type:0x14 length:0 Jun 8 18:26:25 streaming-28 kernel: TUPLE type:0xff length:0 Jun 8 18:26:25 streaming-28 kernel: Valid DVB CAM detected MANID:ffff DEVID:1 CONFIGBASE:0x200 CONFIGOPTION:0xf Jun 8 18:26:25 streaming-28 kernel: dvb_ca_en50221_set_configoption Jun 8 18:26:25 streaming-28 kernel: Set configoption 0xf, read configoption 0xf Jun 8 18:26:25 streaming-28 kernel: DVB CAM validated successfully Jun 8 18:26:25 streaming-28 kernel: dvb_ca_en50221_link_init Jun 8 18:26:25 streaming-28 kernel: dvb_ca_en50221_wait_if_status Jun 8 18:26:25 streaming-28 kernel: dvb_ca_en50221_wait_if_status succeeded timeout:0 Jun 8 18:26:25 streaming-28 kernel: dvb_ca_en50221_wait_if_status Jun 8 18:26:25 streaming-28 kernel: FR/DA IRQ slot:0 Jun 8 18:26:25 streaming-28 kernel: CAM supports DA IRQ Jun 8 18:26:25 streaming-28 kernel: dvb_ca_en50221_wait_if_status succeeded timeout:0 Jun 8 18:26:25 streaming-28 kernel: dvb_ca_en50221_read_data Jun 8 18:26:25 streaming-28 kernel: Chosen link buffer size of 16 Jun 8 18:26:25 streaming-28 kernel: dvb_ca_en50221_wait_if_status Jun 8 18:26:25 streaming-28 kernel: dvb_ca_en50221_wait_if_status succeeded timeout:0 Jun 8 18:26:25 streaming-28 kernel: dvb_ca_en50221_write_data Jun 8 18:26:25 streaming-28 kernel: dvb_ca: DVB CAM detected and initialised successfully Jun 8 18:26:42 streaming-28 kernel: dvb_ca_en50221_io_open Jun 8 18:26:42 streaming-28 kernel: dvb_ca_en50221_thread_wakeup root@streaming-28:~/libdvb-0.5.4# ./cam_set Found 1CAM(s) Using /dev/dvb/adapter0/ca0 Found 1 slots No working CAM found within 30 seconds. Seconds after this message is printed, I get the following (again) : Jun 8 18:28:07 streaming-28 kernel: do_ioctl Jun 8 18:28:07 streaming-28 kernel: dvb_ca_en50221_io_do_ioctl Jun 8 18:28:07 streaming-28 last message repeated 1090 times Jun 8 18:28:07 streaming-28 kernel: dvb_ca_en50221_io_release Jun 8 18:28:07 streaming-28 kernel: CAMREADY IRQ slot:0 Jun 8 18:28:07 streaming-28 kernel: dvb_ca_en50221_thread_wakeup Jun 8 18:28:07 streaming-28 kernel: TUPLE type:0x1d length:4 Jun 8 18:28:07 streaming-28 kernel: 0x00: 0x00 . Jun 8 18:28:07 streaming-28 kernel: 0x01: 0xdb . Jun 8 18:28:07 streaming-28 kernel: 0x02: 0x08 . Jun 8 18:28:07 streaming-28 kernel: 0x03: 0xff . Jun 8 18:28:07 streaming-28 kernel: TUPLE type:0x1c length:3 Jun 8 18:28:08 streaming-28 kernel: 0x00: 0x00 . Jun 8 18:28:08 streaming-28 kernel: 0x01: 0x08 . Jun 8 18:28:08 streaming-28 kernel: 0x02: 0xff . Jun 8 18:28:08 streaming-28 kernel: TUPLE type:0x15 length:23 Jun 8 18:28:08 streaming-28 kernel: 0x00: 0x05 . Jun 8 18:28:08 streaming-28 kernel: 0x01: 0x00 . Jun 8 18:28:08 streaming-28 kernel: 0x02: 0x41 A Jun 8 18:28:08 streaming-28 kernel: 0x03: 0x53 S Jun 8 18:28:08 streaming-28 kernel: 0x04: 0x54 T Jun 8 18:28:08 streaming-28 kernel: 0x05: 0x4f O Jun 8 18:28:08 streaming-28 kernel: 0x06: 0x4e N Jun 8 18:28:08 streaming-28 kernel: 0x07: 0x00 . Jun 8 18:28:08 streaming-28 kernel: 0x08: 0x44 D Jun 8 18:28:08 streaming-28 kernel: 0x09: 0x56 V Jun 8 18:28:08 streaming-28 kernel: 0x0a: 0x42 B Jun 8 18:28:08 streaming-28 kernel: 0x0b: 0x20 [...] Jun 8 18:28:10 streaming-28 kernel: dvb_ca_en50221_read_data Jun 8 18:28:10 streaming-28 kernel: Chosen link buffer size of 16 Jun 8 18:28:10 streaming-28 kernel: dvb_ca_en50221_wait_if_status Jun 8 18:28:10 streaming-28 kernel: dvb_ca_en50221_wait_if_status succeeded timeout:0 Jun 8 18:28:10 streaming-28 kernel: dvb_ca_en50221_write_data Jun 8 18:28:10 streaming-28 kernel: dvb_ca: DVB CAM detected and initialised successfully The .config file is attached. Any idea would be appreciated. -- Christophe Massiot Freebox S.A.
Attachment:
dotconfig.gz
Description: Binary data