mirror_ubuntu-kernels/drivers/media/platform/mediatek/vcodec
Yunfei Dong d05dea76d4 media: mediatek: vcodec: fix cancel_work_sync fail with fluster test
Will cause below warning then reboot 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).

CPU: 5 PID: 2338 Comm: gst-launch-1.0 Tainted: G        W          6.4.0-rc5-next-20230607+ #475
Hardware name: Google Spherion (rev0 - 3) (DT)
pstate: 00400009 (nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : __flush_work.isra.0+0x23c/0x258
lr : __cancel_work_timer+0x14c/0x1c8
sp : ffff8000896e3b00
x29: ffff8000896e3b00 x28: ffff57c3d4079f80 x27: 0000000000000000
x26: ffff57c3d4079f80 x25: ffffb76395b59dc8 x24: 0000000000000001
x23: ffffb763928daab8 x22: ffff57c3d4079f80 x21: 0000000000000000
x20: ffffb763955f6778 x19: ffff57c3cf06f4a0 x18: 0000000000000000
x17: 000000040044ffff x16: 005000f2b5503510 x15: 0000000000000000
x14: ffff57c3c03a1f80 x13: ffffa0616a2fc000 x12: 000000003464d91d
x11: 0000000000000000 x10: 0000000000001b10 x9 : ffffb763928de61c
x8 : ffff57c3d407baf0 x7 : 0000000000000000 x6 : ffff57c3d4079f80
x5 : ffff57c3d4079f80 x4 : 0000000000000000 x3 : 0000000000000000
x2 : ffff8000896e3bf0 x1 : 0000000000000011 x0 : 0000000000000000
Call trace:
 __flush_work.isra.0+0x23c/0x258
 __cancel_work_timer+0x14c/0x1c8
 cancel_work_sync+0x1c/0x30
 vdec_msg_queue_deinit+0xac/0xc8
 vdec_h264_slice_deinit+0x64/0xb8
 vdec_if_deinit+0x3c/0x68
 mtk_vcodec_dec_release+0x20/0x40
 fops_vcodec_release+0x50/0xd8
 v4l2_release+0x7c/0x100
 __fput+0x80/0x270
 ____fput+0x18/0x30
 task_work_run+0x78/0xe0
 do_notify_resume+0x29c/0x7f8
 el0_svc+0xa4/0xb8
 el0t_64_sync_handler+0xc0/0xc8
 el0t_64_sync+0x1a8/0x1b0
---[ end trace 0000000000000000 ]---

Fixes: 297160d411 ("media: mediatek: vcodec: move core context from device to each instance")
Reported-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2023-07-14 09:14:09 +02:00
..
vdec media: mediatek: vcodec: support stateless AV1 decoder 2023-06-09 16:21:36 +01:00
venc media: mediatek: vcodec/venc: return 0 instead of 'ret'. 2023-02-08 08:39:14 +01:00
Kconfig media: mediatek: vcodec: support stateless VP9 decoding 2022-05-13 14:52:50 +02:00
Makefile media: mediatek: vcodec: Add debugfs interface to get debug information 2023-06-09 16:38:38 +01:00
mtk_vcodec_dbgfs.c media: mediatek: vcodec: Add dbgfs help function 2023-06-09 16:38:52 +01:00
mtk_vcodec_dbgfs.h media: mediatek: vcodec: Change dbgfs interface to support encode 2023-06-09 16:38:49 +01:00
mtk_vcodec_dec_drv.c media: mediatek: vcodec: Change dbgfs interface to support encode 2023-06-09 16:38:49 +01:00
mtk_vcodec_dec_hw.c media: mediatek: vcodec: mtk_vcodec_dec_hw: Use devm_pm_runtime_enable() 2023-05-25 16:21:21 +02:00
mtk_vcodec_dec_hw.h media: mediatek: vcodec: Add to support lat soc hardware 2022-06-20 10:30:32 +01:00
mtk_vcodec_dec_pm.c media: mediatek: vcodec: Using pm_runtime_put instead of pm_runtime_put_sync 2023-02-08 07:32:54 +01:00
mtk_vcodec_dec_pm.h media: mediatek: vcodec: Add vdec enable/disable hardware helpers 2022-05-13 14:40:09 +02:00
mtk_vcodec_dec_stateful.c media: mediatek: vcodec: Only apply 4K frame sizes on decoder formats 2023-05-26 10:47:47 +01:00
mtk_vcodec_dec_stateless.c media: mediatek: vcodec: support stateless AV1 decoder 2023-06-09 16:21:36 +01:00
mtk_vcodec_dec.c media: mediatek: vcodec: Fix potential array out-of-bounds in decoder queue_setup 2023-04-15 08:18:56 +01:00
mtk_vcodec_dec.h media: mediatek: vcodec: Support MT8186 2022-05-13 14:54:04 +02:00
mtk_vcodec_drv.h media: mediatek: vcodec: Add debugfs interface to get debug information 2023-06-09 16:38:38 +01:00
mtk_vcodec_enc_drv.c media: mediatek: vcodec: Add encode to support dbgfs 2023-06-09 16:38:50 +01:00
mtk_vcodec_enc_pm.c
mtk_vcodec_enc_pm.h
mtk_vcodec_enc.c Revert "media: mediatek: vcodec: Fix bitstream crop information error" 2023-05-25 16:21:20 +02:00
mtk_vcodec_enc.h
mtk_vcodec_fw_priv.h
mtk_vcodec_fw_scp.c
mtk_vcodec_fw_vpu.c
mtk_vcodec_fw.c media: mediatek: vcodec: Using firmware type to separate different firmware architecture 2022-05-13 14:41:17 +02:00
mtk_vcodec_fw.h media: mediatek: vcodec: Using firmware type to separate different firmware architecture 2022-05-13 14:41:17 +02:00
mtk_vcodec_intr.c
mtk_vcodec_intr.h
mtk_vcodec_util.c media: mediatek: vcodec: Add debug params to control different log level 2023-06-09 16:38:42 +01:00
mtk_vcodec_util.h media: mediatek: vcodec: Add debug params to control different log level 2023-06-09 16:38:42 +01:00
vdec_drv_base.h
vdec_drv_if.c media: mediatek: vcodec: support stateless AV1 decoder 2023-06-09 16:21:36 +01:00
vdec_drv_if.h media: mediatek: vcodec: support stateless AV1 decoder 2023-06-09 16:21:36 +01:00
vdec_ipi_msg.h media: mediatek: vcodec: get capture queue buffer size from scp 2022-05-13 14:41:44 +02:00
vdec_msg_queue.c media: mediatek: vcodec: fix cancel_work_sync fail with fluster test 2023-07-14 09:14:09 +02:00
vdec_msg_queue.h media: mediatek: vcodec: support stateless AV1 decoder 2023-06-09 16:21:36 +01:00
vdec_vpu_if.c media: mediatek: vcodec: prevent kernel crash when scp ipi timeout 2022-06-20 10:30:32 +01:00
vdec_vpu_if.h media: mediatek: vcodec: support stateless H.264 decoding for mt8192 2022-05-13 14:49:38 +02:00
venc_drv_base.h
venc_drv_if.c
venc_drv_if.h
venc_ipi_msg.h media: mediatek: vcodec: Add encoder driver support for 34-bit iova 2022-08-30 14:30:18 +02:00
venc_vpu_if.c media: mediatek: vcodec: Add encoder driver support for 34-bit iova 2022-08-30 14:30:18 +02:00
venc_vpu_if.h