Bug 9455
Summary: | Kernel BUG encountered when loading cx88-dvb module | ||
---|---|---|---|
Product: | v4l-dvb | Reporter: | Brandon Ehle (azverkan) |
Component: | cx88 | Assignee: | v4l-dvb_cx88 |
Status: | CLOSED OBSOLETE | ||
Severity: | normal | CC: | akpm, alan, firewalkergr, zzam |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 2.6.24-rc3 | Subsystem: | |
Regression: | No | Bisected commit-id: | |
Attachments: | Oops cx88-dvb |
Description
Brandon Ehle
2007-11-24 15:05:20 UTC
So is this a regression? Was 2.6.23 OK? Thanks. I didn't get the smp_processor_id() BUG in 2.6.23, but I do get the i2c_transfer error. Linux video capture interface: v2.00 i2c-core: driver [tveeprom] registered cx2388x cx88-mpeg Driver Manager version 0.0.6 loaded CORE cx88[0]: subsystem: 7063:2000, board: pcHDTV HD3000 HDTV [card=22,insmod option] TV tuner 60 at 0x1fe, Radio tuner -1 at 0x1fe cx88[0]: SDA stuck high! cx88[0]: i2c register FAILED cx88[0]/2: cx2388x 8802 Driver Manager ACPI: PCI Interrupt 0000:01:00.2[A] -> GSI 21 (level, low) -> IRQ 20 cx88[0]/2: found at 0000:01:00.2, rev: 5, irq: 20, latency: 32, mmio: 0x81000000 cx2388x dvb driver version 0.0.6 loaded cx8802_register_driver() ->registering driver type=dvb access=shared CORE cx88[0]: subsystem: 7063:2000, board: pcHDTV HD3000 HDTV [card=22] cx88[0]/2: cx2388x based dvb card BUG: unable to handle kernel NULL pointer dereference at virtual address 00000000 printing eip: f8f505b9 *pde = 00000000 Oops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC Modules linked in: dvb_pll cx88_dvb cx88_vp3054_i2c cx8802 video_buf_dvb cx88xx ir_common video_buf btcx_risc tveeprom videodev v4l2_common v4l1_compat or51132 dvb_core i2c_algo_bit i2c_core ufs binfmt_misc i915 drm rfcomm l2cap bluetooth tcp_diag inet_diag ppdev parport_pc lp parport ac battery speedstep_lib cpufreq_userspace cpufreq_stats cpufreq_powersave cpufreq_ondemand freq_table cpufreq_conservative ipv6 deflate zlib_deflate twofish twofish_common camellia serpent blowfish ecb aes xcbc sha256 sha1 crypto_null af_key dm_snapshot dm_mirror dm_mod sbp2 psmouse ide_generic ide_disk ide_cd irtty_sir sir_dev iTCO_wdt irda crc_ccitt rtc pcspkr button intel_agp agpgart evdev joydev raid10 raid456 async_xor async_memcpy async_tx xor raid1 raid0 multipath linear md_mod usbhid hid sg sd_mod sr_mod cdrom ahci generic piix ata_generic usb_storage ide_core ohci1394 ieee1394 ata_piix libata firewire_ohci firewire_core crc_itu_t r8169 ehci_hcd scsi_mod floppy uhci_hcd usbcore thermal processor fan CPU: 0 EIP: 0060:[<f8f505b9>] Not tainted VLI EFLAGS: 00010282 (2.6.23 #1) EIP is at i2c_transfer+0x17/0x134 [i2c_core] eax: 00000000 ebx: f9070435 ecx: 00000001 edx: c56fe050 esi: c56fe000 edi: c56fe050 ebp: c7e50de0 esp: c7e50d94 ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068 Process modprobe (pid: 13525, ti=c7e50000 task=d5bc0d50 task.ti=c7e50000) Stack: 00000000 c7e50d98 c7e50d98 c7e50dbc c56fe000 f9070814 f906c759 c7e50dc4 c015537c f906c759 00000001 c7e50df8 c56fe050 c0155583 63617474 00000068 f9070435 c56fe000 c56fe050 c7e50e14 f9070543 f059baf8 00000061 f9071a80 Call Trace: [<c010844a>] show_trace_log_lvl+0x1a/0x30 [<c0108505>] show_stack_log_lvl+0xa5/0xca [<c010872a>] show_registers+0x200/0x35d [<c01089a8>] die+0x121/0x24d [<c05a3b63>] do_page_fault+0x193/0x6c0 [<c05a23ba>] error_code+0x72/0x78 [<f9070543>] dvb_pll_attach+0x10e/0x163 [dvb_pll] [<f906b616>] cx8802_dvb_probe+0x4ba/0xfd3 [cx88_dvb] [<f90657c5>] cx8802_register_driver+0x17d/0x235 [cx8802] [<f906c19d>] dvb_init+0x34/0x36 [cx88_dvb] [<c0155e7a>] sys_init_module+0xef/0x18b4 [<c010727e>] sysenter_past_esp+0x6b/0xb5 ======================= Code: c8 fa 64 c7 89 f0 5b 5e 5f 5d c3 e8 2b eb 64 c7 66 90 eb dc 55 89 e5 57 56 53 83 ec 40 89 45 e4 89 55 e0 89 4d dc 89 c2 8b 40 0c <8b> 00 85 c0 0f 84 e2 00 00 00 85 c9 0f 8e a2 00 00 00 8b 45 e0 EIP: [<f8f505b9>] i2c_transfer+0x17/0x134 [i2c_core] SS:ESP 0068:c7e50d94 The bug arise only when debug is enabled? If so, could you test against the latest development tree, at: http://linuxtv.org/hg/v4l-dvb Created attachment 14395 [details]
Oops cx88-dvb
I get the same oops with 2.6.23.9, debug disabled and the latest (well 2 days old) http://linuxtv.org/hg/v4l-dvb I have a HVR -1300. Sometimes it works though : 1) Reboot - it works (both analog and dvb) 2) Reboot - cx88 - SDA stuck high and loading cx88-dvb generates an oops (see below) 3) Reboot - no error messages or oops but tuner doesn't work (stuck in one channel or black screen at analog). Cannot tune dvb either. 4) Go to step 1. uname -a Linux anarchos 2.6.23.9-85.fc8 #1 SMP Fri Dec 7 15:49:59 EST 2007 i686 i686 i386 GNU/Linux n modprobe.d/hvr1300.conf : options i2c-algo-bit bit_test=1 # made it work for a while... options tuner pal=b options ir-kbd-i2c hauppauge=1 # made it work for a while... install cx88xx /sbin/modprobe tuner; /sbin/modprobe --ignore-install cx88xx # to avoid oops at boot up install cx88-dvb /bin/true cx88/2: cx2388x MPEG-TS Driver Manager version 0.0.6 loaded cx88[0]: subsystem: 0070:9601, board: Hauppauge WinTV-HVR1300 DVB-T/Hybrid MPEG Encoder [card=56,autodetected] cx88[0]: TV tuner type 63, Radio tuner type -1 cx2388x alsa driver version 0.0.6 loaded cx88/0: cx2388x v4l2 driver version 0.0.6 loaded cx88[0]: SDA stuck high! cx88[0]: i2c register FAILED ... cx88[0]/2: cx2388x based DVB/ATSC card BUG: unable to handle kernel NULL pointer dereference at virtual address 00000000 printing eip: f887818f *pde = 3b3e2067 Oops: 0000 [#1] SMP Modules linked in: cx22702(U) cx88_dvb(U) ir_kbd_i2c(U) kqemu(U) autofs4 sunrpc dm_mirror dm_mod snd_emu10k1_synth snd_emux_synth snd_seq_virmidi snd_seq_midi_emul snd_emu10k1 snd_rawmidi snd_ac97_codec ac97_bus cx88_blackbird(U) cx2341x(U) snd_seq_dummy cx88_vp3054_i2c(U) wm8775(U) videobuf_dvb(U) dvb_core(U) snd_seq_oss sn d_seq_midi_event snd_seq cx8800(U) cx88_alsa(U) cx8802(U) cx88xx(U) snd_pcm_oss tuner(U) tea5767(U) tda8290(U) tda18271(U) snd_mixer_oss tda827x(U) tuner_xc2028(U) tda9887(U) snd_pcm tuner_simple(U) mt20xx(U) tea5761(U) snd_seq_device snd_timer ir_common(U) i2c_algo_bit compat_ioctl32(U) snd_page_alloc b44 tveeprom(U) videod ev(U) v4l2_common(U) snd_util_mem v4l1_compat(U) videobuf_dma_sg(U) ssb snd_hwdep emu10k1_gp videobuf_core(U) btcx_risc(U) snd gameport mii soundcore button i2c_i801 i2c_core iTCO_wdt iTCO_vendor_support floppy sg sr_mod cdrom ata_generic ata_piix libata sd_mod scsi_mod ext3 jbd mbcache uhci_hcd ohci_hcd ehci_hcd CPU: 0 EIP: 0060:[<f887818f>] Not tainted VLI EFLAGS: 00010296 (2.6.23.9-85.fc8 #1) EIP is at i2c_transfer+0x16/0x42 [i2c_core] eax: 00000000 ebx: ffffffda ecx: 00000002 edx: f664ae30 esi: f8bfe886 edi: f7710050 ebp: 00000002 esp: f664ae0c ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068 Process modprobe (pid: 2553, ti=f664a000 task=f64ad230 task.ti=f664a000) Stack: f664ae30 f75b6400 f8bfe886 f7710050 f7710000 f8aa706d f647d8b4 c0449043 f7710804 00000063 f6640001 f664ae4b 00010063 f8bf0001 f664ae4a 1f000000 f8aa773c 00000000 f7710800 f647d8b4 f8bfc3b4 f8bfd5eb 00000001 00000002 Call Trace: [<f8aa706d>] cx22702_readreg+0x59/0x7f [cx22702] [<c0449043>] __find_symbol+0x115/0x1ea [<f8aa773c>] cx22702_attach+0x32/0x5e [cx22702] [<f8bfc3b4>] cx8802_dvb_probe+0x295/0xeb9 [cx88_dvb] [<f8a2a42a>] cx8802_register_driver+0x126/0x1df [cx8802] [<c044ab86>] sys_init_module+0x150d/0x1651 [<c0620652>] do_page_fault+0x2c0/0x5ef [<f8a640c4>] vp3054_i2c_probe+0x0/0x101 [cx88_vp3054_i2c] [<c040518a>] syscall_call+0x7/0xb ======================= Code: 8d 83 4c 01 00 00 e8 e0 e4 c7 c7 85 c0 0f 94 c0 0f b6 c0 5b c3 55 89 cd 57 89 c7 56 53 bb da ff ff ff 83 ec 04 89 14 24 8b 40 0c <83> 38 00 74 1f 8d 77 20 89 f0 e8 a3 5f da c7 8b 5f 0c 89 e9 89 EIP: [<f887818f>] i2c_transfer+0x16/0x42 [i2c_core] SS:ESP 0068:f664ae0c See attached dmesg Running with 2.6.25-rc9 and v4l-d4b from changeset 7537 I get the following message, after which point the kernel locks up and only responds to sys-rq keys. Originally the kernel would post an oops and continue, it now locks hard. Same commands issued as the original post. modprobe -v i2c-algo-bit bit_test=1 i2c_debug=3 modprobe -v or51132 debug=1 modprobe -v cx88xx card=22 modprobe -v cx88-dvb i2c-core: driver [dummy] registered i2c-core: driver [tveeprom] registered Linux video capture interface: v2.00 cx88/2: cx2388x MPEG-TS Driver Manager version 0.0.6 loaded cx88[0]: subsystem: 7063:3000, board: pcHDTV HD3000 HDTV [card=22,autodetected] cx88[0]: TV tuner type 60, Radio tuner type -1 cx88[0]: SDA stuck high! cx88[0]: i2c register FAILED i2c-core: driver [tuner'] registered i2c-core: driver [tuner] registered cx88[0]/2: cx2388x 8802 Driver Manager ACPI: PCI Interrupt 0000:02:00.2[A] -> GSI 21 (level, low) -> IRQ 21 cx88[0]/2: found at 0000:02:00.2, rev: 5, irq: 21, latency: 32, mmio: 0xd4000000 cx88/2: cx2388x dvb driver version 0.0.6 loaded cx88/2: registering cx8802 driver, type: dvb access: shared cx88[0]/2: subsystem: 7063:3000, board: pcHDTV HD3000 HDTV [card=22] cx88[0]/2: cx2388x based DVB/ATSC card BUG: unable to handle kernel NULL pointer dereference at 00000000 IP: [<f8ea138e>] :i2c_core:i2c_transfer+0x14/0x15c *pde = 00000000 Oops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC Modules linked in: dvb_pll cx88_dvb(+) cx88_vp3054_i2c tuner tea5767 tda8290 tda18271 tda827x tuner_xc2028 xc5000 tda9887 tuner_simple mt20xx tea5761 v4l2_common cx8802 videobuf_dvb cx88xx videodev ir_common videobuf_dma_sg tveeprom or51132 usb_storage sg sd_mod crc_itu_t scsi_mod It seems to be a sequence of troubles: 1) I2C bus is hanging. This is what that "SDA high" message means. Seems to be a hardware problem. Something is making the hard so unstable that it stops working. 2) cx22702 can't read from I2C, due to the bus hang; 3) some problem at cx88-dvb register routine didn't interpret the error. I think this bug were solved, at the tree, for a patch later than changeset 7537. The root cause is the bus hang. Maybe you are loading a broken firmware, that made the demod to hang, keeping the I2C bus in use. In my case sometimes it boots fine but sometimes it doesn't (SDA high & oops or just the tuner doesn't work) Loading the modules manually in a specific order seems to make it "work" most of the time. modprobe tuner modprobe -i cx88xx modprobe -i cx8800 modprobe -i cx8802 modprobe -i cx88-alsa cat /etc/modprobe.d/hvr1300.conf options i2c-algo-bit bit_test=1 options tuner pal=b options ir-kbd-i2c hauppauge=1 install cx88-dvb /bin/true install cx88xx /bin/true install cx8800 /bin/true install cx8802 /bin/true install cx88-alsa /bin/true Closing obsolete bug. If this is incorrect please re-open and update the version to a modern kernel |