mbox series

[v4,0/3] clk: renesas: cpg-mssr: add RWDT to critical clocks

Message ID 20200616162626.27944-1-uli+renesas@fpond.eu (mailing list archive)
Headers show
Series clk: renesas: cpg-mssr: add RWDT to critical clocks | expand

Message

Ulrich Hecht June 16, 2020, 4:26 p.m. UTC
(was: "clk: renesas: cpg-mssr: add never-disable option")

Hi!

The purpose of this series is to allow a WDT that has been enabled by the
bootloader to survive these events:

- deferred probing of the WDT device, which can lead the clock driver
  to disable the WDT clock until the WDT is re-probed, giving it a
  blind spot
- probe failure in the WDT driver

Following a suggestion by Geert, this revision, instead of adding another
list of clocks with special handling, changes the semantics of the
crit_mod_clks[] array slightly by only marking clocks critical that are
enabled at boot time. That way it can be used for RWDT without forcing the
clock on unnecessarily.

The other existing user of crit_mod_clks[] (INTC-AP) is always on at boot time
and should thus not be affected by this change.

There are a number of Gen2 and RZ/G1 SoCs that have the RWDT clock declared
as critical already in order to allow SMP bringup code to work. That should
still work with this series applied, assuming that the WDT clock is on at
boot time.

CU
Uli


Changes since v3:
- drop separate array, add RWDT to crit_mod_clks[]
- only mark clocks as critical if they are enabled on boot

Changes since v2:
- use the term "never-disable" instead of "ignore-unused"
- do the handling internally instead of relying on the behavior of
  CLK_IGNORE_UNUSED

Changes since v1:
- rename data structures for clarity
- squash SoC-specific patches into one per family


Ulrich Hecht (3):
  clk: renesas: cpg-mssr: mark clocks as critical only if on at boot
  clk: renesas: rcar-gen3: mark RWDT clocks as critical
  clk: renesas: rzg2: mark RWDT clock as critical

 drivers/clk/renesas/r8a774a1-cpg-mssr.c |  1 +
 drivers/clk/renesas/r8a774b1-cpg-mssr.c |  1 +
 drivers/clk/renesas/r8a774c0-cpg-mssr.c |  1 +
 drivers/clk/renesas/r8a7795-cpg-mssr.c  |  2 +-
 drivers/clk/renesas/r8a7796-cpg-mssr.c  |  2 +-
 drivers/clk/renesas/r8a77965-cpg-mssr.c |  1 +
 drivers/clk/renesas/r8a77970-cpg-mssr.c |  2 +-
 drivers/clk/renesas/r8a77980-cpg-mssr.c |  2 +-
 drivers/clk/renesas/r8a77990-cpg-mssr.c |  1 +
 drivers/clk/renesas/r8a77995-cpg-mssr.c |  2 +-
 drivers/clk/renesas/renesas-cpg-mssr.c  | 17 +++++++++--------
 11 files changed, 19 insertions(+), 13 deletions(-)

Comments

Geert Uytterhoeven June 18, 2020, 11:45 a.m. UTC | #1
Hi Uli,

On Tue, Jun 16, 2020 at 6:26 PM Ulrich Hecht <uli+renesas@fpond.eu> wrote:
> The purpose of this series is to allow a WDT that has been enabled by the
> bootloader to survive these events:
>
> - deferred probing of the WDT device, which can lead the clock driver
>   to disable the WDT clock until the WDT is re-probed, giving it a
>   blind spot
> - probe failure in the WDT driver
>
> Following a suggestion by Geert, this revision, instead of adding another
> list of clocks with special handling, changes the semantics of the
> crit_mod_clks[] array slightly by only marking clocks critical that are
> enabled at boot time. That way it can be used for RWDT without forcing the
> clock on unnecessarily.
>
> The other existing user of crit_mod_clks[] (INTC-AP) is always on at boot time
> and should thus not be affected by this change.
>
> There are a number of Gen2 and RZ/G1 SoCs that have the RWDT clock declared
> as critical already in order to allow SMP bringup code to work. That should
> still work with this series applied, assuming that the WDT clock is on at
> boot time.

It must be, as initial secondary CPU bringup runs very early.

That does mean I will have to remove the RWDT clock from my debug code
to disable all unused clocks during boot[1].
Interestingly, the SMP bringup code still seems to work (on R-Car M2-W
ES1.0) if the RWDT clock is disabled, both for initial bringup and
manual CPU off/onlining later. And it keeps working if I move the debug
code earlier (currently it runs after initial bringup).

So we're all fine ;-)

[1] https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git/log/?h=topic/renesas-debug

Gr{oetje,eeting}s,

                        Geert