Hi Linus, Please pull from 'master' branch of git://www.linux-watchdog.org/linux-watchdog.git
It contains: * new drivers for: NI 903x/913x watchdog driver, WinSystems EBC-C384 watchdog timer and ARM SBSA watchdog driver * Support for NCT6102D devices * Improvements of the generic watchdog framework (improve restart handler, make set_timeout optional, introduce infrastructure triggered keepalives, ... * improvements on the pnx4008 watchdog driver * several smaller fixes and improvements This will update the following files: Documentation/devicetree/bindings/watchdog/sbsa-gwdt.txt | 31 + Documentation/watchdog/watchdog-kernel-api.txt | 59 +- Documentation/watchdog/watchdog-parameters.txt | 12 MAINTAINERS | 6 arch/arm/mach-lpc32xx/common.c | 15 arch/arm/mach-lpc32xx/common.h | 1 arch/arm/mach-lpc32xx/phy3250.c | 1 drivers/watchdog/Kconfig | 52 + drivers/watchdog/Makefile | 3 drivers/watchdog/atlas7_wdt.c | 5 drivers/watchdog/bcm47xx_wdt.c | 3 drivers/watchdog/da9063_wdt.c | 3 drivers/watchdog/digicolor_wdt.c | 3 drivers/watchdog/dw_wdt.c | 323 ++++------- drivers/watchdog/ebc-c384_wdt.c | 188 ++++++ drivers/watchdog/imgpdc_wdt.c | 3 drivers/watchdog/imx2_wdt.c | 77 -- drivers/watchdog/lpc18xx_wdt.c | 3 drivers/watchdog/meson_wdt.c | 3 drivers/watchdog/moxart_wdt.c | 3 drivers/watchdog/mtk_wdt.c | 3 drivers/watchdog/ni903x_wdt.c | 270 +++++++++ drivers/watchdog/pnx4008_wdt.c | 42 + drivers/watchdog/qcom-wdt.c | 3 drivers/watchdog/rc32434_wdt.c | 2 drivers/watchdog/s3c2410_wdt.c | 19 drivers/watchdog/sbsa_gwdt.c | 408 +++++++++++++++ drivers/watchdog/sunxi_wdt.c | 3 drivers/watchdog/tangox_wdt.c | 14 drivers/watchdog/w83627hf_wdt.c | 22 drivers/watchdog/watchdog_core.c | 4 drivers/watchdog/watchdog_dev.c | 207 ++++++- drivers/watchdog/ziirave_wdt.c | 2 include/linux/watchdog.h | 43 + 34 files changed, 1482 insertions(+), 354 deletions(-) with these Changes: commit d1ed3ba4e3d76b4ebec239c64f990c26d7935700 Author: Guenter Roeck <li...@roeck-us.net> Date: Tue Mar 8 18:46:13 2016 -0800 watchdog: Ensure that wdd is not dereferenced if NULL Smatch rightfully complains that wdd is dereferenced in the watchdog release function after being checked for NULL. Also make sure that it is not accessed outside mutex protection to avoid use-after-free problems. Fixes: e6c71e84e4c0 ("watchdog: Introduce WDOG_HW_RUNNING flag") Reported-by: Dan Carpenter <dan.carpen...@oracle.com> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit 11d7aba9ceb726d86aaaca3eb5f7d79de38989c5 Author: Guenter Roeck <li...@roeck-us.net> Date: Sun Feb 28 13:12:20 2016 -0800 watchdog: imx2: Convert to use infrastructure triggered keepalives The watchdog infrastructure now supports handling watchdog keepalive if the watchdog is running while the watchdog device is closed. Convert the driver to use this infrastructure. Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit f29a72c24ad4927027e77e4eed431a61bc8335b2 Author: Guenter Roeck <li...@roeck-us.net> Date: Sun Feb 28 13:12:19 2016 -0800 watchdog: dw_wdt: Convert to use watchdog infrastructure Convert driver to use watchdog infrastructure. This includes infrastructure support to handle watchdog keepalive if the watchdog is running while the watchdog device is closed. Signed-off-by: Guenter Roeck <li...@roeck-us.net> Tested-by: Douglas Anderson <diand...@chromium.org> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit 15013ad813f6544be8e79afc23672745950d59bc Author: Guenter Roeck <li...@roeck-us.net> Date: Sun Feb 28 13:12:18 2016 -0800 watchdog: Add support for minimum time between heartbeats Some watchdogs require a minimum time between heartbeats. Examples are the watchdogs in DA9062 and AT91SAM9x. Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit d0684c8a9354953efdea214b437445c00743cf49 Author: Guenter Roeck <li...@roeck-us.net> Date: Sun Feb 28 13:12:17 2016 -0800 watchdog: Make stop function optional Not all hardware watchdogs can be stopped. The driver for such watchdogs would typically only set the WATCHDOG_HW_RUNNING flag in its stop function. Make the stop function optional and set WATCHDOG_HW_RUNNING in the watchdog core if it is not provided. Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit ee142889e32f564f9b5e57b68b06693ec5473074 Author: Guenter Roeck <li...@roeck-us.net> Date: Sun Feb 28 13:12:16 2016 -0800 watchdog: Introduce WDOG_HW_RUNNING flag The WDOG_HW_RUNNING flag is expected to be set by watchdog drivers if the hardware watchdog is running. If the flag is set, the watchdog subsystem will ping the watchdog even if the watchdog device is closed. The watchdog driver stop function is now optional and may be omitted if the watchdog can not be stopped. If stopping the watchdog is not possible but the driver implements a stop function, it is responsible to set the WDOG_HW_RUNNING flag in its stop function. Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit 664a39236e718f9f03fa73fc01006da9ced04efc Author: Guenter Roeck <li...@roeck-us.net> Date: Sun Feb 28 13:12:15 2016 -0800 watchdog: Introduce hardware maximum heartbeat in watchdog core Introduce an optional hardware maximum heartbeat in the watchdog core. The hardware maximum heartbeat can be lower than the maximum timeout. Drivers can set the maximum hardware heartbeat value in the watchdog data structure. If the configured timeout exceeds the maximum hardware heartbeat, the watchdog core enables a timer function to assist sending keepalive requests to the watchdog driver. Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit fb32e9b9deeb5df2913deb7d2ae8c36f4f66ecf3 Author: Guenter Roeck <li...@roeck-us.net> Date: Sun Feb 28 13:12:14 2016 -0800 watchdog: Make set_timeout function optional For some watchdogs, the watchdog driver handles timeout changes without explicitly setting any registers. In this situation, the watchdog driver might only set the 'timeout' variable but do nothing else. This can as well be handled by the infrastructure, so make the set_timeout callback optional. If WDIOF_SETTIMEOUT is configured but the .set_timeout callback is not available, update the timeout variable in the infrastructure code. Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit e21f56219bf636b4abd15a0b076a1c5cba381501 Author: Sylvain Lemieux <slemi...@tycoint.com> Date: Fri Mar 4 13:44:10 2016 -0500 arm: lpc32xx: remove restart handler Remove the restart handler from "mach-lpc32xx"; this functionality is now available in the pnx4008 watchdog driver. Signed-off-by: Sylvain Lemieux <slemi...@tycoint.com> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit 0a25345743aeae19ae61bd28b588cd4cb9f0123c Author: Sylvain Lemieux <slemi...@tycoint.com> Date: Fri Mar 4 13:44:09 2016 -0500 arm: lpc32xx: phy3250 remove restart hook Remove the restart hook assignment from phy3250; this functionality is now managed by the pnx4008 watchdog driver. Signed-off-by: Sylvain Lemieux <slemi...@tycoint.com> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit 247dcad5c0361fdae06903f3b10855ba0381802d Author: Sylvain Lemieux <slemi...@tycoint.com> Date: Fri Mar 4 13:44:08 2016 -0500 watchdog: pnx4008: restart: support "cmd" from userspace Added support to verify if a "cmd" is passed from the userspace program rebooting the system; - if a valid "cmd" is available, handle it; - If the received "cmd" is not supported, use the default reboot mode. Signed-off-by: Sylvain Lemieux <slemi...@tycoint.com> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit 25b286c02defa26b136818b17909789102225aa8 Author: Sylvain Lemieux <slemi...@tycoint.com> Date: Fri Mar 4 13:44:07 2016 -0500 watchdog: pnx4008: add support for soft reset Add support for explicit soft reset using the reboot mode. The default reboot mode behavior is unchanged; you can overwrite the default reboot type in the board specific file "DT_MACHINE_START" definition using the "reboot_mode" parameter. Signed-off-by: Sylvain Lemieux <slemi...@tycoint.com> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit 4ed5443d9175f4b6008ca18601672c812a1fe93b Author: Sylvain Lemieux <slemi...@tycoint.com> Date: Fri Mar 4 13:44:06 2016 -0500 watchdog: pnx4008: add restart handler Add restart handler capability to the driver; the restart handler implementation was taken from "mach-lpc32xx" ("lpc23xx_restart" function). Signed-off-by: Sylvain Lemieux <slemi...@tycoint.com> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit 43eec2f50c65bd469989a4dab8c1b5e14d87db84 Author: Sylvain Lemieux <slemi...@tycoint.com> Date: Fri Mar 4 13:44:05 2016 -0500 watchdog: pnx4008: update logging during power-on There is no need to add the driver name in the text to display on the console during the power-on: pnx4008-watchdog 4003c000.watchdog: PNX4008 Watchdog Timer: heartbeat 19 sec Signed-off-by: Sylvain Lemieux <slemi...@tycoint.com> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit 84b84bcf4f718b7b9f5296d4068025fea801a0e1 Author: Wolfram Sang <wsa+rene...@sang-engineering.com> Date: Thu Mar 3 09:24:12 2016 +0100 watchdog: tangox_wdt: test clock rate to avoid division by 0 The clk API may return 0 on clk_get_rate, so we should check the result before using it as a divisor. For this, refactor the code to use a central error path. Signed-off-by: Wolfram Sang <wsa+rene...@sang-engineering.com> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit ccc8208d0855a5b02a4fc49c141b6f1dbf282304 Author: Wolfram Sang <wsa+rene...@sang-engineering.com> Date: Wed Mar 2 23:33:36 2016 +0100 watchdog: atlas7_wdt: test clock rate to avoid division by 0 The clk API may return 0 on clk_get_rate, so we should check the result before using it as a divisor. Signed-off-by: Wolfram Sang <wsa+rene...@sang-engineering.com> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit 882dec1ff125e9020157d27672ec11c2fdfb82c2 Author: Javier Martinez Canillas <jav...@osg.samsung.com> Date: Tue Mar 1 13:45:17 2016 -0300 watchdog: s3c2410_wdt: Add max and min timeout values The watchdog maximum timeout value is determined by the number of bits for the interval timer counter, its source clock frequency, the number of bits of the prescaler and maximum divider value. This can be calculated with the following equation: max_timeout = counter / (freq / (max_prescale + 1) / max_divider) Setting a maximum timeout value will allow the watchdog core to refuse user-space calls to the WDIOC_SETTIMEOUT ioctl that sets not supported timeout values. For example, systemd tries to set a timeout of 10 minutes on reboot to ensure that the machine will be rebooted even if a reboot failed. This leads to the following error message on an Exynos5422 Odroid XU4 board: [ 147.986045] s3c2410-wdt 101d0000.watchdog: timeout 600 too big Reported-by: Krzysztof Kozlowski <k.kozlow...@samsung.com> Signed-off-by: Javier Martinez Canillas <jav...@osg.samsung.com> Reviewed-by: Krzysztof Kozlowski <k.kozlow...@samsung.com> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit 57d2caaabfc744692e36ff83b508d7c52c70e36f Author: Fu Wei <fu....@linaro.org> Date: Mon Feb 29 16:46:50 2016 +0800 Watchdog: introduce ARM SBSA watchdog driver According to Server Base System Architecture (SBSA) specification, the SBSA Generic Watchdog has two stage timeouts: the first signal (WS0) is for alerting the system by interrupt, the second one (WS1) is a real hardware reset. More details about the hardware specification of this device: ARM DEN0029B - Server Base System Architecture (SBSA) This driver can operate ARM SBSA Generic Watchdog as a single stage watchdog or a two stages watchdog, it's set up by the module parameter "action". In the single stage mode, when the timeout is reached, your system will be reset by WS1. The first signal (WS0) is ignored. In the two stages mode, when the timeout is reached, the first signal (WS0) will trigger panic. If the system is getting into trouble and cannot be reset by panic or restart properly by the kdump kernel(if supported), then the second stage (as long as the first stage) will be reached, system will be reset by WS1. This function can help administrator to backup the system context info by panic console output or kdump. This driver bases on linux kernel watchdog framework, so it can get timeout from module parameter and FDT at the driver init stage. Signed-off-by: Fu Wei <fu....@linaro.org> Reviewed-by: Graeme Gregory <graeme.greg...@linaro.org> Tested-by: Pratyush Anand <pan...@redhat.com> Acked-by: Timur Tabi <ti...@codeaurora.org> Reviewed-by: Mathieu Poirier <mathieu.poir...@linaro.org> Tested-by: Suravee Suthikulpanit <suravee.suthikulpa...@amd.com> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit 2fc94b5f229a5d9d1db7fd91d0a4808cfeb915f5 Author: Fu Wei <fu....@linaro.org> Date: Mon Feb 29 16:46:47 2016 +0800 Documentation: add sbsa-gwdt driver documentation The sbsa-gwdt.txt documentation in devicetree/bindings/watchdog is for introducing SBSA(Server Base System Architecture) Generic Watchdog device node info into FDT. Also add sbsa-gwdt introduction in watchdog-parameters.txt Acked-by: Arnd Bergmann <a...@arndb.de> Acked-by: Rob Herring <r...@kernel.org> Signed-off-by: Fu Wei <fu....@linaro.org> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit c36a483d80072f7efdd09e94dd733120dc8ecfb2 Author: William Breathitt Gray <vilhelm.g...@gmail.com> Date: Sun Feb 28 23:54:46 2016 -0500 watchdog: Add watchdog timer support for the WinSystems EBC-C384 The WinSystems EBC-C384 has an onboard watchdog timer. The timeout range supported by the watchdog timer is 1 second to 255 minutes. Timeouts under 256 seconds have a 1 second granularity, while the rest have a 1 minute granularity. This driver adds watchdog timer support for this onboard watchdog timer. The timeout may be configured via the timeout module parameter. Signed-off-by: William Breathitt Gray <vilhelm.g...@gmail.com> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit 70f3997667fb127333862977ba4fd3e855fbf617 Author: Kyle Roeschley <kyle.roesch...@ni.com> Date: Thu Feb 25 11:28:00 2016 -0600 watchdog: ni903x_wdt: Add NI 903x/913x watchdog driver Add support for the watchdog timer on NI cRIO-903x and cDAQ-913x real- time controllers. Signed-off-by: Jeff Westfahl <jeff.westf...@ni.com> Signed-off-by: Kyle Roeschley <kyle.roesch...@ni.com> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit 4d8b229d5ea610affe672e919021e9d02cd877da Author: Guenter Roeck <li...@roeck-us.net> Date: Fri Feb 26 17:32:49 2016 -0800 watchdog: Add 'action' and 'data' parameters to restart handler callback The 'action' (or restart mode) and data parameters may be used by restart handlers, so they should be passed to the restart callback functions. Cc: Sylvain Lemieux <slemi...@tycoint.com> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit 0ce72f354482cfa40fb0a6619511ab94d6daa5e9 Author: Martyn Welch <martyn.we...@collabora.co.uk> Date: Fri Feb 26 16:05:12 2016 +0000 watchdog: ziirave_wdt: Rename "trigger" reset reason "hw watchdog" The Zodiac watchdog is implemented on a microcontoller. The reset reason currently labelled "trigger" is not to detect when the watchdog has triggered (as had been initially understood and suggested by the naming), but to inform the reader that the watchdog, which in fact has it's own hardware watchdog, has been reset because the hardware watchdog has triggered. Renaming to "hw watchdog". Signed-off-by: Martyn Welch <martyn.we...@collabora.co.uk> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit 10e7ac22cdd4d211cef99afcb9371b70cb175be6 Author: Michael S. Tsirkin <m...@redhat.com> Date: Sun Feb 28 17:44:09 2016 +0200 watchdog: rc32434_wdt: fix ioctl error handling Calling return copy_to_user(...) in an ioctl will not do the right thing if there's a pagefault: copy_to_user returns the number of bytes not copied in this case. Fix up watchdog/rc32434_wdt to do return copy_to_user(...)) ? -EFAULT : 0; instead. Cc: sta...@vger.kernel.org Signed-off-by: Michael S. Tsirkin <m...@redhat.com> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit 972ec3510330c9d639c0dd72960e9aa02915855c Author: Jean Delvare <jdelv...@suse.de> Date: Wed Feb 24 16:17:26 2016 +0100 watchdog: Add hardware dependency to BCM7038 driver The BCM7038 watchdog driver is specific to Broadcom ARM and MIPS SoCs so do not present it on other architectures, unless build-testing. Signed-off-by: Jean Delvare <jdelv...@suse.de> Reviewed-by: Justin Chen <justinpo...@gmail.com> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit c3525e3f09526b3ea2b59bb8f9b78cb2ff19a094 Author: Thierry Reding <tred...@nvidia.com> Date: Wed Feb 24 15:22:06 2016 +0100 watchdog: orion: Depend on 32-bit ARM The driver uses the atomic_io_modify() function to update registers, but that function is only available on 32-bit ARM. Recent changes have added ARCH_MVEBU support to 64-bit ARM and hence allowed this driver to build on 64-bit ARM where this function isn't available and thereby causing allmodconfig builds to break. Signed-off-by: Thierry Reding <tred...@nvidia.com> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit 0519e91d80148086997aa5f3ab5d15e95151b6b1 Author: Jean Delvare <jdelv...@suse.de> Date: Tue Feb 9 11:17:48 2016 +0100 watchdog: ts4800: add hardware dependency The Technologic Systems TS-4800 is an i.MX515 board, so its drivers are useless unless building a SOC_IMX51 kernel, except for build testing purposes. Signed-off-by: Jean Delvare <jdelv...@suse.de> Cc: Damien Riegel <damien.rie...@savoirfairelinux.com> Cc: Rob Herring <r...@kernel.org> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> commit 33f74b893a46448670f11375427f0084753c23b6 Author: Rob Kramer <r...@solution-space.com> Date: Mon Feb 8 18:09:49 2016 +0800 watchdog: w83627hf: Added NCT6102D support. As used in (and tested on) the ASRock IMB-150 board. Implementation is identical to other NCT chips, just with different registers. Signed-off-by: Rob Kramer <r...@solution-space.com> Signed-off-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Wim Van Sebroeck <w...@iguana.be> Greetings, Wim.