Re: [PATCH] watchdog: omap: Fix early_enable to start watchdogd

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/17/19 12:03 PM, Brandon Maier wrote:
When the 'early_enable' module_param is enabled, Linux's watchdogd
thread does not start, causing the watchdog to eventually fire.


What does early_enable have to do with watchdogd ? Why would
watchdogd not start if this flag is set ?

The purpose of early_enable in this driver, as I understand it,
was to force watchdogd to start within the timeout period. So
it does exactly what it is supposed to be doing.

Guenter

For the watchdogd to be started, the WDOG_HW_RUNNING flag must be set
before watchdog_register_device().

Signed-off-by: Brandon Maier <brandon.maier@xxxxxxxxxxxxxxxxxxx>
---
  drivers/watchdog/omap_wdt.c | 10 ++++++----
  1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/watchdog/omap_wdt.c b/drivers/watchdog/omap_wdt.c
index 9b91882fe3c4..ecc8592c00a5 100644
--- a/drivers/watchdog/omap_wdt.c
+++ b/drivers/watchdog/omap_wdt.c
@@ -268,8 +268,13 @@ static int omap_wdt_probe(struct platform_device *pdev)
  			wdev->wdog.bootstatus = WDIOF_CARDRESET;
  	}
- if (!early_enable)
+	if (!early_enable) {
  		omap_wdt_disable(wdev);
+		clear_bit(WDOG_HW_RUNNING, &wdev->wdog.status);
+	} else {
+		omap_wdt_start(&wdev->wdog);
+		set_bit(WDOG_HW_RUNNING, &wdev->wdog.status);
+	}
ret = watchdog_register_device(&wdev->wdog);
  	if (ret) {
@@ -281,9 +286,6 @@ static int omap_wdt_probe(struct platform_device *pdev)
  		readl_relaxed(wdev->base + OMAP_WATCHDOG_REV) & 0xFF,
  		wdev->wdog.timeout);
- if (early_enable)
-		omap_wdt_start(&wdev->wdog);
-
  	pm_runtime_put(wdev->dev);
return 0;





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux