[PATCH v4,3/4] media: mediatek: vcodec: move core context from device to each instance

Nícolas F. R. A. Prado nfraprado at collabora.com
Fri Jun 9 12:50:15 PDT 2023


On Thu, May 25, 2023 at 09:40:08AM +0800, Yunfei Dong wrote:
[..]
> --- a/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c
> +++ b/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c
[..]
> @@ -247,6 +229,8 @@ void vdec_msg_queue_deinit(struct vdec_msg_queue *msg_queue,
>  
>  		kfree(lat_buf->private_data);
>  	}
> +
> +	cancel_work_sync(&msg_queue->core_work);

Hi Yunfei,

this hunk is causing warnings during boot and when exercising the decoder with
fluster on mt8192-asurada-spherion. This deinit function is called on the
v4l2 release callback, even though the work might not have been initialized as
that only happens if/when the codec specific 'decode' callback is called (as a
result of device_run m2m callback).

Thanks,
Nícolas

<4>[  496.164381] ------------[ cut here ]------------
<4>[  496.169259] WARNING: CPU: 5 PID: 2338 at kernel/workqueue.c:3376 __flush_work.isra.0+0x23c/0x258
<4>[  496.178299] Modules linked in: r8153_ecm cdc_ether usbnet r8152 mt7921e mt7921_common mt76_connac_lib mt76 mac80211 btusb btintel btmtk btrtl btbcm cfg80211 bluetooth uvcvideo mt8192_mt6359_rt1015_rt5682 uvc ecdh_generic snd_soc_mt8192_afe ecc videobuf2_vmalloc crct10dif_ce cros_usbpd_logger fuse ip_tables ipv6
<4>[  496.206108] CPU: 5 PID: 2338 Comm: gst-launch-1.0 Tainted: G        W          6.4.0-rc5-next-20230607+ #475
<4>[  496.216182] Hardware name: Google Spherion (rev0 - 3) (DT)
<4>[  496.221915] pstate: 00400009 (nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
<4>[  496.229125] pc : __flush_work.isra.0+0x23c/0x258
<4>[  496.233992] lr : __cancel_work_timer+0x14c/0x1c8
<4>[  496.238859] sp : ffff8000896e3b00
<4>[  496.242423] x29: ffff8000896e3b00 x28: ffff57c3d4079f80 x27: 0000000000000000
<4>[  496.249807] x26: ffff57c3d4079f80 x25: ffffb76395b59dc8 x24: 0000000000000001
<4>[  496.257191] x23: ffffb763928daab8 x22: ffff57c3d4079f80 x21: 0000000000000000
<4>[  496.264575] x20: ffffb763955f6778 x19: ffff57c3cf06f4a0 x18: 0000000000000000
<4>[  496.271958] x17: 000000040044ffff x16: 005000f2b5503510 x15: 0000000000000000
<4>[  496.279342] x14: ffff57c3c03a1f80 x13: ffffa0616a2fc000 x12: 000000003464d91d
<4>[  496.286726] x11: 0000000000000000 x10: 0000000000001b10 x9 : ffffb763928de61c
<4>[  496.294110] x8 : ffff57c3d407baf0 x7 : 0000000000000000 x6 : ffff57c3d4079f80
<4>[  496.301494] x5 : ffff57c3d4079f80 x4 : 0000000000000000 x3 : 0000000000000000
<4>[  496.308878] x2 : ffff8000896e3bf0 x1 : 0000000000000011 x0 : 0000000000000000
<4>[  496.316262] Call trace:
<4>[  496.318958]  __flush_work.isra.0+0x23c/0x258
<4>[  496.323477]  __cancel_work_timer+0x14c/0x1c8
<4>[  496.327996]  cancel_work_sync+0x1c/0x30
<4>[  496.332082]  vdec_msg_queue_deinit+0xac/0xc8
<4>[  496.336604]  vdec_h264_slice_deinit+0x64/0xb8
<4>[  496.341211]  vdec_if_deinit+0x3c/0x68
<4>[  496.345123]  mtk_vcodec_dec_release+0x20/0x40
<4>[  496.349729]  fops_vcodec_release+0x50/0xd8
<4>[  496.354074]  v4l2_release+0x7c/0x100
<4>[  496.357900]  __fput+0x80/0x270
<4>[  496.361205]  ____fput+0x18/0x30
<4>[  496.364595]  task_work_run+0x78/0xe0
<4>[  496.368420]  do_notify_resume+0x29c/0x7f8
<4>[  496.372680]  el0_svc+0xa4/0xb8
<4>[  496.375987]  el0t_64_sync_handler+0xc0/0xc8
<4>[  496.380423]  el0t_64_sync+0x1a8/0x1b0
<4>[  496.384336] ---[ end trace 0000000000000000 ]---



More information about the linux-arm-kernel mailing list