1. 02 Sep, 2014 1 commit
    • Changbing Xiong's avatar
      [media] media: fix kernel deadlock due to tuner pull-out while playing · 7a0af6ed
      Changbing Xiong authored
      Normally, ADAP_STREAMING bit is set in dvb_usb_start_feed and cleared in
      dvb_usb_stop_feed.
      
      But in exceptional cases, for example, when the tv is playing programs
      and the tuner is pulled out, then dvb_usbv2_disconnect is called.
      
      In such case, it will first call dvb_usbv2_adapter_frontend_exit to stop
      dvb_frontend_thread, and then call dvb_usbv2_adapter_dvb_exit to clear
      ADAP_STREAMING bit.
      
      At this point, if dvb_frontend_thread is sleeping and waiting for
      ADAP_STREAMING to be cleared to get out of sleep. then
      dvb_frontend_thread can never be stoped, because clearing ADAP_STREAMING
      bit is performed after dvb_frontend_thread is stopped (i.e. performed in
      dvb_usbv2_adapter_dvb_exit).
      
      So, deadlock:
      
      [  240.822037] INFO: task khubd:497 blocked for more than 120 seconds.
      [  240.822655] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      [  240.830493] khubd           D c0013b3c     0   497      2 0x00000000
      [  240.836996] [<c0013b3c>] (__schedule+0x200/0x54c) from [<c00110f4>] (schedule_timeout+0x14c/0x19c)
      [  240.845940] [<c00110f4>] (schedule_timeout+0x14c/0x19c) from [<c00137f4>] (wait_for_common+0xac/0x150)
      [  240.855234] [<c00137f4>] (wait_for_common+0xac/0x150) from [<c004989c>] (kthread_stop+0x58/0x90)
      [  240.864004] [<c004989c>] (kthread_stop+0x58/0x90) from [<c03b2ebc>] (dvb_frontend_stop+0x3c/0x9c)
      [  240.872849] [<c03b2ebc>] (dvb_frontend_stop+0x3c/0x9c) from [<c03b2f3c>] (dvb_unregister_frontend+0x20/0xd8)
      [  240.882666] [<c03b2f3c>] (dvb_unregister_frontend+0x20/0xd8) from [<c03ed938>] (dvb_usbv2_exit+0x68/0xfc)
      [  240.892204] [<c03ed938>] (dvb_usbv2_exit+0x68/0xfc) from [<c03eda18>] (dvb_usbv2_disconnect+0x4c/0x70)
      [  240.901499] [<c03eda18>] (dvb_usbv2_disconnect+0x4c/0x70) from [<c031c050>] (usb_unbind_interface+0x58/0x188)
      [  240.911395] [<c031c050>] (usb_unbind_interface+0x58/0x188) from [<c02c3e78>] (__device_release_driver+0x74/0xd0)
      [  240.921544] [<c02c3e78>] (__device_release_driver+0x74/0xd0) from [<c02c3ef0>] (device_release_driver+0x1c/0x28)
      [  240.931697] [<c02c3ef0>] (device_release_driver+0x1c/0x28) from [<c02c39b8>] (bus_remove_device+0xc4/0xe4)
      [  240.941332] [<c02c39b8>] (bus_remove_device+0xc4/0xe4) from [<c02c1344>] (device_del+0xf4/0x178)
      [  240.950106] [<c02c1344>] (device_del+0xf4/0x178) from [<c0319eb0>] (usb_disable_device+0xa0/0x1c8)
      [  240.959040] [<c0319eb0>] (usb_disable_device+0xa0/0x1c8) from [<c03128b4>] (usb_disconnect+0x88/0x188)
      [  240.968326] [<c03128b4>] (usb_disconnect+0x88/0x188) from [<c0313edc>] (hub_thread+0x4d0/0x1200)
      [  240.977100] [<c0313edc>] (hub_thread+0x4d0/0x1200) from [<c0049690>] (kthread+0xa4/0xb0)
      [  240.985174] [<c0049690>] (kthread+0xa4/0xb0) from [<c0009118>] (ret_from_fork+0x14/0x3c)
      [  240.993259] INFO: task kdvb-ad-0-fe-0:3256 blocked for more than 120 seconds.
      [  241.000349] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      [  241.008162] kdvb-ad-0-fe-0  D c0013b3c     0  3256      2 0x00000000
      [  241.014507] [<c0013b3c>] (__schedule+0x200/0x54c) from [<c03eda44>] (wait_schedule+0x8/0x10)
      [  241.022924] [<c03eda44>] (wait_schedule+0x8/0x10) from [<c001120c>] (__wait_on_bit+0x74/0xb8)
      [  241.031434] [<c001120c>] (__wait_on_bit+0x74/0xb8) from [<c00112b8>] (out_of_line_wait_on_bit+0x68/0x70)
      [  241.040902] [<c00112b8>] (out_of_line_wait_on_bit+0x68/0x70) from [<c03e5e88>] (dvb_usb_fe_sleep+0xf4/0xfc)
      [  241.050618] [<c03e5e88>] (dvb_usb_fe_sleep+0xf4/0xfc) from [<c03b4b74>] (dvb_frontend_thread+0x124/0x4e8)
      [  241.060164] [<c03b4b74>] (dvb_frontend_thread+0x124/0x4e8) from [<c0049690>] (kthread+0xa4/0xb0)
      [  241.068929] [<c0049690>] (kthread+0xa4/0xb0) from [<c0009118>] (ret_from_fork+0x14/0x3c)
      
      Fix it by calling dvb_usbv2_adapter_frontend_exit() latter.
      
      Test enviroment: odroidx2 + Hauppauge(WinTV-Aero-M)
      Signed-off-by: default avatarChangbing Xiong <cb.xiong@samsung.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
      7a0af6ed
  2. 26 Aug, 2014 35 commits
  3. 21 Aug, 2014 4 commits
    • Randy Dunlap's avatar
      [media] media: ttpci: fix av7110 build to be compatible with CONFIG_INPUT_EVDEV · b250392f
      Randy Dunlap authored
      Fix build when CONFIG_INPUT_EVDEV=m and DVB_AV7110=y.
      Only build av7110_ir.c when CONFIG_INPUT_EVDEV is compatible with
      CONFIG_DVB_AV7110.
      
      Fixes these build errors:
      
      drivers/built-in.o: In function `input_sync':
      av7110_ir.c:(.text+0x1223ac): undefined reference to `input_event'
      drivers/built-in.o: In function `av7110_emit_key':
      av7110_ir.c:(.text+0x12247c): undefined reference to `input_event'
      av7110_ir.c:(.text+0x122495): undefined reference to `input_event'
      av7110_ir.c:(.text+0x122569): undefined reference to `input_event'
      av7110_ir.c:(.text+0x1225a7): undefined reference to `input_event'
      drivers/built-in.o:av7110_ir.c:(.text+0x122629): more undefined
      references to `input_event' follow
      drivers/built-in.o: In function `av7110_ir_init':
      (.text+0x1227e4): undefined reference to `input_allocate_device'
      drivers/built-in.o: In function `av7110_ir_init':
      (.text+0x12298f): undefined reference to `input_register_device'
      drivers/built-in.o: In function `av7110_ir_init':
      (.text+0x12299e): undefined reference to `input_free_device'
      drivers/built-in.o: In function `av7110_ir_exit':
      (.text+0x122a94): undefined reference to `input_unregister_device'
      
      drivers/built-in.o: In function `av7110_detach':
      av7110.c:(.text+0x228d4a): undefined reference to `av7110_ir_exit'
      drivers/built-in.o: In function `arm_thread':
      av7110.c:(.text+0x22a404): undefined reference to `av7110_check_ir_config'
      av7110.c:(.text+0x22a626): undefined reference to `av7110_check_ir_config'
      drivers/built-in.o: In function `av7110_attach':
      av7110.c:(.text+0x22b08c): undefined reference to `av7110_ir_init'
      Signed-off-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Reported-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Reported-by: default avatarJim Davis <jim.epost@gmail.com>
      Reported-by: default avatarFengguang Wu <fengguang.wu@intel.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
      b250392f
    • Mauro Carvalho Chehab's avatar
      [media] usbtv: Make it dependent on ALSA · 85c1abcb
      Mauro Carvalho Chehab authored
      Now that alsa code is part of the driver, it can be compiled
      only if alsa is enabled.
      
         drivers/built-in.o: In function `snd_usbtv_hw_free':
      >> usbtv-audio.c:(.text+0x21eb55): undefined reference to `snd_pcm_lib_free_pages'
         drivers/built-in.o: In function `snd_usbtv_hw_params':
      >> usbtv-audio.c:(.text+0x21eb72): undefined reference to `snd_pcm_lib_malloc_pages'
         drivers/built-in.o: In function `usbtv_audio_urb_received':
      >> usbtv-audio.c:(.text+0x21ed66): undefined reference to `snd_pcm_link_rwlock'
      >> usbtv-audio.c:(.text+0x21ed9f): undefined reference to `snd_pcm_link_rwlock'
      >> usbtv-audio.c:(.text+0x21edf5): undefined reference to `snd_pcm_period_elapsed'
         drivers/built-in.o: In function `usbtv_audio_init':
      >> (.text+0x21f00a): undefined reference to `snd_card_new'
         drivers/built-in.o: In function `usbtv_audio_init':
      >> (.text+0x21f0a2): undefined reference to `snd_pcm_new'
         drivers/built-in.o: In function `usbtv_audio_init':
      >> (.text+0x21f0e5): undefined reference to `snd_pcm_set_ops'
         drivers/built-in.o: In function `usbtv_audio_init':
      >> (.text+0x21f103): undefined reference to `snd_pcm_lib_preallocate_pages_for_all'
         drivers/built-in.o: In function `usbtv_audio_init':
      >> (.text+0x21f10c): undefined reference to `snd_card_register'
         drivers/built-in.o: In function `usbtv_audio_init':
      >> (.text+0x21f12a): undefined reference to `snd_card_free'
         drivers/built-in.o: In function `usbtv_audio_free':
      >> (.text+0x21f15c): undefined reference to `snd_card_free'
      >> drivers/built-in.o:(.data+0x43250): undefined reference to `snd_pcm_lib_ioctl'
      Reported-by: default avatarkbuild test robot <fengguang.wu@intel.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
      85c1abcb
    • Shuah Khan's avatar
      [media] media: fix au0828 dvb suspend/resume to call dvb_frontend_suspend/resume · 66cae530
      Shuah Khan authored
      au0828 doesn't resume correctly and TV tuning fails with
      xc_set_signal_source(0) failed message. Change au0828 dvb
      suspend and resume interfaces to suspend and resume frontend
      during suspend and resume respectively. dvb_frontend_suspend()
      suspends tuner and fe using tuner and fe ops. dvb_frontend_resume()
      resumes fe and tuner using fe and tuner ops ini before waking up
      the frontend. With this change HVR950Q suspend and resume work
      when system gets suspended when digital function is tuned to a
      channel and with active TV stream, and after resume it went right
      back to active TV stream.
      Signed-off-by: default avatarShuah Khan <shuah.kh@samsung.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
      66cae530
    • Frank Schaefer's avatar
      [media] em28xx-v4l: fix video buffer field order reporting in progressive mode · 662c97cf
      Frank Schaefer authored
      The correct field order in progressive mode is V4L2_FIELD_NONE, not V4L2_FIELD_INTERLACED.
      
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarFrank Schäfer <fschaefer.oss@googlemail.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
      662c97cf