[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220920092721.7686-1-git@vladimir.panteleev.md>
Date: Tue, 20 Sep 2022 09:27:21 +0000
From: Vladimir Panteleev <git@...dimir.panteleev.md>
To: Wim Van Sebroeck <wim@...ux-watchdog.org>,
Guenter Roeck <linux@...ck-us.net>
Cc: Vladimir Panteleev <git@...dimir.panteleev.md>,
linux-watchdog@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [PATCH v2] watchdog: sp5100_tco: Add "action" module parameter
Allow configuring the "action" bit, as documented in [1].
Previously, the only action supported by this module was to reset the
system (0). It can now be configured to power off (1) instead.
[1]: https://www.amd.com/system/files/TechDocs/44413.pdf
Signed-off-by: Vladimir Panteleev <git@...dimir.panteleev.md>
---
Changes since v1:
- Drop the rename of the SP5100_WDT_ACTION_RESET define
- Make the new parameter not visible in sysfs for consistency
drivers/watchdog/sp5100_tco.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/drivers/watchdog/sp5100_tco.c b/drivers/watchdog/sp5100_tco.c
index ae54dd33e233..fb426b7d81da 100644
--- a/drivers/watchdog/sp5100_tco.c
+++ b/drivers/watchdog/sp5100_tco.c
@@ -65,6 +65,12 @@ static struct pci_dev *sp5100_tco_pci;
/* module parameters */
+#define WATCHDOG_ACTION 0
+static bool action = WATCHDOG_ACTION;
+module_param(action, bool, 0);
+MODULE_PARM_DESC(action, "Action taken when watchdog expires, 0 to reset, 1 to poweroff (default="
+ __MODULE_STRING(WATCHDOG_ACTION) ")");
+
#define WATCHDOG_HEARTBEAT 60 /* 60 sec default heartbeat. */
static int heartbeat = WATCHDOG_HEARTBEAT; /* in seconds */
module_param(heartbeat, int, 0);
@@ -297,8 +303,11 @@ static int sp5100_tco_timer_init(struct sp5100_tco *tco)
if (val & SP5100_WDT_FIRED)
wdd->bootstatus = WDIOF_CARDRESET;
- /* Set watchdog action to reset the system */
- val &= ~SP5100_WDT_ACTION_RESET;
+ /* Set watchdog action */
+ if (action)
+ val |= SP5100_WDT_ACTION_RESET;
+ else
+ val &= ~SP5100_WDT_ACTION_RESET;
writel(val, SP5100_WDT_CONTROL(tco->tcobase));
/* Set a reasonable heartbeat before we stop the timer */
--
2.37.3
Powered by blists - more mailing lists