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 Zapolskiystatic 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 Zapolskiystatic 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 Zapolskiystatic 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