2022-08-29 05:51:44

by Ming Qian

[permalink] [raw]
Subject: [PATCH] media: amphion: release m2m ctx when releasing vpu instance

release m2m ctx in the callback function that
release the vpu instance, then there is no need
to add lock around releasing m2m ctx.

Fixes: 3cd084519c6f ("media: amphion: add vpu v4l2 m2m support")
Signed-off-by: Ming Qian <[email protected]>
---
drivers/media/platform/amphion/vpu_v4l2.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/drivers/media/platform/amphion/vpu_v4l2.c b/drivers/media/platform/amphion/vpu_v4l2.c
index 1f18289aa47a..99ad2f1c5a53 100644
--- a/drivers/media/platform/amphion/vpu_v4l2.c
+++ b/drivers/media/platform/amphion/vpu_v4l2.c
@@ -688,6 +688,10 @@ static int vpu_v4l2_release(struct vpu_inst *inst)
inst->workqueue = NULL;
}

+ if (inst->fh.m2m_ctx) {
+ v4l2_m2m_ctx_release(inst->fh.m2m_ctx);
+ inst->fh.m2m_ctx = NULL;
+ }
v4l2_ctrl_handler_free(&inst->ctrl_handler);
mutex_destroy(&inst->lock);
v4l2_fh_del(&inst->fh);
@@ -770,13 +774,6 @@ int vpu_v4l2_close(struct file *file)

vpu_trace(vpu->dev, "tgid = %d, pid = %d, inst = %p\n", inst->tgid, inst->pid, inst);

- vpu_inst_lock(inst);
- if (inst->fh.m2m_ctx) {
- v4l2_m2m_ctx_release(inst->fh.m2m_ctx);
- inst->fh.m2m_ctx = NULL;
- }
- vpu_inst_unlock(inst);
-
call_void_vop(inst, release);
vpu_inst_unregister(inst);
vpu_inst_put(inst);
--
2.37.1


2022-08-30 18:00:13

by Tommaso Merciai

[permalink] [raw]
Subject: Re: [PATCH] media: amphion: release m2m ctx when releasing vpu instance

Hi Ming,
Nice, from my point off view you move v4l2_m2m_ctx_release
into the right position (release function).

checkpatch.pl also looks good.
total: 0 errors, 0 warnings, 772 lines checked

Looks good to me.

Reviewed-by: Tommaso Merciai <[email protected]>

Regards,
Tommaso

On Mon, Aug 29, 2022 at 01:33:16PM +0800, Ming Qian wrote:
> release m2m ctx in the callback function that
> release the vpu instance, then there is no need
> to add lock around releasing m2m ctx.
>
> Fixes: 3cd084519c6f ("media: amphion: add vpu v4l2 m2m support")
> Signed-off-by: Ming Qian <[email protected]>
> ---
> drivers/media/platform/amphion/vpu_v4l2.c | 11 ++++-------
> 1 file changed, 4 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/media/platform/amphion/vpu_v4l2.c b/drivers/media/platform/amphion/vpu_v4l2.c
> index 1f18289aa47a..99ad2f1c5a53 100644
> --- a/drivers/media/platform/amphion/vpu_v4l2.c
> +++ b/drivers/media/platform/amphion/vpu_v4l2.c
> @@ -688,6 +688,10 @@ static int vpu_v4l2_release(struct vpu_inst *inst)
> inst->workqueue = NULL;
> }
>
> + if (inst->fh.m2m_ctx) {
> + v4l2_m2m_ctx_release(inst->fh.m2m_ctx);
> + inst->fh.m2m_ctx = NULL;
> + }
> v4l2_ctrl_handler_free(&inst->ctrl_handler);
> mutex_destroy(&inst->lock);
> v4l2_fh_del(&inst->fh);
> @@ -770,13 +774,6 @@ int vpu_v4l2_close(struct file *file)
>
> vpu_trace(vpu->dev, "tgid = %d, pid = %d, inst = %p\n", inst->tgid, inst->pid, inst);
>
> - vpu_inst_lock(inst);
> - if (inst->fh.m2m_ctx) {
> - v4l2_m2m_ctx_release(inst->fh.m2m_ctx);
> - inst->fh.m2m_ctx = NULL;
> - }
> - vpu_inst_unlock(inst);
> -
> call_void_vop(inst, release);
> vpu_inst_unregister(inst);
> vpu_inst_put(inst);
> --
> 2.37.1
>

--
Tommaso Merciai
Embedded Linux Engineer
[email protected]
__________________________________

Amarula Solutions SRL
Via Le Canevare 30, 31100 Treviso, Veneto, IT
T. +39 042 243 5310
[email protected]
http://www.amarulasolutions.com