]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
watchdog: s3c2410: Fix infinite interrupt in soft mode
authorKrzysztof Kozlowski <krzk@kernel.org>
Tue, 4 Apr 2017 19:32:35 +0000 (19:32 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 12 Apr 2017 10:42:12 +0000 (12:42 +0200)
commitd0331c21a1a665f301529c47f5b626f135ab0f61
tree9d9a7ab302da1ba9d73c98055b51dcfaaa4b545c
parent07371cd9ef21bc98ebd9aeb32f05dea8496c1c66
watchdog: s3c2410: Fix infinite interrupt in soft mode

[ Upstream commit 0b445549ea6f91ffea78a976fe89b932db6e077a ]

In soft (no-reboot) mode, the driver self-pings watchdog upon expiration
of an interrupt.  However the interrupt itself was not cleared thus on
first hit, the system enters infinite interrupt handling loop.

On Odroid U3 (Exynos4412), when booted with s3c2410_wdt.soft_noboot=1
argument the console is flooded:
# killall -9 watchdog
[   60.523760] s3c2410-wdt 10060000.watchdog: watchdog timer expired (irq)
[   60.536744] s3c2410-wdt 10060000.watchdog: watchdog timer expired (irq)

Fix this by writing something to the WTCLRINT register to clear the
interrupt.  The register WTCLRINT however appeared in S3C6410 so a new
watchdog quirk and flavor are needed.

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Documentation/devicetree/bindings/watchdog/samsung-wdt.txt
drivers/watchdog/s3c2410_wdt.c