linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/5] media: mtk-vcodec: venc: variouse bug fixes
@ 2021-08-04 14:27 Dafna Hirschfeld
  2021-08-04 14:27 ` [PATCH 1/5] media: mtk-vcodec: enter ABORT state if encoding failed Dafna Hirschfeld
                   ` (4 more replies)
  0 siblings, 5 replies; 25+ messages in thread
From: Dafna Hirschfeld @ 2021-08-04 14:27 UTC (permalink / raw)
  To: linux-media, linux-mediatek, linux-kernel
  Cc: dafna.hirschfeld, hverkuil, kernel, dafna3, mchehab, tfiga,
	tiffany.lin, andrew-ct.chen, matthias.bgg, hsinyi, maoguang.meng,
	irui.wang, acourbot, Yunfei.Dong, yong.wu, eizan

Some bug fixes mainly in case of error handling

Dafna Hirschfeld (5):
  media: mtk-vcodec: enter ABORT state if encoding failed
  media: mtk-vcodec: call v4l2_m2m_ctx_release first when file is
    released
  media: mtk-vcodec: change the venc handler funcs to return int
  media: mtk-vcodec: Add two error cases upon vpu irq handling
  media: mtk-vcodec: venc: Fail if a msg sent to VPU was not signaled

 .../platform/mtk-vcodec/mtk_vcodec_enc.c      |  1 +
 .../platform/mtk-vcodec/mtk_vcodec_enc_drv.c  |  2 +-
 .../media/platform/mtk-vcodec/venc_vpu_if.c   | 27 +++++++++++++------
 3 files changed, 21 insertions(+), 9 deletions(-)

-- 
2.17.1


^ permalink raw reply	[flat|nested] 25+ messages in thread
* 答复: [PATCH 4/5] media: mtk-vcodec: Add two error cases upon vpu irq handling
@ 2021-08-11 11:43 Irui Wang (王瑞)
  2021-08-11 12:37 ` Dafna Hirschfeld
  0 siblings, 1 reply; 25+ messages in thread
From: Irui Wang (王瑞) @ 2021-08-11 11:43 UTC (permalink / raw)
  To: Dafna Hirschfeld
  Cc: Linux Media Mailing List,
	moderated list:ARM/Mediatek SoC support, Enric Balletbo i Serra

Hi Dafna,

I suspect this issue happened because of power/clk  not working, Could you print some debug logs when call  pm_get_xxx/cll_prepare...


If the timeout issue also occurs with H.264 encoder,  you can confirm the H.264 timeout case, because:
1.  H.264 will encode Sequence header before encode Frame:
https://elixir.bootlin.com/linux/latest/source/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c#L411

it also will do " h264_enc_wait_venc_done " when encoding sps/pps,  and get timeout,  the error log has a little different with frams:. https://elixir.bootlin.com/linux/latest/source/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c#L371 :" expect irq status ..."

if encode frame wait IRQ timeout, the error log will be:
https://elixir.bootlin.com/linux/latest/source/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c#L471 : " irq_status=%d failed "

2. you can check the timeout issue timing:
header encode done, but encode frame get timeout, if so, maybe you need check the thing:
https://elixir.bootlin.com/linux/latest/source/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c#L297
memcpy(inst->work_bufs[i].va, tmp_va, wb[i].size)

you could save the content in the "va",  encoder hardware need load the data to encode frame, same as VP8:
https://elixir.bootlin.com/linux/latest/source/drivers/media/platform/mtk-vcodec/venc/venc_vp8_if.c#L198
 
if the content is null, maybe something wrong happened about shared memory.

Thanks
Best Regards

-----邮件原件-----
发件人: Dafna Hirschfeld [mailto:dafna.hirschfeld@collabora.com] 
发送时间: 2021年8月11日 18:14
收件人: Irui Wang (王瑞)
抄送: Linux Media Mailing List; moderated list:ARM/Mediatek SoC support; Enric Balletbo i Serra
主题: Re: 答复: 答复: [PATCH 4/5] media: mtk-vcodec: Add two error cases upon vpu irq handling



On 09.08.21 11:12, Irui Wang (王瑞) wrote:
> Hi Dafna,
> 
>>> 2. Always happened  issue ?  timeout at the beginning or  in processing ?
> 
>> The commands that I run is:
> 
>>> sudo --user=#1000 
>>> /usr/local/libexec/chrome-binary-tests/video_encode_accelerator_test
>>> s --gtest_filter=-*NV12Dmabuf*  -->>codec=vp8 
>>> >/usr/local/share/tast/data/chromiumos/tast/local/bundles/cros/video
>>> /data/tulip2-320x180.yuv --disable_validator
> 
>>> The command sometime succeed but when I run it sequentially then at some point after few attempts I start to get those timeout errors.
> 
> It seems mean VP8 encoding function OK, but failed sometimes, did you have check VENC clock info during encoding:
> 
> cat /sys/kernel/debug/clk/clk_summary | grep venc:
> 
> venc_sel   > it's H.264 clock
> venclt_sel  > it's VP8 clock
> 
> the enable&prepare count is not 0 during encoding process.

I see that the values are indeed incremented while streaming.
When timeout occurs it is always in the beginning of the encoding. So upon the first call to vp8_enc_wait_venc_done.

Thanks,
Dafna


> 
> Thanks
> Best Regards
> 
> -----邮件原件-----
> 发件人: Dafna Hirschfeld [mailto:dafna.hirschfeld@collabora.com]
> 发送时间: 2021年8月9日 16:27
> 收件人: Irui Wang (王瑞)
> 抄送: Linux Media Mailing List; moderated list:ARM/Mediatek SoC support; 
> Enric Balletbo i Serra
> 主题: Re: 答复: [PATCH 4/5] media: mtk-vcodec: Add two error cases upon 
> vpu irq handling
> 
> 
> 
> On 09.08.21 09:37, Irui Wang (王瑞) wrote:
>> Hi Dafna,
>>
>>>> I am testing the vp8 encoder on chromeos and at some point the encoder interrupts stop arriving so I try to figure out why and report any possible error.
>> 1. Log shows wait IRQ timeout ?
> 
> Hi, yes, I get timeout when waiting to the encoder interrupt. The 
> timeout is on vp8_enc_wait_venc_done
> 
> 
>> 2. Always happened  issue ?  timeout at the beginning or  in processing ?
> 
> The commands that I run is:
> 
> sudo --user=#1000 
> /usr/local/libexec/chrome-binary-tests/video_encode_accelerator_tests 
> --gtest_filter=-*NV12Dmabuf*  --codec=vp8 
> /usr/local/share/tast/data/chromiumos/tast/local/bundles/cros/video/da
> ta/tulip2-320x180.yuv --disable_validator
> 
> The command sometime succeed but when I run it sequentially then at some point after few attempts I start to get those timeout errors.
> 
>> 3. how about IRQ infos?
>> cat /proc/interrupts | grep vcodec
>> 18002000.vcodec   >> it's H.264 encoder
>> 19002000.vcodec  >> it's  VP8 encoder
>>
>> I was told you have  met another H.264 encoding failed before, did you find reasons about that ?
> 
> No,
> But since I see that the google meetup uses the vp8 encoder I decided to test the vp8 first.
> 
>>> [   81.918747] [MTK_V4L2][ERROR] mtk_vcodec_wait_for_done_ctx:32: [3] ctx->type=1, cmd=1, wait_event_interruptible_timeout time=1000ms out 0 0!
>>> [   81.931392] [MTK_VCODEC][ERROR][3]: h264_encode_frame() irq_status=0 failed
>>> [   81.938470] [MTK_V4L2][ERROR] mtk_venc_worker:1219: venc_if_encode failed=-5
> 
> 
>>
>> MT8173 latest VPUD firmware:
>> https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmwa
>> r
>> e.git/commit/?id=aaed4a8bf9a77ec68376e8d92fb218d5fdd88b59
>>
> 
> I uses the latest firmware.
> 
> Thanks,
> Dafna
> 
>> Thanks
>> Best Regards
>>
>> -----邮件原件-----
>> 发件人: Dafna Hirschfeld [mailto:dafna.hirschfeld@collabora.com]
>> 发送时间: 2021年8月6日 15:49
>> 收件人: Irui Wang (王瑞); linux-kernel@vger.kernel.org; 
>> linux-media@vger.kernel.org; linux-mediatek@lists.infradead.org
>> 抄送: dafna3@gmail.com; tfiga@chromium.org; Tiffany Lin (林慧珊);
>> eizan@chromium.org; Maoguang Meng (孟毛广); kernel@collabora.com; 
>> mchehab@kernel.org; hverkuil@xs4all.nl; Yunfei Dong (董云飞); Yong Wu
>> (吴勇); hsinyi@chromium.org; matthias.bgg@gmail.com; Andrew-CT Chen
>> (陳智迪); acourbot@chromium.org
>> 主题: Re: [PATCH 4/5] media: mtk-vcodec: Add two error cases upon vpu 
>> irq handling
>>
>>
>>
>> On 06.08.21 08:58, Irui Wang (王瑞) wrote:
>>> On Wed, 2021-08-04 at 16:27 +0200, Dafna Hirschfeld wrote:
>>>> 1. Fail if the function mtk_vcodec_fw_map_dm_addr returns ERR 
>>>> pointer.
>>>> 2. Fail if the state from the vpu msg is either 
>>>> VEN_IPI_MSG_ENC_STATE_ERROR or VEN_IPI_MSG_ENC_STATE_PART
>>>>
>>>> Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
>>>> ---
>>>>    drivers/media/platform/mtk-vcodec/venc_vpu_if.c | 8 ++++++++
>>>>    1 file changed, 8 insertions(+)
>>>>
>>>> diff --git a/drivers/media/platform/mtk-vcodec/venc_vpu_if.c
>>>> b/drivers/media/platform/mtk-vcodec/venc_vpu_if.c
>>>> index 32dc844d16f9..234705ba7cd6 100644
>>>> --- a/drivers/media/platform/mtk-vcodec/venc_vpu_if.c
>>>> +++ b/drivers/media/platform/mtk-vcodec/venc_vpu_if.c
>>>> @@ -17,6 +17,8 @@ static int handle_enc_init_msg(struct 
>>>> venc_vpu_inst *vpu, const void *data)
>>>>    vpu->vsi = mtk_vcodec_fw_map_dm_addr(vpu->ctx->dev->fw_handler,
>>>>         msg->vpu_inst_addr);
>>>>    
>>>> +if (IS_ERR(vpu->vsi))
>>>> +return PTR_ERR(vpu->vsi);
>>>>    /* Firmware version field value is unspecified on MT8173. */
>>>>    if (vpu->ctx->dev->venc_pdata->chip == MTK_MT8173)
>>>>    return 0;
>>>> @@ -42,6 +44,12 @@ static int handle_enc_encode_msg(struct 
>>>> venc_vpu_inst *vpu, const void *data)
>>>>    vpu->state = msg->state;
>>>>    vpu->bs_size = msg->bs_size;
>>>>    vpu->is_key_frm = msg->is_key_frm;
>>>> +if (vpu->state == VEN_IPI_MSG_ENC_STATE_ERROR ||
>>>> +    vpu->state == VEN_IPI_MSG_ENC_STATE_PART) { 
>>>> +mtk_vcodec_err(vpu, "bad ipi-enc-state: %s",
>>>> +       vpu->state ==
>>>> VEN_IPI_MSG_ENC_STATE_ERROR ? "ERR" : "PART");
>>>> +return -EINVAL;
>>>> +}
>>>
>>> Hi Dafna,
>>>
>>> This state check is useless, the enc result will check in 
>>> "vpu_enc_ipi_handler".
>>>
>>
>> Hi, thanks for reviewing. I see that the vpu_enc_ipi_handler only test the msg->status and I see that the states are not tested anywhere except of "skip" state in the h264 enc.
>>
>> Can't there be a scenario where msg->status is ok but the state is error?
>> I am testing the vp8 encoder on chromeos and at some point the encoder interrupts stop arriving so I try to figure out why and report any possible error.
>>
>> Thanks,
>> Dafna
>>
>>> Thanks
>>>
>>>>    return 0;
>>>>    }
>>>>    
>>
>> ************* MEDIATEK Confidentiality Notice ******************** 
>> The information contained in this e-mail message (including any
>> attachments) may be confidential, proprietary, privileged, or 
>> otherwise exempt from disclosure under applicable laws. It is 
>> intended to be conveyed only to the designated recipient(s). Any use, 
>> dissemination, distribution, printing, retaining or copying of this 
>> e-mail (including its
>> attachments) by unintended recipient(s) is strictly prohibited and 
>> may be unlawful. If you are not an intended recipient of this e-mail, 
>> or believe that you have received this e-mail in error, please notify 
>> the sender immediately (by replying to this e-mail), delete any and 
>> all copies of this e-mail (including any attachments) from your 
>> system, and do not disclose the content of this e-mail to any other person. Thank you!
>>

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2021-11-09 13:13 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-04 14:27 [PATCH 0/5] media: mtk-vcodec: venc: variouse bug fixes Dafna Hirschfeld
2021-08-04 14:27 ` [PATCH 1/5] media: mtk-vcodec: enter ABORT state if encoding failed Dafna Hirschfeld
2021-08-04 14:27 ` [PATCH 2/5] media: mtk-vcodec: call v4l2_m2m_ctx_release first when file is released Dafna Hirschfeld
2021-08-04 14:27 ` [PATCH 3/5] media: mtk-vcodec: change the venc handler funcs to return int Dafna Hirschfeld
2021-08-04 14:27 ` [PATCH 4/5] media: mtk-vcodec: Add two error cases upon vpu irq handling Dafna Hirschfeld
2021-08-06  6:58   ` Irui Wang (王瑞)
2021-08-06  7:48     ` Dafna Hirschfeld
     [not found]       ` <HK0PR03MB302713CFF1F1E79AD99737679DF69@HK0PR03MB3027.apcprd03.prod.outlook.com>
2021-08-09  8:26         ` 答复: " Dafna Hirschfeld
2021-08-09  9:12           ` 答复: " Irui Wang (王瑞)
2021-08-11 10:14             ` Dafna Hirschfeld
2021-11-03 20:50             ` Dafna Hirschfeld
2021-11-04  1:38               ` Irui Wang
2021-11-04  6:50                 ` Dafna Hirschfeld
2021-11-04  9:16                   ` Irui Wang
2021-11-04  9:23                     ` Dafna Hirschfeld
2021-11-04  9:51                       ` Irui Wang
2021-11-04 10:26                         ` Dafna Hirschfeld
2021-11-04 12:21                           ` Irui Wang
2021-11-05  8:16                             ` Dafna Hirschfeld
2021-11-06  7:02                               ` Irui Wang
2021-11-09 13:12                                 ` Dafna Hirschfeld
2021-08-04 14:27 ` [PATCH 5/5] media: mtk-vcodec: venc: Fail if a msg sent to VPU was not signaled Dafna Hirschfeld
2021-08-06  6:50   ` Irui Wang (王瑞)
2021-10-18 11:43     ` Dafna Hirschfeld
2021-08-11 11:43 答复: [PATCH 4/5] media: mtk-vcodec: Add two error cases upon vpu irq handling Irui Wang (王瑞)
2021-08-11 12:37 ` Dafna Hirschfeld
2021-08-12  3:50   ` 答复: " Irui Wang (王瑞)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).