Re: [PATCH v9 1/6] media: verisilicon: Do not set context src/dst formats in reset functions

From: Benjamin Gaignard
Date: Tue May 02 2023 - 02:56:45 EST



Le 01/05/2023 à 09:21, Thorsten Leemhuis a écrit :
On 27.04.23 00:19, Shreeya Patel wrote:
On 20/02/23 16:18, Benjamin Gaignard wrote:
Setting context source and destination formats should only be done
in hantro_set_fmt_out() and hantro_set_fmt_cap() after check that
the targeted queue is not busy.
Remove these calls from hantro_reset_encoded_fmt() and
hantro_reset_raw_fmt() to clean the driver.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@xxxxxxxxxxxxx>
KernelCI found this patch causes a regression in the
baseline.dmesg.alert test [1] on rk3399-rock-pi-4b [2],
see the bisection report for more details [3].

Let us know if you have any questions.


[1]
https://github.com/kernelci/kernelci-core/blob/main/config/rootfs/debos/overlays/baseline/opt/kernelci/dmesg.sh
[2] https://linux.kernelci.org/test/case/id/6442e825f19134d74c2e865d/
[3] https://groups.io/g/kernelci-results/message/40740
Thx for the report. FWIW, regzbot noticed there is a patch that refers
to the culprit that might have been landed in next after your test ran
for the last time (and meanwhile it was mainlined): f100ce3bbd6 ("media:
verisilicon: Fix crash when probing encoder")

Yes that patch should fix the probing issue.
Marek is working on an additional one to fix pixel format negotiation
but that doesn't impact the boot.

Regards,
Benjamin


I wonder if that is related or might even fix the issue.

Ciao, Thorsten

---
  drivers/media/platform/verisilicon/hantro_v4l2.c | 9 ++-------
  1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/drivers/media/platform/verisilicon/hantro_v4l2.c
b/drivers/media/platform/verisilicon/hantro_v4l2.c
index c0d427956210..d8aa42bd4cd4 100644
--- a/drivers/media/platform/verisilicon/hantro_v4l2.c
+++ b/drivers/media/platform/verisilicon/hantro_v4l2.c
@@ -382,13 +382,10 @@ hantro_reset_encoded_fmt(struct hantro_ctx *ctx)
        vpu_fmt = hantro_get_default_fmt(ctx, true);
  -    if (ctx->is_encoder) {
-        ctx->vpu_dst_fmt = vpu_fmt;
+    if (ctx->is_encoder)
          fmt = &ctx->dst_fmt;
-    } else {
-        ctx->vpu_src_fmt = vpu_fmt;
+    else
          fmt = &ctx->src_fmt;
-    }
        hantro_reset_fmt(fmt, vpu_fmt);
      fmt->width = vpu_fmt->frmsize.min_width;
@@ -408,11 +405,9 @@ hantro_reset_raw_fmt(struct hantro_ctx *ctx)
      raw_vpu_fmt = hantro_get_default_fmt(ctx, false);
        if (ctx->is_encoder) {
-        ctx->vpu_src_fmt = raw_vpu_fmt;
          raw_fmt = &ctx->src_fmt;
          encoded_fmt = &ctx->dst_fmt;
      } else {
-        ctx->vpu_dst_fmt = raw_vpu_fmt;
          raw_fmt = &ctx->dst_fmt;
          encoded_fmt = &ctx->src_fmt;
      }