Re: [PATCH] PM: suspend: Do not call suspend_ops->begin()/end() for s2idle

From: Rafael J. Wysocki (Intel)

Date: Mon Oct 26 2026 - 15:20:53 EST


On Mon, Oct 12, 2026 at 11:42 AM Claudiu Beznea
<claudiu.beznea@xxxxxxxxxx> wrote:
>
>
>
> On 10/5/26 14:11, Ovidiu Panait wrote:
> > Commit 7602c0ec0bbf ("firmware: psci: Set
> > pm_set_resume/suspend_via_firmware() for SYSTEM_SUSPEND") made
> > psci_system_suspend_begin() call pm_set_suspend_via_firmware(), so that
> > device drivers can prepare for the possible removal of the power before
> > PSCI SYSTEM_SUSPEND.
> >
> > Since then, on platforms where PSCI firmware supports SYSTEM_SUSPEND,
> > pm_suspend_via_firmware() returns true during both s2ram and s2idle.
> > This is inconsistent, since SYSTEM_SUSPEND is only invoked for s2ram.
> >
> > This was observed while investigating PCI-related suspend/resume issues
> > on Renesas platforms (RZ/G3S, RZ/V2H), and was traced to
> > platform_suspend_begin() falling back to suspend_ops->begin() (PSCI in
> > this case) when there is no s2idle_ops->begin() callback:
> >
> > platform_suspend_begin(PM_SUSPEND_TO_IDLE)
> > suspend_ops->begin()
> > psci_system_suspend_begin()
> > pm_set_suspend_via_firmware()
> >
> > platform_resume_end() falls back to suspend_ops->end() in the same way.
> >
> > Since s2idle has its own set of callbacks in s2idle_ops, make
> > platform_suspend_begin() and platform_resume_end() only invoke those for
> > s2idle, like the other platform_*() helpers do.
> >
> > Signed-off-by: Ovidiu Panait<ovidiu.panait.rb@xxxxxxxxxxx>
>
> Tested it on top of
> https://lore.kernel.org/all/20261007053645.1391545-1-claudiu.beznea@xxxxxxxxxx
>
> You can add:
> Tested-by: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx>
>
> Should "Fixes:" tag be added as well?

Added and applied the patch as 7.4-rc material, thanks!