mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-30 16:53:20 -04:00
media: chips-media: wave5: Fix pipeline stall when queuing fails
The Wave5 decoder calls v4l2_m2m_job_finish() immediately in device_run()
after submitting frames to firmware. When the firmware completes those
frames and the queue drains to zero, finish_decode() has no active M2M
job to finish, so v4l2_m2m_schedule_next_job() is never called and the
decoder stalls.
Call v4l2_m2m_try_schedule() in finish_decode() when the firmware queue
empties to ensure the framework always schedules the next device_run().
Fixes: a176ac5e70 ("media: chips-media: wave5: Improve performance of decoder")
Cc: stable@vger.kernel.org
Signed-off-by: Jackson Lee <jackson.lee@chipsnmedia.com>
Signed-off-by: Nas Chung <nas.chung@chipsnmedia.com>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
This commit is contained in:
committed by
Hans Verkuil
parent
b694ba0a55
commit
e3a80073d9
@@ -475,7 +475,10 @@ static void wave5_vpu_dec_finish_decode(struct vpu_instance *inst)
|
||||
v4l2_m2m_job_finish(inst->v4l2_m2m_dev, m2m_ctx);
|
||||
}
|
||||
|
||||
inst->queuing_fail = false;
|
||||
if (inst->queuing_fail) {
|
||||
inst->queuing_fail = false;
|
||||
v4l2_m2m_try_schedule(m2m_ctx);
|
||||
}
|
||||
}
|
||||
|
||||
static int wave5_vpu_dec_querycap(struct file *file, void *fh, struct v4l2_capability *cap)
|
||||
|
||||
Reference in New Issue
Block a user