This patch series enables the builtin watchdog timer on R-Car Gen2 SoCs
on all supported boards, and builds on top of Fabrizio's "[RFC v4 00/26]
Fix watchdog on Renesas R-Car Gen2 and RZ/G1". It is marked RFC as it
is known not to work on all SoCs and SoC revisions.
Based on my experiments, there are 3 success/failure modes:
1. It works!
This is the case on R-Car M2-N ES1.0 and E2 ES1.0 (tested on gose
2. The system hangs on watchdog timeout, unless only the first CPU
core is in use.
This can be achieved by booting with "maxcpus=1", or by manually
offlining all secondary CPU cores first:
for i in /sys/*/*/cpu/cpu[1-9]*; do echo 0 > $i/online; done
This is the case on R-Car H2 ES1.0 and M2-W ES1.0 (tested on lager
3. The system hangs on watchdog timeout, unless the kernel was built
with CONFIG_SMP disabled.
This is the case on R-Car V2H ES1.1 (tested on blanche).
Presumably the restart part in the new shmobile_boot_vector_gen2 is
not compatible with R-Car V2H in some way (CPU off/onlining does
Once we know on which SoCs and revisions it does work, we can add the
proper checks. Right now I'm thinking of adding something like:
if (IS_ENABLED(CONFIG_SMP) && maxcpus > 1 &&
to the watchdog's probe function (assumed we can fix
shmobile_boot_vector_gen2 for R-Car V2H, else we need more checks).
For your convenience, Fabrizio's and my series are available in the
topic/rcar-gen2-wdt-v4 resp. topic/rcar-gen2-wdt-v4+ branches of my
renesas-drivers git repository at
shmobile_defconfig should enable all support needed for testing.
cat > /dev/watchdog0 & for i in $(seq 100); do echo $i; sleep 1; done
If everything goes well, the board should reboot after 60 seconds.
Note that on several boards there are multiple watchdogs (RWDT and
# ls -l /dev/watchdog*
crw------- 1 root root 10, 130 Jan 1 2000 /dev/watchdog
crw------- 1 root root 247, 0 Jan 1 2000 /dev/watchdog0
crw------- 1 root root 247, 1 Jan 1 2000 /dev/watchdog1
/dev/watchdog always corresponds to /dev/watchdog0.
The first one is usually the RWDT. If you want to be 100% sure, look in
sysfs for devices with the (dynamic!) major matching the /dev/watchdog*
# find /sys/devices/ -name dev | xargs grep 247:
Thanks for testing, especially on newer revisions of R-Car H2, M2-W, and
V2H, and on other boards!
Geert Uytterhoeven (11):
clk: renesas: r8a7792: Add rwdt clock
ARM: dts: r8a7792: Add RWDT node
ARM: dts: r8a7793: Add RWDT node
ARM: dts: lager: Enable watchdog support
ARM: dts: koelsch: Enable watchdog support
ARM: dts: porter: Enable watchdog support
ARM: dts: blanche: Enable watchdog support
ARM: dts: wheat: Enable watchdog support
ARM: dts: gose: Enable watchdog support
ARM: dts: alt: Enable watchdog support
ARM: dts: silk: Enable watchdog support
arch/arm/boot/dts/r8a7790-lager.dts | 5 +++++
arch/arm/boot/dts/r8a7791-koelsch.dts | 5 +++++
arch/arm/boot/dts/r8a7791-porter.dts | 5 +++++
arch/arm/boot/dts/r8a7792-blanche.dts | 5 +++++
arch/arm/boot/dts/r8a7792-wheat.dts | 5 +++++
arch/arm/boot/dts/r8a7792.dtsi | 10 ++++++++++
arch/arm/boot/dts/r8a7793-gose.dts | 5 +++++
arch/arm/boot/dts/r8a7793.dtsi | 10 ++++++++++
arch/arm/boot/dts/r8a7794-alt.dts | 5 +++++
arch/arm/boot/dts/r8a7794-silk.dts | 5 +++++
drivers/clk/renesas/r8a7792-cpg-mssr.c | 2 ++
11 files changed, 62 insertions(+)
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds