On Wed, 2021-08-04 at 16:27 +0200, Dafna Hirschfeld wrote: > Each message sent to the VPU should raise a signal. The signal > handler sets vpu->signaled. Test the field and fail > if it is 0. I suppose you want to handle the message execution result, if ipi message can't send or acked successfully, the returned "status" of "mtk_vcodec_fw_ipi_send" will return, so I think you don't need to check "signaled" again. > > Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@xxxxxxxxxxxxx> > --- > drivers/media/platform/mtk-vcodec/venc_vpu_if.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/platform/mtk-vcodec/venc_vpu_if.c > b/drivers/media/platform/mtk-vcodec/venc_vpu_if.c > index 234705ba7cd6..8331b1bd1971 100644 > --- a/drivers/media/platform/mtk-vcodec/venc_vpu_if.c > +++ b/drivers/media/platform/mtk-vcodec/venc_vpu_if.c > @@ -92,6 +92,7 @@ static int vpu_enc_send_msg(struct venc_vpu_inst > *vpu, void *msg, > { > int status; > > + vpu->signaled = 0; > mtk_vcodec_debug_enter(vpu); > > if (!vpu->ctx->dev->fw_handler) { > @@ -106,6 +107,8 @@ static int vpu_enc_send_msg(struct venc_vpu_inst > *vpu, void *msg, > *(uint32_t *)msg, len, status); > return -EINVAL; > } > + if (!vpu->signaled) > + return -EINVAL; > if (vpu->failure) > return -EINVAL; > > @@ -122,7 +125,6 @@ int vpu_enc_init(struct venc_vpu_inst *vpu) > mtk_vcodec_debug_enter(vpu); > > init_waitqueue_head(&vpu->wq_hd); > - vpu->signaled = 0; > vpu->failure = 0; > > status = mtk_vcodec_fw_ipi_register(vpu->ctx->dev->fw_handler, > vpu->id,