From patchwork Tue Apr 26 03:35:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Liu Xinpeng X-Patchwork-Id: 566450 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id F295BC433FE for ; Tue, 26 Apr 2022 03:35:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243256AbiDZDi4 (ORCPT ); Mon, 25 Apr 2022 23:38:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39044 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243297AbiDZDit (ORCPT ); Mon, 25 Apr 2022 23:38:49 -0400 Received: from chinatelecom.cn (prt-mail.chinatelecom.cn [42.123.76.228]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 94F0A39B90; Mon, 25 Apr 2022 20:35:43 -0700 (PDT) HMM_SOURCE_IP: 172.18.0.188:49938.983364622 HMM_ATTACHE_NUM: 0000 HMM_SOURCE_TYPE: SMTP Received: from clientip-202.80.192.39 (unknown [172.18.0.188]) by chinatelecom.cn (HERMES) with SMTP id BBF792800C3; Tue, 26 Apr 2022 11:35:40 +0800 (CST) X-189-SAVE-TO-SEND: +liuxp11@chinatelecom.cn Received: from ([172.18.0.188]) by app0023 with ESMTP id b1a20cf88ed847cd8ee905e53141ba80 for wim@linux-watchdog.org; Tue, 26 Apr 2022 11:35:42 CST X-Transaction-ID: b1a20cf88ed847cd8ee905e53141ba80 X-Real-From: liuxp11@chinatelecom.cn X-Receive-IP: 172.18.0.188 X-MEDUSA-Status: 0 Sender: liuxp11@chinatelecom.cn From: Liu Xinpeng To: wim@linux-watchdog.org, linux@roeck-us.net Cc: linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org, Liu Xinpeng Subject: [PATCH v3 1/4] watchdog: wdat_wdg: Using the existed function to check parameter timeout Date: Tue, 26 Apr 2022 11:35:17 +0800 Message-Id: <1650944120-30954-2-git-send-email-liuxp11@chinatelecom.cn> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1650944120-30954-1-git-send-email-liuxp11@chinatelecom.cn> References: <1650944120-30954-1-git-send-email-liuxp11@chinatelecom.cn> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-watchdog@vger.kernel.org The module arguement timeout is a configured timeout value. “separate minimum and maximum HW timeouts and configured timeout value.” (patch v1 is explained by Guenter Roeck) So using watchdog_timeout_invalid to check timeout invalid is more justified. Signed-off-by: Liu Xinpeng --- drivers/watchdog/wdat_wdt.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/watchdog/wdat_wdt.c b/drivers/watchdog/wdat_wdt.c index 195c8c004b69..3040a0554055 100644 --- a/drivers/watchdog/wdat_wdt.c +++ b/drivers/watchdog/wdat_wdt.c @@ -14,6 +14,7 @@ #include #define MAX_WDAT_ACTIONS ACPI_WDAT_ACTION_RESERVED +#define WDAT_TIMEOUT_MIN 1 /** * struct wdat_instruction - Single ACPI WDAT instruction @@ -344,6 +345,7 @@ static int wdat_wdt_probe(struct platform_device *pdev) wdat->period = tbl->timer_period; wdat->wdd.min_hw_heartbeat_ms = wdat->period * tbl->min_count; wdat->wdd.max_hw_heartbeat_ms = wdat->period * tbl->max_count; + wdat->wdd.min_timeout = WDAT_TIMEOUT_MIN; wdat->stopped_in_sleep = tbl->flags & ACPI_WDAT_STOPPED; wdat->wdd.info = &wdat_wdt_info; wdat->wdd.ops = &wdat_wdt_ops; @@ -450,8 +452,7 @@ static int wdat_wdt_probe(struct platform_device *pdev) * watchdog properly after it has opened the device. In some cases * the BIOS default is too short and causes immediate reboot. */ - if (timeout * 1000 < wdat->wdd.min_hw_heartbeat_ms || - timeout * 1000 > wdat->wdd.max_hw_heartbeat_ms) { + if (watchdog_timeout_invalid(&wdat->wdd, timeout)) { dev_warn(dev, "Invalid timeout %d given, using %d\n", timeout, WDAT_DEFAULT_TIMEOUT); timeout = WDAT_DEFAULT_TIMEOUT; From patchwork Tue Apr 26 03:35:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liu Xinpeng X-Patchwork-Id: 567457 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 45841C433F5 for ; Tue, 26 Apr 2022 03:35:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243294AbiDZDi6 (ORCPT ); Mon, 25 Apr 2022 23:38:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39332 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243408AbiDZDiz (ORCPT ); Mon, 25 Apr 2022 23:38:55 -0400 Received: from chinatelecom.cn (prt-mail.chinatelecom.cn [42.123.76.228]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 8004D3A182; Mon, 25 Apr 2022 20:35:45 -0700 (PDT) HMM_SOURCE_IP: 172.18.0.188:49938.983364622 HMM_ATTACHE_NUM: 0000 HMM_SOURCE_TYPE: SMTP Received: from clientip-202.80.192.39 (unknown [172.18.0.188]) by chinatelecom.cn (HERMES) with SMTP id B34B62800DC; Tue, 26 Apr 2022 11:35:42 +0800 (CST) X-189-SAVE-TO-SEND: +liuxp11@chinatelecom.cn Received: from ([172.18.0.188]) by app0023 with ESMTP id 20f56f595bf9421ea7f1d4939b6d8979 for wim@linux-watchdog.org; Tue, 26 Apr 2022 11:35:44 CST X-Transaction-ID: 20f56f595bf9421ea7f1d4939b6d8979 X-Real-From: liuxp11@chinatelecom.cn X-Receive-IP: 172.18.0.188 X-MEDUSA-Status: 0 Sender: liuxp11@chinatelecom.cn From: Liu Xinpeng To: wim@linux-watchdog.org, linux@roeck-us.net Cc: linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org, Liu Xinpeng Subject: [PATCH v3 2/4] watchdog: wdat_wdg: Stop watchdog when rebooting the system Date: Tue, 26 Apr 2022 11:35:18 +0800 Message-Id: <1650944120-30954-3-git-send-email-liuxp11@chinatelecom.cn> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1650944120-30954-1-git-send-email-liuxp11@chinatelecom.cn> References: <1650944120-30954-1-git-send-email-liuxp11@chinatelecom.cn> Precedence: bulk List-ID: X-Mailing-List: linux-watchdog@vger.kernel.org Executing reboot command several times on the machine "Dell PowerEdge R740", UEFI security detection stopped machine with the following prompt: UEFI0082: The system was reset due to a timeout from the watchdog timer. Check the System Event Log (SEL) or crash dumps from Operating Sysstem to identify the source that triggered the watchdog timer reset. Update the firmware or driver for the identified device. iDRAC has warning event: "The watchdog timer reset the system". This patch fixes this issue by adding the reboot notifier. Signed-off-by: Liu Xinpeng --- drivers/watchdog/wdat_wdt.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/watchdog/wdat_wdt.c b/drivers/watchdog/wdat_wdt.c index 3040a0554055..609922ed4744 100644 --- a/drivers/watchdog/wdat_wdt.c +++ b/drivers/watchdog/wdat_wdt.c @@ -463,6 +463,7 @@ static int wdat_wdt_probe(struct platform_device *pdev) return ret; watchdog_set_nowayout(&wdat->wdd, nowayout); + watchdog_stop_on_reboot(&wdat->wdd); return devm_watchdog_register_device(dev, &wdat->wdd); } From patchwork Tue Apr 26 03:35:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liu Xinpeng X-Patchwork-Id: 566449 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7A4B6C433F5 for ; Tue, 26 Apr 2022 03:35:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243248AbiDZDjC (ORCPT ); Mon, 25 Apr 2022 23:39:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39386 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243191AbiDZDi4 (ORCPT ); Mon, 25 Apr 2022 23:38:56 -0400 Received: from chinatelecom.cn (prt-mail.chinatelecom.cn [42.123.76.228]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 8738C3A1A1; Mon, 25 Apr 2022 20:35:47 -0700 (PDT) HMM_SOURCE_IP: 172.18.0.188:49938.983364622 HMM_ATTACHE_NUM: 0000 HMM_SOURCE_TYPE: SMTP Received: from clientip-202.80.192.39 (unknown [172.18.0.188]) by chinatelecom.cn (HERMES) with SMTP id E73A02800EC; Tue, 26 Apr 2022 11:35:44 +0800 (CST) X-189-SAVE-TO-SEND: +liuxp11@chinatelecom.cn Received: from ([172.18.0.188]) by app0023 with ESMTP id 4d512388387547c1946554c70a126d93 for wim@linux-watchdog.org; Tue, 26 Apr 2022 11:35:46 CST X-Transaction-ID: 4d512388387547c1946554c70a126d93 X-Real-From: liuxp11@chinatelecom.cn X-Receive-IP: 172.18.0.188 X-MEDUSA-Status: 0 Sender: liuxp11@chinatelecom.cn From: Liu Xinpeng To: wim@linux-watchdog.org, linux@roeck-us.net Cc: linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org, Liu Xinpeng Subject: [PATCH v3 3/4] watchdog: wdat_wdg: Stop watchdog when uninstalling module Date: Tue, 26 Apr 2022 11:35:19 +0800 Message-Id: <1650944120-30954-4-git-send-email-liuxp11@chinatelecom.cn> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1650944120-30954-1-git-send-email-liuxp11@chinatelecom.cn> References: <1650944120-30954-1-git-send-email-liuxp11@chinatelecom.cn> Precedence: bulk List-ID: X-Mailing-List: linux-watchdog@vger.kernel.org Test shows that wachdog still reboots machine after the module is removed. Use watchdog_stop_on_unregister to stop the watchdog on removing. Signed-off-by: Liu Xinpeng --- drivers/watchdog/wdat_wdt.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/watchdog/wdat_wdt.c b/drivers/watchdog/wdat_wdt.c index 609922ed4744..502da41ac0b2 100644 --- a/drivers/watchdog/wdat_wdt.c +++ b/drivers/watchdog/wdat_wdt.c @@ -464,6 +464,7 @@ static int wdat_wdt_probe(struct platform_device *pdev) watchdog_set_nowayout(&wdat->wdd, nowayout); watchdog_stop_on_reboot(&wdat->wdd); + watchdog_stop_on_unregister(&wdat->wdd); return devm_watchdog_register_device(dev, &wdat->wdd); } From patchwork Tue Apr 26 03:35:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liu Xinpeng X-Patchwork-Id: 567456 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C2776C433FE for ; Tue, 26 Apr 2022 03:35:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243332AbiDZDjD (ORCPT ); Mon, 25 Apr 2022 23:39:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39388 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243201AbiDZDi4 (ORCPT ); Mon, 25 Apr 2022 23:38:56 -0400 Received: from chinatelecom.cn (prt-mail.chinatelecom.cn [42.123.76.228]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id C11353A1AA; Mon, 25 Apr 2022 20:35:49 -0700 (PDT) HMM_SOURCE_IP: 172.18.0.188:49938.983364622 HMM_ATTACHE_NUM: 0000 HMM_SOURCE_TYPE: SMTP Received: from clientip-202.80.192.39 (unknown [172.18.0.188]) by chinatelecom.cn (HERMES) with SMTP id E5F7A280029; Tue, 26 Apr 2022 11:35:47 +0800 (CST) X-189-SAVE-TO-SEND: +liuxp11@chinatelecom.cn Received: from ([172.18.0.188]) by app0023 with ESMTP id 10d57f2abc2e4ef58faa5f71ac2aa20b for wim@linux-watchdog.org; Tue, 26 Apr 2022 11:35:48 CST X-Transaction-ID: 10d57f2abc2e4ef58faa5f71ac2aa20b X-Real-From: liuxp11@chinatelecom.cn X-Receive-IP: 172.18.0.188 X-MEDUSA-Status: 0 Sender: liuxp11@chinatelecom.cn From: Liu Xinpeng To: wim@linux-watchdog.org, linux@roeck-us.net Cc: linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org, Liu Xinpeng Subject: [PATCH v3 4/4] watchdog: iTCO_wdg: Make code more clearly with macro definition Date: Tue, 26 Apr 2022 11:35:20 +0800 Message-Id: <1650944120-30954-5-git-send-email-liuxp11@chinatelecom.cn> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1650944120-30954-1-git-send-email-liuxp11@chinatelecom.cn> References: <1650944120-30954-1-git-send-email-liuxp11@chinatelecom.cn> Precedence: bulk List-ID: X-Mailing-List: linux-watchdog@vger.kernel.org Using SET_NOIRQ_SYSTEM_SLEEP_PM_OPS reduces redundant code. Signed-off-by: Liu Xinpeng --- drivers/watchdog/iTCO_wdt.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/drivers/watchdog/iTCO_wdt.c b/drivers/watchdog/iTCO_wdt.c index 3f2f4343644f..f870cf08f143 100644 --- a/drivers/watchdog/iTCO_wdt.c +++ b/drivers/watchdog/iTCO_wdt.c @@ -596,7 +596,6 @@ static int iTCO_wdt_probe(struct platform_device *pdev) return 0; } -#ifdef CONFIG_PM_SLEEP /* * Suspend-to-idle requires this, because it stops the ticks and timekeeping, so * the watchdog cannot be pinged while in that state. In ACPI sleep states the @@ -637,20 +636,15 @@ static int iTCO_wdt_resume_noirq(struct device *dev) } static const struct dev_pm_ops iTCO_wdt_pm = { - .suspend_noirq = iTCO_wdt_suspend_noirq, - .resume_noirq = iTCO_wdt_resume_noirq, + SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(iTCO_wdt_suspend_noirq, + iTCO_wdt_resume_noirq) }; -#define ITCO_WDT_PM_OPS (&iTCO_wdt_pm) -#else -#define ITCO_WDT_PM_OPS NULL -#endif /* CONFIG_PM_SLEEP */ - static struct platform_driver iTCO_wdt_driver = { .probe = iTCO_wdt_probe, .driver = { .name = DRV_NAME, - .pm = ITCO_WDT_PM_OPS, + .pm = &iTCO_wdt_pm, }, };