On Thu, Feb 08, 2018 at 11:34:06AM +0100, Geert Uytterhoeven wrote:
> Hi all,
> 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
> and alt).
> 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
> and koelsch).
> 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 &&
> return -ENODEV;
> 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.
> Test procedure:
> 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
> DA9063 PMIC):
> # 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
Thanks, "dts" patches applied for v4.17.