[RESEND PATCH v2] firmware/psci: Print a warning if PSCI doesn't accept PC mode

Dmitry Baryshkov dmitry.baryshkov at linaro.org
Wed Oct 19 08:02:37 PDT 2022


On Wed, 19 Oct 2022 at 17:37, Ulf Hansson <ulf.hansson at linaro.org> wrote:
>
> On Wed, 19 Oct 2022 at 16:14, Johan Hovold <johan at kernel.org> wrote:
> >
> > On Mon, Sep 26, 2022 at 02:02:49PM +0300, Dmitry Baryshkov wrote:
> > > The function psci_pd_try_set_osi_mode() will print an error if enabling
> > > OSI mode fails. To ease debugging PSCI issues print corresponding
> > > message if switching to PC mode fails too.
> > >
> > > Acked-by: Mark Rutland <mark.rutland at arm.com>
> > > Reviewed-by: Sudeep Holla <sudeep.holla at arm.com>
> > > Reviewed-by: Ulf Hansson <ulf.hansson at linaro.org>
> > > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov at linaro.org>
> > > ---
> > > This is a replacement for [1], now moving the warning from
> > > psci_set_osi_mode() callers to the function iself.
> > >
> > > The patch is resent to include soc at kernel.org
> > >
> > > [1] https://lore.kernel.org/all/20220727182034.983727-1-dmitry.baryshkov@linaro.org/
> > >
> > > ---
> > >  drivers/cpuidle/cpuidle-psci-domain.c | 4 +---
> > >  drivers/firmware/psci/psci.c          | 2 ++
> > >  2 files changed, 3 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/drivers/cpuidle/cpuidle-psci-domain.c b/drivers/cpuidle/cpuidle-psci-domain.c
> > > index 3db4fca1172b..821984947ed9 100644
> > > --- a/drivers/cpuidle/cpuidle-psci-domain.c
> > > +++ b/drivers/cpuidle/cpuidle-psci-domain.c
> > > @@ -124,10 +124,8 @@ static bool psci_pd_try_set_osi_mode(void)
> > >               return false;
> > >
> > >       ret = psci_set_osi_mode(true);
> > > -     if (ret) {
> > > -             pr_warn("failed to enable OSI mode: %d\n", ret);
> > > +     if (ret)
> > >               return false;
> > > -     }
> > >
> > >       return true;
> > >  }
> > > diff --git a/drivers/firmware/psci/psci.c b/drivers/firmware/psci/psci.c
> > > index 9fdcb6bff403..42cae0ba10e2 100644
> > > --- a/drivers/firmware/psci/psci.c
> > > +++ b/drivers/firmware/psci/psci.c
> > > @@ -164,6 +164,8 @@ int psci_set_osi_mode(bool enable)
> > >                       PSCI_1_0_SUSPEND_MODE_PC;
> > >
> > >       err = invoke_psci_fn(PSCI_1_0_FN_SET_SUSPEND_MODE, suspend_mode, 0, 0);
> > > +     if (err < 0)
> > > +             pr_warn("failed to set %s mode: %d\n", enable ? "OSI" : "PC", err);
> > >       return psci_to_linux_errno(err);
> > >  }
> >
> > When booting 6.1-rc1 I now see:
> >
> >         [    0.000000] psci: OSI mode supported.
> >         [    0.000000] psci: failed to set PC mode: -3
> >
> > on every boot with sc8280xp, while later enabling OSI mode still works:
> >
> >         [    0.227358] CPUidle PSCI: psci_pd_try_set_osi_mode - success
> >         [    0.227599] CPUidle PSCI: Initialized CPU PM domain topology
> >
> > Judging from Sudeep's comment on v1:
> >
> >         The platform must boot in PC mode, so even if it fails we ignore
> >         so not sure if the logging is of much help here IMO.
> >
> > perhaps logging this as an error is not a good idea?

As far as I understand, some of the Qualcomm platforms booted in the
OSI mode, no matter what the spec says. I'm not sure about the
sc8280xp, but it definitely was the case previously. This was the
primary reason for adding a log here.

> I think it's useful to get information that the FW doesn't fully
> conform to the spec (it should support PC mode), but that doesn't
> really mean that it can't work.
>
> To me, it sounds like we should move the logging to the debug level!?

I'd say, either ignore the error, or move the warning to the info or
debug level.

-- 
With best wishes
Dmitry



More information about the linux-arm-kernel mailing list