Skip to content

Integrate linux-seco-imx/seco_lf-5.10.y-mx8q_vpu

GitBot requested to merge linux-seco-imx/seco_lf-5.10.y-mx8q_vpu into kirkstone

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/cd26b15755a4a0d0598d662051ce7d32e408e64c

LF-5850-3: mxc: vpu_windsor: fix a coverity issue of untrusted pointer read

when use some untrusted pointer read, need to check before use.

Signed-off-by: Ming Qian ming.qian@nxp.com Reviewed-by: Zhou Peng <eagle.zhou>

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/71fdc38fa10683ac51d507bfdb08f6d5f2a67936

LF-5679: mxc: vpu_windsor: append an empty last buffer on eos

In previous, vpu windsor encoder append an last buffer that contains the end of sequence (00 00 01 0a), and calculated a timestamp according the framerate.

But it confuse with the gstreamer, gstreamer don't want to get a unknown timestamp, and don't want to get an extra frame buffer but an empyt last buffer.

So driver append an empty last buffer on eos, and set last frame's timestamp

Signed-off-by: Ming Qian ming.qian@nxp.com Reviewed-by: Shijie Qin shijie.qin@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/d67046daf26210d06d0eaa41704a862cd4900cdd

MA-20005-14 vpu_encoder_mu: Fix build error exposed by -Wtautological-pointer-compare

Fix below build error: drivers/mxc/vpu_windsor/vpu_encoder_mu.c:38:17: error: comparison of address of 'core_dev->mu_msg_fifo' equal to a null pointer is always false [-Werror,-Wtautological-pointer-compare] if (&core_dev->mu_msg_fifo == NULL) { ~~~~~~~~~~^~~~~~~~~~~ ~~~~

Signed-off-by: Jindong Yue jindong.yue@nxp.com Reviewed-by: Shijie Qin shijie.qin@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/ca85461d34e5434fc4ae173ba9f6dab5f392baed

LF-4833 arm64: imx8q vpu: encoder handle yuv bytesperline correctly

vpu allow user set bytesperline larger than width, but driver fix it to width in previous. fix this bug, encoder can support more cases.

Signed-off-by: Ming Qian ming.qian@nxp.com Reviewed-by: Shijie Qin shijie.qin@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/07faf049b6351a196078a331a69779d190c0f1b4

LF-6212: mxc: vpu_malone: avoid kernel panic in alloc_dma_buffer

The call trace show the kernel panic occurs in memset_io. Seems dma_alloc_coherent() return an error code on fail instead of NULL.

So we use the IS_ERR_OR_NULL to check the return value.

But it's strangely as the document has described the function dma_alloc_coherent returns a pointer to the allocated region (in the processor's virtual address space) or NULL if the allocation failed.

2022-05-24T04:06:15 [ 745.193344] Unable to handle kernel paging request at virtual address ffffffffffffffe8 2022-05-24T04:06:15 [ 745.201296] Mem abort info: 2022-05-24T04:06:15 [ 745.204101] ESR = 0x86000004 2022-05-24T04:06:15 [ 745.207161] EC = 0x21: IABT (current EL), IL = 32 bits 2022-05-24T04:06:15 [ 745.212503] SET = 0, FnV = 0 2022-05-24T04:06:15 [ 745.215596] EA = 0, S1PTW = 0 2022-05-24T04:06:15 [ 745.218740] FSC = 0x04: level 0 translation fault 2022-05-24T04:06:15 [ 745.224070] swapper pgtable: 4k pages, 48-bit VAs, pgdp=0000000081b03000 2022-05-24T04:06:15 [ 745.231018] [ffffffffffffffe8] pgd=0000000000000000, p4d=0000000000000000 2022-05-24T04:06:15 [ 745.237851] Internal error: Oops: 86000004 [#1 (closed)] PREEMPT SMP 2022-05-24T04:06:16 [ 745.287814] Hardware name: Freescale i.MX8QM MEK (DT) 2022-05-24T04:06:16 [ 745.292862] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) 2022-05-24T04:06:16 [ 745.299819] pc : 0xffffffffffffffe8 2022-05-24T04:06:16 [ 745.303303] lr : alloc_dma_buffer+0x5c/0xdc 2022-05-24T04:06:16 [ 745.307499] sp : ffff80001686ba50 2022-05-24T04:06:16 [ 745.310809] x29: ffff80001686ba50 x28: ffff00081e934008 x27: 0000000000000000 2022-05-24T04:06:16 [ 745.317950] x26: ffff00081e934680 x25: ffff00081e934900 x24: ffff00081e935000 2022-05-24T04:06:16 [ 745.325091] x23: ffff800009d3b5b0 x22: ffff0008197d9800 x21: fffffffffffff9b0 2022-05-24T04:06:16 [ 745.332233] x20: ffff00081e934000 x19: ffff00081e935db0 x18: 0000000000000000 2022-05-24T04:06:16 [ 745.339374] x17: 0000000000002000 x16: fffffc00010fffc8 x15: 0000000000000001 2022-05-24T04:06:16 [ 745.346515] x14: 0000000000000002 x13: 00000000000c5a87 x12: ffff0008ff4458c0 2022-05-24T04:06:16 [ 745.353656] x11: ffff0008f95f9668 x10: fffffc0020453a08 x9 : 0000000000000000 2022-05-24T04:06:16 [ 745.360797] x8 : ffff80001c8be000 x7 : 0000000000000000 x6 : 000000000000003f 2022-05-24T04:06:16 [ 745.367938] x5 : 0000000000000040 x4 : 0000000000000000 x3 : ffff80001c8be000 2022-05-24T04:06:16 [ 745.375079] x2 : 0000000000c00000 x1 : 0000000000000000 x0 : ffff80001c5ef198 2022-05-24T04:06:16 [ 745.382221] Call trace: 2022-05-24T04:06:16 [ 745.384662] 0xffffffffffffffe8 2022-05-24T04:06:16 [ 745.387798] vpu_buf_queue+0x314/0x580 2022-05-24T04:06:16 [ 745.391551] __enqueue_in_driver+0x3c/0x6c 2022-05-24T04:06:16 [ 745.395651] vb2_core_qbuf+0x44c/0x5a0 2022-05-24T04:06:16 [ 745.399396] vb2_qbuf+0x94/0xf0 2022-05-24T04:06:16 [ 745.402532] v4l2_ioctl_qbuf+0x1a4/0x29c 2022-05-24T04:06:16 [ 745.406450] v4l_qbuf+0x48/0x60 2022-05-24T04:06:16 [ 745.409586] __video_do_ioctl+0x178/0x3dc 2022-05-24T04:06:16 [ 745.413591] video_usercopy+0x374/0x6a0 2022-05-24T04:06:16 [ 745.417422] video_ioctl2+0x18/0x24 2022-05-24T04:06:16 [ 745.420906] v4l2_ioctl+0x44/0x64 2022-05-24T04:06:16 [ 745.424216] __arm64_sys_ioctl+0xa8/0xf0 2022-05-24T04:06:16 [ 745.428142] invoke_syscall+0x48/0x114 2022-05-24T04:06:16 [ 745.431895] el0_svc_common.constprop.0+0xd4/0xfc 2022-05-24T04:06:16 [ 745.436595] do_el0_svc+0x28/0x90 2022-05-24T04:06:16 [ 745.439905] el0_svc+0x34/0xb0 2022-05-24T04:06:16 [ 745.442955] el0t_64_sync_handler+0xa4/0x130 2022-05-24T04:06:16 [ 745.447220] el0t_64_sync+0x18c/0x190 2022-05-24T04:06:16 [ 745.450884] Code: bad PC value 2022-05-24T04:06:16 [ 745.453940] ---[ end trace 0000000000000000 ]--- 2022-05-24T04:06:16 [ 745.458550] Kernel panic - not syncing: Oops: Fatal exception 2022-05-24T04:06:16 [ 745.464292] SMP: stopping secondary CPUs

Signed-off-by: Ming Qian ming.qian@nxp.com Reviewed-by: Zhou Peng eagle.zhou@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/fd67e12d4d5f1136a853ec922fc8b2682467bc2f

LF-5876-2: mxc: vpu_malone: wake up when error occurs

when error occurs, driver set error flag, and driver need to wake up the poll wait

Signed-off-by: Ming Qian ming.qian@nxp.com Reviewed-by: Zhou Peng eagle.zhou@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/2d677702f3e5f7ca35f9d52fefb20a66d886b4a7

MA-20244: mxc: vpu_malone: don't prevent to enqueue input frame

in past, we use vpu_frm_depth to control the input frame count, to make sure the count is no more than 256. but we have kept the buffer until it's decoded, and the buffer count is no more than 32, so we don't need to prevent to enqueue input frame. besides, the frm_dec_delay is not accuracy if there are some frames skiped, so remove the unused variable

Signed-off-by: Ming Qian ming.qian@nxp.com Reviewed-by: Zhou Peng eagle.zhou@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/436bf6bffa4438c3df19594d5835fcbe61eb2f78

LF-5962-2: mxc: vpu_malone: adjust some warning log

add macro vpu_warn output firmware version only once

Signed-off-by: Ming Qian ming.qian@nxp.com Reviewed-by: Zhou Peng eagle.zhou@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/9531921176710d254dbb9ec6c7718a7234ccc847

LF-5962: mxc: vpu_malone: disable timestamp manager by default

driver can propagate timestamp from output buffer to capture buffer directly.

Signed-off-by: Ming Qian ming.qian@nxp.com Reviewed-by: Zhou Peng eagle.zhou@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/82cb9d3485cb9c5dff1e9e49d495787393f0b9f1

MA-20218: mxc: vpu_malone: return the buffer with cocdecdata flag

the buffer with cocdecdata flag, driver will merge it to the next frame. so it needs to be released when the next frame is done.

Signed-off-by: Ming Qian ming.qian@nxp.com Reviewed-by: Zhou Peng <eagle.zhou>

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/24d6713193c3ba3f66501d92e7a606059064ba04

LF-5901: mxc: vpu_malone: add a picture skipped event

if the frame can't be decoded, and be skipped, firmware can send a skipped event to driver, then driver can return this buffer with an error flag.

Signed-off-by: Ming Qian ming.qian@nxp.com Reviewed-by: Zhou Peng <eagle.zhou>

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/f0de571a1a47a88204ea0c8472347f3932566cfa

LF-5850-2: mxc: vpu_malone: fix a coverity issue of untrusted pointer read

when use some untrusted pointer read, need to check before use.

Signed-off-by: Ming Qian ming.qian@nxp.com Reviewed-by: Zhou Peng <eagle.zhou>

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/8ab564c162df3f454958451f72ee83565dc93ffb

LF-5850: mxc: vpu_malone: fix a coverity issue of uninitialized scalar variable

the timestamp may be uninitialized in picture decoded

Signed-off-by: Ming Qian ming.qian@nxp.com Reviewed-by: Zhou Peng <eagle.zhou>

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/88cfa493cffe770edf5ee0f0b57999d7ba93b2e4

LF-5880: mxc: vpu_malone: don't set last_buffer_dequeued if queue is not streaming

in android cts, sometimes the capture streamoff may be called before eos, so driver may set the last_buffer_dequeued when the capture queue is not streaming, then after streamon, dqbuf will always return -EPIPE.

Signed-off-by: Ming Qian ming.qian@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/596c0e853fc2e06a22beac46d5dc7860970621b5

LF-5879: mxc: vpu_malone: reduce decoder output buffer count

driver report min buffers for output to 16, this number is too conservative, we can reduce it to 8.

Signed-off-by: Ming Qian ming.qian@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/2cac30ded376ea7a40daa5844f6a895fefb97012

LF-5876: mxc: vpu_malone: set error for unsupported stream

For unsupported stream, in previous, driver only send a V4L2_EVENT_CODEC_ERROR event, but this event is our custom, client may not handle it, such as gstreamer. so set error and trigger a pollerr event, then client can exit without hang.

Signed-off-by: Ming Qian ming.qian@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/98ff22ea8e9b773ecafbf14bbd10411f36f26049

LF-5664-2 mxc: vpu_malone: fix build warning about camparison of distinct pointer types

Fixed build warning about 'comparison of distinct pointer types lacks a cast' when use clamp.

Signed-off-by: Shijie Qin shijie.qin@nxp.com Reviewed-by: ming_qian ming.qian@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/905d8879ef0f512d0c9c59598dc5e6e8f44e77f5

LF-5664 mxc: vpu_malone: update capture format when set output in the initial

Driver need update capture format when set output, otherwise, gstreamer will get wrong resolution on capture at beginning, which will lead to driver send source change event and do unexpected capture streamoff/on operations.

Signed-off-by: Shijie Qin shijie.qin@nxp.com Reviewed-by: ming_qian ming.qian@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/0429287bdc8f06ca1188c5edb45f20733a011a89

LF-5663 mxc: vpu_malone: set last_buffer_dequeued to notify decoding finished

Application may not subscribe 'V4L2_EVENT_EOS', set last_buffer_dequeued for capture vb2_queue to notify decoding finished.

Signed-off-by: Shijie Qin shijie.qin@nxp.com Reviewed-by: ming_qian ming.qian@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/157bd801c090284cb0800096e48c3cbc5d0972a0

LF-5644-4 mxc: vpu_malone: add module_param to disable time stamp manager

There is a timestamp manager in firmware, so in previous, the timestamp of capture vb2_buffer is got from firmware. Add a module_param 'vpu_tsm_ena' to enable/disable this function. If disable it, copy timestamp from output to capture.

Signed-off-by: Shijie Qin shijie.qin@nxp.com Reviewed-by: ming_qian ming.qian@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/7f12311e2a24cd72b004730e139cc2efd2fad6e1

LF-5644-3 mxc: vpu_malone: add valid output/capture v4l2_buffer sequence

Normally, sequence is monotonically increasing, if capture sequence is no consecutive that means there has decoded frame be dropped in vpu.

Signed-off-by: Shijie Qin shijie.qin@nxp.com Reviewed-by: ming_qian ming.qian@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/cedb08d7d328b473fe10fa709da67642a9b92243

LF-5644-2 mxc: vpu_malone: return output v4l2_buffer with 'V4L2_BUF_FLAG_ERROR' if it no decoded frame

If no decoded frame output for current bitstream buffer, return output v4l2_buffer with 'V4L2_BUF_FALG_ERROR' to notify user.

Signed-off-by: Shijie Qin shijie.qin@nxp.com Reviewed-by: ming_qian ming.qian@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/e538b452a0c0bb2a6c92c86cac586e94de5b5a13

LF-5644-1 mxc: vpu_malone: implement 'V4L2_CID_MIN_BUFFERS_FOR_OUTPUT' ioctrl

Implment 'V4L2_CID_MIN_BUFFERS_FOR_OUTPUT' ioctl to better support frame mode.

Signed-off-by: Shijie Qin shijie.qin@nxp.com Reviewed-by: ming_qian ming.qian@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/e40c4217d84b3302444a5d4469804ef9e54232bb

LF-5604 mxc: vpu_malone: handle invalid timestamp which tv_sec or tv_usec is negative

If tv_usec is negative, which convert to u32 is a big positive value, thus will confusing timestamp manager. Use 'V4L2_NXP_BUF_FLAG_TIMESTAMP_INVALID' to idicate such invalid timestamp which tv_sec or tv_usec is negative.

Signed-off-by: Shijie Qin shijie.qin@nxp.com Reviewed-by: ming_qian ming.qian@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/07c9084cd04257d8c6c2680d0b6b99b6ecf0b7b2

LF-4968-2 mxc: vpu_malone: handle source change for special case

Cover different client work flow of handle twice continuous source change event: Case 1(unit test): capture port work flow is streamon then queue all free capture buffer, hence, will clear wait_res_change_done incorrectly on first source change. Solution: move the check to capture streamon().

Case 2(Codec2) might only do cature streamon one time. Solution: add workaround to wait previous source change completed when receive new resolution, up to wait 2s for worst case.

Signed-off-by: Shijie Qin shijie.qin@nxp.com Reviewed-by: ming_qian ming.qian@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/9c020bdedb00a30b0c527feaaf35a4be250af32b

LF-4968 mxc: vpu_malone: guarantee wait source change completed

Some stream might occurs twice continuous source change event quickly, previously, driver will wait at most 1s for first time sour change, but 1s might not enough, then will skip wait_res_change_done one times and do abort during source change period.

In order to guarantee each wait source change completed, clear wait_res_change_done until 'res_change_done_count == res_change_send_count'. And then wait source change done at receive seq_info is reduntant.

Signed-off-by: Shijie Qin shijie.qin@nxp.com Reviewed-by: ming_qian ming.qian@nxp.com

--

Commit: https://git.seco.com/edgehog/bsp/nxp/linux-seco-imx/-/commit/92611955ac0863adf3e3cf9532227db8d1ea8e72

LF-4737 mxc: vpu_malone: directly return eos event if receive stop cmd but no stream buffer input

If receive stop cmd but no stream buffer input, there no actual task need driver/firmware to do, thus directly return eos event to user.

Signed-off-by: Shijie Qin shijie.qin@nxp.com Reviewed-by: ming_qian ming.qian@nxp.com

Merge request reports

Loading