Re: [PATCH] clk: renesas: rzg2l-cpg: Skip re-initializing MSTOPs and critical resets for s2idle

From: Claudiu Beznea

Date: Mon Oct 19 2026 - 09:05:34 EST


Hi, Biju,

On 10/19/26 15:36, Biju Das wrote:
Hi Claudiu,

-----Original Message-----
From: Claudiu Beznea <claudiu.beznea@xxxxxxxxxx>
Sent: 19 October 2026 13:25
Subject: [PATCH] clk: renesas: rzg2l-cpg: Skip re-initializing MSTOPs and critical resets for s2idle

From: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx>

When the system suspends to s2idle, any of the IP blocks may be in the wakeup path. For a device in the
wakeup path, the generic PM domain (genpd) does not disable/enable its clocks across suspend/resume. Re-
initializing the MSTOP bits for such a device leads to synchronous aborts when its registers are accessed
for the first time after resume.

In a suspend mode that is not controlled by firmware, power to the SoC is not lost, so the MSTOP and
critical reset state is retained and does not need re-initialization in the first place. Skip it when
pm_suspend_via_firmware() reports such a mode.

Fixes: 5cd33db56956 ("clk: renesas: rzg2l: Add support for MSTOP in clock enable/disable API")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx>
---
drivers/clk/renesas/rzg2l-cpg.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/clk/renesas/rzg2l-cpg.c b/drivers/clk/renesas/rzg2l-cpg.c index
f6293c968bcf..3d2281456036 100644
--- a/drivers/clk/renesas/rzg2l-cpg.c
+++ b/drivers/clk/renesas/rzg2l-cpg.c
@@ -31,6 +31,7 @@
#include <linux/reset-controller.h>
#include <linux/slab.h>
#include <linux/string_choices.h>
+#include <linux/suspend.h>
#include <linux/units.h>

#include <dt-bindings/clock/renesas-cpg-mssr.h>
@@ -2697,6 +2698,9 @@ static int rzg2l_cpg_resume(struct device *dev)
struct rzg2l_cpg_priv *priv = dev_get_drvdata(dev);
int ret;

+ if (!pm_suspend_via_firmware())
+ return 0;
+

Please move this after deassert, otherwise it will lead to SCIF not getting console
prompt during s2idle as reset is asserted during suspend?
How did you reproduce this?

Who asserts the SCIF reset in s2idle?

Is the s2idle done with the help of firmware in your case?

If you have issues on any of your platforms could you check after applying this patch: https://lore.kernel.org/all/20261005111157.17256-1-ovidiu.panait.rb@xxxxxxxxxxx/ ?

Thank you,
Claudiu