From: Yury Norov <yury.norov@gmail.com>
To: Jinchao Wang <wangjinchao600@gmail.com>
Cc: pmladek@suse.com, akpm@linux-foundation.org,
Douglas Anderson <dianders@chromium.org>,
Ingo Molnar <mingo@kernel.org>, Li Huafei <lihuafei1@huawei.com>,
Yicong Yang <yangyicong@hisilicon.com>,
Thorsten Blum <thorsten.blum@linux.dev>,
linux-kernel@vger.kernel.org, feng.tang@linux.alibaba.com,
joel.granados@kernel.org, john.ogness@linutronix.de,
namcao@linutronix.de, sravankumarlpu@gmail.com,
Will Deacon <will@kernel.org>
Subject: Re: [PATCH 9/9] watchdog: skip checks when panic is in progress
Date: Wed, 20 Aug 2025 11:18:17 -0400 [thread overview]
Message-ID: <aKXnOTq9ZYeVYqH5@yury> (raw)
In-Reply-To: <20250820091702.512524-10-wangjinchao600@gmail.com>
On Wed, Aug 20, 2025 at 05:14:54PM +0800, Jinchao Wang wrote:
> Both watchdog_buddy_check_hardlockup() and
> watchdog_overflow_callback() may trigger
> during a panic. This can lead to recursive
> panic handling.
>
> Add panic_in_progress() checks so watchdog
> activity is skipped once a panic has begun.
>
> This prevents recursive panic and keeps the
> panic path more reliable.
>
> Signed-off-by: Jinchao Wang <wangjinchao600@gmail.com>
> ---
> kernel/watchdog_buddy.c | 5 +++++
> kernel/watchdog_perf.c | 3 +++
> 2 files changed, 8 insertions(+)
>
> diff --git a/kernel/watchdog_buddy.c b/kernel/watchdog_buddy.c
> index ee754d767c21..79a85623028c 100644
> --- a/kernel/watchdog_buddy.c
> +++ b/kernel/watchdog_buddy.c
> @@ -93,6 +93,11 @@ void watchdog_buddy_check_hardlockup(int hrtimer_interrupts)
> */
> if (hrtimer_interrupts % 3 != 0)
> return;
> + /*
> + * pass the buddy check if a panic is in process
> + */
> + if (panic_in_progress())
> + return;
>
> /* check for a hardlockup on the next CPU */
> next_cpu = watchdog_next_cpu(smp_processor_id());
> diff --git a/kernel/watchdog_perf.c b/kernel/watchdog_perf.c
> index 9c58f5b4381d..7641de750ca5 100644
> --- a/kernel/watchdog_perf.c
> +++ b/kernel/watchdog_perf.c
> @@ -12,6 +12,7 @@
>
> #define pr_fmt(fmt) "NMI watchdog: " fmt
>
> +#include <linux/panic.h>
> #include <linux/nmi.h>
> #include <linux/atomic.h>
> #include <linux/module.h>
> @@ -110,6 +111,8 @@ static void watchdog_overflow_callback(struct perf_event *event,
>
> if (!watchdog_check_timestamp())
> return;
> + if (panic_in_progress())
> + return;
It looks like watchdog_check_timestamp() does some real work, like
updates last_timestamp and so on. Under the panic condition all this
may be unreliable, right?
Maybe it's worth to make panic_in_progress() the first check in the
chain?
With that,
Reviewed-by: Yury Norov (NVIDIA) <yury.norov@gmail.com>
>
> watchdog_hardlockup_check(smp_processor_id(), regs);
> }
> --
> 2.43.0
next prev parent reply other threads:[~2025-08-20 15:18 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-20 9:14 [PATCH 0/9] panic: introduce panic status function family Jinchao Wang
2025-08-20 9:14 ` [PATCH 1/9] panic: Introduce helper functions for panic state Jinchao Wang
2025-08-20 9:14 ` [PATCH 2/9] fbdev: Use panic_in_progress() helper Jinchao Wang
2025-08-20 9:14 ` [PATCH 3/9] crash_core: use panic_try_start() in crash_kexec() Jinchao Wang
2025-08-20 9:14 ` [PATCH 4/9] panic: use panic_try_start() in nmi_panic() Jinchao Wang
2025-08-20 9:14 ` [PATCH 5/9] panic: use panic_try_start() in vpanic() Jinchao Wang
2025-08-20 9:14 ` [PATCH 6/9] printk/nbcon: use panic_on_this_cpu() helper Jinchao Wang
2025-08-20 9:14 ` [PATCH 7/9] panic/printk: replace this_cpu_in_panic() with panic_on_this_cpu() Jinchao Wang
2025-08-20 9:14 ` [PATCH 8/9] panic/printk: replace other_cpu_in_panic() with panic_on_other_cpu() Jinchao Wang
2025-08-20 9:14 ` [PATCH 9/9] watchdog: skip checks when panic is in progress Jinchao Wang
2025-08-20 15:18 ` Yury Norov [this message]
2025-08-21 1:29 ` Jinchao Wang
2025-08-25 10:05 ` [PATCH 8/9] panic/printk: replace other_cpu_in_panic() with panic_on_other_cpu() John Ogness
2025-08-25 9:53 ` [PATCH 6/9] printk/nbcon: use panic_on_this_cpu() helper John Ogness
2025-08-26 0:58 ` Jinchao Wang
2025-08-20 13:35 ` [PATCH 3/9] crash_core: use panic_try_start() in crash_kexec() Baoquan He
2025-08-20 13:43 ` Baoquan He
2025-08-21 2:43 ` Baoquan He
2025-08-21 3:41 ` Jinchao Wang
2025-08-20 10:44 ` [PATCH 2/9] fbdev: Use panic_in_progress() helper Qianqiang Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aKXnOTq9ZYeVYqH5@yury \
--to=yury.norov@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=dianders@chromium.org \
--cc=feng.tang@linux.alibaba.com \
--cc=joel.granados@kernel.org \
--cc=john.ogness@linutronix.de \
--cc=lihuafei1@huawei.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namcao@linutronix.de \
--cc=pmladek@suse.com \
--cc=sravankumarlpu@gmail.com \
--cc=thorsten.blum@linux.dev \
--cc=wangjinchao600@gmail.com \
--cc=will@kernel.org \
--cc=yangyicong@hisilicon.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.