1. 02 Sep, 2014 3 commits
    • Changbing Xiong's avatar
      [media] media: check status of dmxdev->exit in poll functions of demux&dvr · d102cac8
      Changbing Xiong authored
      when usb-type tuner is pulled out, user applications did not close device's FD,
      and go on polling the device, we should return POLLERR directly.
      Signed-off-by: default avatarChangbing Xiong <cb.xiong@samsung.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
      d102cac8
    • Changbing Xiong's avatar
      [media] media: correct return value in dvb_demux_poll · 236c9bfa
      Changbing Xiong authored
      Data type of return value is unsigned int, but in function of dvb_demux_poll,
      when the pointer of dmxdevfilter equals NULL, it will return -EINVAL, which
      is invalid.
      Signed-off-by: default avatarChangbing Xiong <cb.xiong@samsung.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
      236c9bfa
    • 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 2 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