xref: /openbmc/linux/drivers/watchdog/pretimeout_panic.c (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*2874c5fdSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-or-later
2da0d12ffSVladimir Zapolskiy /*
3da0d12ffSVladimir Zapolskiy  * Copyright (C) 2015-2016 Mentor Graphics
4da0d12ffSVladimir Zapolskiy  */
5da0d12ffSVladimir Zapolskiy 
6da0d12ffSVladimir Zapolskiy #include <linux/kernel.h>
7da0d12ffSVladimir Zapolskiy #include <linux/module.h>
8da0d12ffSVladimir Zapolskiy #include <linux/watchdog.h>
9da0d12ffSVladimir Zapolskiy 
10da0d12ffSVladimir Zapolskiy #include "watchdog_pretimeout.h"
11da0d12ffSVladimir Zapolskiy 
12da0d12ffSVladimir Zapolskiy /**
13da0d12ffSVladimir Zapolskiy  * pretimeout_panic - Panic on watchdog pretimeout event
14da0d12ffSVladimir Zapolskiy  * @wdd - watchdog_device
15da0d12ffSVladimir Zapolskiy  *
16da0d12ffSVladimir Zapolskiy  * Panic, watchdog has not been fed till pretimeout event.
17da0d12ffSVladimir Zapolskiy  */
pretimeout_panic(struct watchdog_device * wdd)18da0d12ffSVladimir Zapolskiy static void pretimeout_panic(struct watchdog_device *wdd)
19da0d12ffSVladimir Zapolskiy {
20da0d12ffSVladimir Zapolskiy 	panic("watchdog pretimeout event\n");
21da0d12ffSVladimir Zapolskiy }
22da0d12ffSVladimir Zapolskiy 
23da0d12ffSVladimir Zapolskiy static struct watchdog_governor watchdog_gov_panic = {
24da0d12ffSVladimir Zapolskiy 	.name		= "panic",
25da0d12ffSVladimir Zapolskiy 	.pretimeout	= pretimeout_panic,
26da0d12ffSVladimir Zapolskiy };
27da0d12ffSVladimir Zapolskiy 
watchdog_gov_panic_register(void)28da0d12ffSVladimir Zapolskiy static int __init watchdog_gov_panic_register(void)
29da0d12ffSVladimir Zapolskiy {
30da0d12ffSVladimir Zapolskiy 	return watchdog_register_governor(&watchdog_gov_panic);
31da0d12ffSVladimir Zapolskiy }
32da0d12ffSVladimir Zapolskiy 
watchdog_gov_panic_unregister(void)33da0d12ffSVladimir Zapolskiy static void __exit watchdog_gov_panic_unregister(void)
34da0d12ffSVladimir Zapolskiy {
35da0d12ffSVladimir Zapolskiy 	watchdog_unregister_governor(&watchdog_gov_panic);
36da0d12ffSVladimir Zapolskiy }
37da0d12ffSVladimir Zapolskiy module_init(watchdog_gov_panic_register);
38da0d12ffSVladimir Zapolskiy module_exit(watchdog_gov_panic_unregister);
39da0d12ffSVladimir Zapolskiy 
40da0d12ffSVladimir Zapolskiy MODULE_AUTHOR("Vladimir Zapolskiy <vladimir_zapolskiy@mentor.com>");
41da0d12ffSVladimir Zapolskiy MODULE_DESCRIPTION("Panic watchdog pretimeout governor");
42da0d12ffSVladimir Zapolskiy MODULE_LICENSE("GPL");
43