OpenELEC / OpenELEC.tv

OpenELEC - The living room PC for everyone
http://openelec.tv
1.6k stars 887 forks source link

DVBSky S960 DVB-S2 tuner broken since 5.0.5 #4031

Closed schaal closed 9 years ago

schaal commented 9 years ago

The module dvb_usb_dvbsky always gives the following backtrace:

Mar 22 07:20:27 OpenELEC kernel: Unable to handle kernel NULL pointer dereference at virtual address 00000000
Mar 22 07:20:27 OpenELEC kernel: pgd = dce9c000
Mar 22 07:20:27 OpenELEC kernel: [00000000] *pgd=6cab8831, *pte=00000000, *ppte=00000000
Mar 22 07:20:27 OpenELEC kernel: Internal error: Oops: 80000007 [#1] SMP ARM
Mar 22 07:20:27 OpenELEC kernel: Modules linked in: hci_uart bluetooth 6lowpan_iphc m88ts2022 m88ds3103 brcmfmac brcmutil dvb_usb_dvbsky cfg80211 dvb_usb_v2 snd_soc_imx_spdif ir_lirc_codec lirc_dev ir_mce_kbd_decoder ir_sanyo_decoder ir_rc6_decoder ir_sony_decoder ir_jvc_decoder ir_nec_decoder ir_rc5_decoder snd_soc_fsl_spdif gpio_ir_recv
Mar 22 07:20:27 OpenELEC kernel: CPU: 2 PID: 650 Comm: frontend 0/0 tu Not tainted 3.14.25 #1
Mar 22 07:20:27 OpenELEC kernel: task: dc36c780 ti: dcd82000 task.ti: dcd82000
Mar 22 07:20:27 OpenELEC kernel: PC is at 0x0
Mar 22 07:20:27 OpenELEC kernel: LR is at dvbsky_usb_set_voltage+0x50/0x54 [dvb_usb_dvbsky]
Mar 22 07:20:27 OpenELEC kernel: pc : [<00000000>]    lr : [<7f0c28dc>]    psr: 60070013
                                 sp : dcd83d50  ip : dcd83cf0  fp : dcd83d6c
Mar 22 07:20:27 OpenELEC kernel: r10: dc31c300  r9 : dc533c00  r8 : 00000001
Mar 22 07:20:27 OpenELEC kernel: r7 : dc533c00  r6 : dc31c600  r5 : dcd38820  r4 : 00000001
Mar 22 07:20:27 OpenELEC kernel: r3 : 00000000  r2 : 00000001  r1 : 00000001  r0 : dcd38820
Mar 22 07:20:27 OpenELEC kernel: Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
Mar 22 07:20:27 OpenELEC kernel: Control: 10c53c7d  Table: 6ce9c04a  DAC: 00000015
Mar 22 07:20:27 OpenELEC kernel: Process frontend 0/0 tu (pid: 650, stack limit = 0xdcd82240)
Mar 22 07:20:27 OpenELEC kernel: Stack: (0xdcd83d50 to 0xdcd84000)
Mar 22 07:20:27 OpenELEC kernel: 3d40:                                     7f0c288c dcd38820 00000001 dc533d98
Mar 22 07:20:27 OpenELEC kernel: 3d60: dcd83df4 dcd83d70 804386dc 7f0c2898 8008866c 8027a1c4 dc4f9478 000000a8
Mar 22 07:20:27 OpenELEC kernel: 3d80: 000000c6 da1c2ab8 dcd83ddc dcd83d98 8008abdc 805f32ac 00000000 00000000
Mar 22 07:20:27 OpenELEC kernel: 3da0: 00000000 1812559f dcd83dc4 dcd83db8 eea7c4a0 00000000 dc31c300 dcd38820
Mar 22 07:20:27 OpenELEC kernel: 3dc0: dcd83df4 dcd83dd0 dcd83df4 dc31c300 00006f43 dc533d98 dc533c00 00000001
Mar 22 07:20:27 OpenELEC kernel: 3de0: dcd38820 dc31c300 dcd83e44 dcd83df8 80438cc8 804382b8 00000000 1812559f
Mar 22 07:20:27 OpenELEC kernel: 3e00: 000000a8 000000c6 76bcd000 005b8d80 80637b5c dc280080 00000000 dc3cd3a8
Mar 22 07:20:27 OpenELEC kernel: 3e20: 00006f43 00000000 00000001 00000000 00000001 dc31c300 dcd83efc dcd83e48
Mar 22 07:20:27 OpenELEC kernel: 3e40: 8042fbd0 80438be0 00000000 80438bd4 00000001 76a2f918 00000000 00000000
Mar 22 07:20:27 OpenELEC kernel: 3e60: 00000000 ee956630 60000093 00000734 dcd82000 000000a8 dcd83ea4 dcd83e88
Mar 22 07:20:27 OpenELEC kernel: 3e80: 8005c910 805f5fc0 00000002 dcd82038 dcd86900 80000007 dcd83eb4 dcd83ea8
Mar 22 07:20:27 OpenELEC kernel: 3ea0: 8005b6b4 8005c8c8 dcd83efc dcd83eb8 800170c4 8005b6b0 8006846c 8005a3cc
Mar 22 07:20:27 OpenELEC kernel: 3ec0: ee956580 dc280e68 00000000 00000200 8006a6a8 dc3cd3a8 00000001 dc31c300
Mar 22 07:20:27 OpenELEC kernel: 3ee0: 00006f43 00000007 dcd82000 00000000 dcd83f0c dcd83f00 8042fcd4 8042fb4c
Mar 22 07:20:27 OpenELEC kernel: 3f00: dcd83f7c dcd83f10 800d4ef8 8042fcb8 00000009 1459dcee dcd83f80 00989680
Mar 22 07:20:27 OpenELEC kernel: 3f20: 00000000 dcd83f50 8000e984 dcd82000 dcd83f7c dcd83f48 800d5bec 80028680
Mar 22 07:20:27 OpenELEC kernel: 3f40: 800d5bd8 8006c5d4 00989680 00c2d850 dcd83f6c dcd83f60 dc31c301 00000001
Mar 22 07:20:27 OpenELEC kernel: 3f60: dc31c300 00006f43 00000007 dcd82000 dcd83fa4 dcd83f80 800d50f8 800d4af0
Mar 22 07:20:27 OpenELEC kernel: 3f80: 00000000 00c2d850 0012f640 00000000 00000036 8000e984 00000000 dcd83fa8
Mar 22 07:20:27 OpenELEC kernel: 3fa0: 8000e800 800d50c8 00c2d850 0012f640 00000007 00006f43 00000001 00000000
Mar 22 07:20:27 OpenELEC kernel: 3fc0: 00c2d850 0012f640 00000000 00000036 76a2f8d8 00000001 00c2d8a8 76a2f8dc
Mar 22 07:20:27 OpenELEC kernel: 3fe0: 0012f7e0 76a2f8bc 000e8178 76bced1c 800e0010 00000007 00000000 00000000
Mar 22 07:20:27 OpenELEC kernel: Backtrace: 
Mar 22 07:20:27 OpenELEC kernel: [<7f0c288c>] (dvbsky_usb_set_voltage [dvb_usb_dvbsky]) from [<804386dc>] (dvb_frontend_ioctl_legacy.isra.15+0x430/0x928)
Mar 22 07:20:27 OpenELEC kernel:  r6:dc533d98 r5:00000001 r4:dcd38820 r3:7f0c288c
Mar 22 07:20:27 OpenELEC kernel: [<804382ac>] (dvb_frontend_ioctl_legacy.isra.15) from [<80438cc8>] (dvb_frontend_ioctl+0xf4/0xedc)
Mar 22 07:20:27 OpenELEC kernel:  r10:dc31c300 r9:dcd38820 r8:00000001 r7:dc533c00 r6:dc533d98 r5:00006f43
Mar 22 07:20:27 OpenELEC kernel:  r4:dc31c300
Mar 22 07:20:27 OpenELEC kernel: [<80438bd4>] (dvb_frontend_ioctl) from [<8042fbd0>] (dvb_usercopy+0x90/0x16c)
Mar 22 07:20:27 OpenELEC kernel:  r10:dc31c300 r9:00000001 r8:00000000 r7:00000001 r6:00000000 r5:00006f43
Mar 22 07:20:27 OpenELEC kernel:  r4:dc3cd3a8
Mar 22 07:20:27 OpenELEC kernel: [<8042fb40>] (dvb_usercopy) from [<8042fcd4>] (dvb_generic_ioctl+0x28/0x3c)
Mar 22 07:20:27 OpenELEC kernel:  r10:00000000 r9:dcd82000 r8:00000007 r7:00006f43 r6:dc31c300 r5:00000001
Mar 22 07:20:27 OpenELEC kernel:  r4:dc3cd3a8
Mar 22 07:20:27 OpenELEC kernel: [<8042fcac>] (dvb_generic_ioctl) from [<800d4ef8>] (do_vfs_ioctl+0x414/0x5d8)
Mar 22 07:20:27 OpenELEC kernel: [<800d4ae4>] (do_vfs_ioctl) from [<800d50f8>] (SyS_ioctl+0x3c/0x64)
Mar 22 07:20:27 OpenELEC kernel:  r9:dcd82000 r8:00000007 r7:00006f43 r6:dc31c300 r5:00000001 r4:dc31c301
Mar 22 07:20:27 OpenELEC kernel: [<800d50bc>] (SyS_ioctl) from [<8000e800>] (ret_fast_syscall+0x0/0x30)
Mar 22 07:20:27 OpenELEC kernel:  r8:8000e984 r7:00000036 r6:00000000 r5:0012f640 r4:00c2d850 r3:00000000
Mar 22 07:20:27 OpenELEC kernel: Code: bad PC value
Mar 22 07:20:27 OpenELEC kernel: ---[ end trace 528e6b6ea1467459 ]---

I narrowed it down to 218d5137683bbc7e02a546edcefd18d873e3a472 (Adds support for ct2 (Olli Salonen) and pctv292e in the project imx6).

The null pointer is in drivers/media/usb/dvb-usb-v2/dvbsky.c on line 234:

static int dvbsky_usb_set_voltage(struct dvb_frontend *fe,
»       fe_sec_voltage_t voltage)
{
»       struct dvb_usb_device *d = fe_to_d(fe);
»       struct dvbsky_state *state = d_to_priv(d);
»       u8 value;

»       if (voltage == SEC_VOLTAGE_OFF)
»       »       value = 0;
»       else
»       »       value = 1;
»       dvbsky_gpio_ctrl(d, 0x80, value);

»       return state->fe_set_voltage(fe, voltage);
}

The pointer state->fe_set_voltage is 0, resulting in the oops.

stefansaraev commented 9 years ago

@sraue @trsqr

trsqr commented 9 years ago

I'll have a look at this today. The bug reporter did not mention, but I assume he's using an imx6 device (I've got the same device on x86_64 and it's ok).

schaal commented 9 years ago

Yes, I am using a Cubox-i, also the dvb tuner is identified as

kernel: i2c i2c-0: m88ds3103: found a 'Montage M88DS3103' in warm state
kernel: i2c i2c-0: m88ds3103: firmware version 3.B
trsqr commented 9 years ago

@schaal Can you try the test build here: http://trsqr.net/olli/OpenELEC-imx6.arm-5.0.6.tar It contains the change in the CT2 patch that's in PR #4032

Basically, I had taken dvbsky code from kernel 3.19, but forgot to take the m88ds3103 code as well. The old version of m88ds3103 did not play together with the new dvbsky driver.

schaal commented 9 years ago

@trsqr Thanks for the quick replies, I just tried your test build, the oops is gone, but now I get the popup message in Kodi VNSI: no channel data (also tried with xvdr) when trying to start a channel.

trsqr commented 9 years ago

Just to rule out issues somewhere else, could you perform a channel scan using w_scan on the command line? You need to install it from the unofficial OE Add-on repository.

Example for Astra 19.2E and no diseqc: w_scan -fs -s S19E2

Please attach dmesg | pastebinit output as well.

schaal commented 9 years ago

Here are the log files (had to stop vdr.bin first for w_scan to be able to access the tuner):

output for dmesg using your 5.0.6 test build: http://sprunge.us/FLaG output for w_scan -fs -s S19E2 on 5.0.4: http://sprunge.us/ILKC output for w_scan -fs -s S19E2 on your 5.0.6 test build: http://sprunge.us/LBVM

schaal commented 9 years ago

When I make a fresh channel scan (either from the xvdr ui or from w_scan) and use the resulting channels.conf, it works again. It seems my old channels.conf is incompatible with the new driver.

trsqr commented 9 years ago

Ok, great. It looked like w_scan was getting the channel info ok, so I thought it should be ok... Basically the name of the tuner is different with the new driver, so it's possible that this change triggered the issue you saw.