Re: [PATCH/RFC 00/11] ARM: dts: rcar-gen2: Enable watchdog support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
>      work).
> 
> 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 &&
> 	soc_device_match(rcar_gen2_wdt_needs_up))
> 	    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
> git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git.
> 
> 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*
> files:
> 
>     # find /sys/devices/ -name dev | xargs grep 247:
>     /sys/devices/platform/soc/e6020000.watchdog/watchdog/watchdog0/dev:247:0
>     /sys/devices/platform/soc/e60b0000.i2c/i2c-6/6-0058/da9063-watchdog/watchdog/watchdog1/dev:247:1
> 
> 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.



[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux