Re: [PATCH] Revert "venus: firmware: Correct non-pix start and end addresses"

From: mka@xxxxxxxxxxxx
Date: Tue Feb 07 2023 - 17:39:24 EST


On Tue, Feb 07, 2023 at 05:50:19PM +0000, mka@xxxxxxxxxxxx wrote:
> Hi Vikash,
>
> On Tue, Feb 07, 2023 at 04:40:24PM +0000, Vikash Garodia wrote:
> > Hi Javier and Matthias,
> > Can we try the attached patch if that fixes the suspend issue for sc7180 and sc7280 ?
>
> On my side the patch fixes the issue for sc7280, but not sc7180.

Some more info for sc7180:

[ 10.313055] qcom-venus aa00000.video-codec: failed to reset venus core
[ 10.331454] qcom-venus: probe of aa00000.video-codec failed with error -110

So venus didn't probe successfully. As a result sync_state() of its rpmhpd and
interconnects isn't called and they keep running at max speed, which prevents
the Always-On subsystem from suspending:

[ 30.171148] qcom-rpmhpd 18200000.rsc:power-controller: Consumer 'aa00000.video-codec' did not probe (successfully)
[ 30.682950] qnoc-sc7180 9680000.interconnect: Consumer 'aa00000.video-codec' did not probe (successfully)
[ 30.701843] qnoc-sc7180 1740000.interconnect: Consumer 'aa00000.video-codec' did not probe (successfully)
[ 30.720168] qnoc-sc7180 1638000.interconnect: Consumer 'aa00000.video-codec' did not probe (successfully)
[ 30.738478] qnoc-sc7180 1500000.interconnect: Consumer 'aa00000.video-codec' did not probe (successfully)

(these debug logs are not upstream)

> > > -----Original Message-----
> > > From: Javier Martinez Canillas <javierm@xxxxxxxxxx>
> > > Sent: Tuesday, February 7, 2023 3:53 PM
> > > To: linux-kernel@xxxxxxxxxxxxxxx
> > > Cc: Albert Esteve <aesteve@xxxxxxxxxx>; stanimir.varbanov@xxxxxxxxxx;
> > > Matthias Kaehlcke <mka@xxxxxxxxxxxx>; Enric Balletbo i Serra
> > > <eballetb@xxxxxxxxxx>; Javier Martinez Canillas <javierm@xxxxxxxxxx>; Andy
> > > Gross <agross@xxxxxxxxxx>; Bjorn Andersson <andersson@xxxxxxxxxx>; Konrad
> > > Dybcio <konrad.dybcio@xxxxxxxxxx>; Mauro Carvalho Chehab
> > > <mchehab@xxxxxxxxxx>; Stanimir Varbanov
> > > <stanimir.k.varbanov@xxxxxxxxx>; Vikash Garodia (QUIC)
> > > <quic_vgarodia@xxxxxxxxxxx>; linux-arm-msm@xxxxxxxxxxxxxxx; linux-
> > > media@xxxxxxxxxxxxxxx
> > > Subject: [PATCH] Revert "venus: firmware: Correct non-pix start and end
> > > addresses"
> > >
> > > WARNING: This email originated from outside of Qualcomm. Please be wary of
> > > any links or attachments, and do not enable macros.
> > >
> > > This reverts commit a837e5161cfffbb3242cc0eb574f8bf65fd32640, which
> > > broke probing of the venus driver, at least on the SC7180 SoC HP X2
> > > Chromebook:
> > >
> > > [ 11.455782] qcom-venus aa00000.video-codec: Adding to iommu group 11
> > > [ 11.506980] qcom-venus aa00000.video-codec: non legacy binding
> > > [ 12.143432] qcom-venus aa00000.video-codec: failed to reset venus core
> > > [ 12.156440] qcom-venus: probe of aa00000.video-codec failed with error -
> > > 110
> > >
> > > Matthias Kaehlcke also reported that the same change caused a regression in
> > > SC7180 and sc7280, that prevents AOSS from entering sleep mode during
> > > system suspend. So let's revert this commit for now to fix both issues.
> > >
> > > Fixes: a837e5161cff ("venus: firmware: Correct non-pix start and end
> > > addresses")
> > > Reported-by: Matthias Kaehlcke <mka@xxxxxxxxxxxx>
> > > Signed-off-by: Javier Martinez Canillas <javierm@xxxxxxxxxx>
> > > ---
> > >
> > > drivers/media/platform/qcom/venus/firmware.c | 4 ++--
> > > 1 file changed, 2 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/drivers/media/platform/qcom/venus/firmware.c
> > > b/drivers/media/platform/qcom/venus/firmware.c
> > > index 142d4c74017c..d59ecf776715 100644
> > > --- a/drivers/media/platform/qcom/venus/firmware.c
> > > +++ b/drivers/media/platform/qcom/venus/firmware.c
> > > @@ -38,8 +38,8 @@ static void venus_reset_cpu(struct venus_core *core)
> > > writel(fw_size, wrapper_base + WRAPPER_FW_END_ADDR);
> > > writel(0, wrapper_base + WRAPPER_CPA_START_ADDR);
> > > writel(fw_size, wrapper_base + WRAPPER_CPA_END_ADDR);
> > > - writel(0, wrapper_base + WRAPPER_NONPIX_START_ADDR);
> > > - writel(0, wrapper_base + WRAPPER_NONPIX_END_ADDR);
> > > + writel(fw_size, wrapper_base + WRAPPER_NONPIX_START_ADDR);
> > > + writel(fw_size, wrapper_base + WRAPPER_NONPIX_END_ADDR);
> > >
> > > if (IS_V6(core)) {
> > > /* Bring XTSS out of reset */
> > > --
> > > 2.39.1
> >
> > Thanks,
> > Vikash
>
>