From: Ming Qian Date: Tue, 28 Jun 2022 05:19:52 +0000 (+0100) Subject: media: amphion: release core lock before reset vpu core X-Git-Tag: v6.1-rc5~729^2~303 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a621cc4bed97e49f5a8019f5215dec7e208a7c4d;p=platform%2Fkernel%2Flinux-starfive.git media: amphion: release core lock before reset vpu core In reset vpu core, driver will wait for a response event, but if there are still some events unhandled, they will be handled first, driver may acquire core lock for that. So if we do reset in core lock, it may led to reset timeout. Fixes: 9f599f351e86a ("media: amphion: add vpu core driver") Signed-off-by: Ming Qian Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- diff --git a/drivers/media/platform/amphion/vpu_core.c b/drivers/media/platform/amphion/vpu_core.c index 3cca7ae..73faa50 100644 --- a/drivers/media/platform/amphion/vpu_core.c +++ b/drivers/media/platform/amphion/vpu_core.c @@ -452,8 +452,13 @@ int vpu_inst_unregister(struct vpu_inst *inst) } vpu_core_check_hang(core); if (core->state == VPU_CORE_HANG && !core->instance_mask) { + int err; + dev_info(core->dev, "reset hang core\n"); - if (!vpu_core_sw_reset(core)) { + mutex_unlock(&core->lock); + err = vpu_core_sw_reset(core); + mutex_lock(&core->lock); + if (!err) { core->state = VPU_CORE_ACTIVE; core->hang_mask = 0; }