From: Petr Mladek <pmladek@suse.com>
To: Feng Tang <feng.tang@linux.alibaba.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Lance Yang <ioworker0@gmail.com>,
paulmck@kernel.org, Steven Rostedt <rostedt@goodmis.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/3] watchdog: add lockup_sys_info sysctl to dump sys info on system lockup
Date: Tue, 11 Nov 2025 14:26:05 +0100 [thread overview]
Message-ID: <aRM5bXr4erUqpl_e@pathway> (raw)
In-Reply-To: <20251106023032.25875-4-feng.tang@linux.alibaba.com>
On Thu 2025-11-06 10:30:32, Feng Tang wrote:
> When soft/hard lockup happens, developers may need different kinds of
> system information (call-stacks, memory info, locks, etc.) to help debugging.
>
> Add 'lockup_sys_info' sysctl knob to take human readable string like
> "tasks,mem,timers,locks,ftrace,...", and when system lockup happens, all
> requested information will be dumped. (refer kernel/sys_info.c for more
> details).
>
> --- a/kernel/watchdog.c
> +++ b/kernel/watchdog.c
> @@ -53,6 +54,13 @@ static int __read_mostly watchdog_hardlockup_available;
> struct cpumask watchdog_cpumask __read_mostly;
> unsigned long *watchdog_cpumask_bits = cpumask_bits(&watchdog_cpumask);
>
> +/*
> + * A bitmask to control what kinds of system info to be printed when
> + * system lockup is detected, it could be task, memory, lock etc. Refer
> + * include/linux/sys_info.h for detailed bit definition.
> + */
> +static unsigned long lockup_si_mask;
> +
> #ifdef CONFIG_HARDLOCKUP_DETECTOR
>
> # ifdef CONFIG_SMP
> @@ -240,6 +248,7 @@ void watchdog_hardlockup_check(unsigned int cpu, struct pt_regs *regs)
> clear_bit_unlock(0, &hard_lockup_nmi_warn);
> }
The code right above printed backtaces from all CPUs when
sysctl_hardlockup_all_cpu_backtrace.
> + sys_info(lockup_si_mask);
And sys_info() could print it again when SYS_INFO_ALL_BT
bit is set. The hard lockup detector should use the same
trick as the softlockup detector in watchdog_timer_fn().
> if (hardlockup_panic)
> nmi_panic(regs, "Hard LOCKUP");
>
> @@ -746,9 +755,11 @@ static enum hrtimer_restart watchdog_timer_fn(struct hrtimer *hrtimer)
> unsigned long touch_ts, period_ts, now;
> struct pt_regs *regs = get_irq_regs();
> int duration;
> - int softlockup_all_cpu_backtrace = sysctl_softlockup_all_cpu_backtrace;
> + int softlockup_all_cpu_backtrace;
> unsigned long flags;
>
> + softlockup_all_cpu_backtrace = (lockup_si_mask & SYS_INFO_ALL_BT) ?
> + 1 : sysctl_softlockup_all_cpu_backtrace;
> if (!watchdog_enabled)
> return HRTIMER_NORESTART;
>
> @@ -846,6 +857,7 @@ static enum hrtimer_restart watchdog_timer_fn(struct hrtimer *hrtimer)
> }
>
> add_taint(TAINT_SOFTLOCKUP, LOCKDEP_STILL_OK);
> + sys_info(lockup_si_mask & ~SYS_INFO_ALL_BT);
> if (softlockup_panic)
> panic("softlockup: hung tasks");
> }
> @@ -1178,6 +1190,13 @@ static const struct ctl_table watchdog_sysctls[] = {
> .mode = 0644,
> .proc_handler = proc_watchdog_cpumask,
> },
> + {
> + .procname = "lockup_sys_info",
> + .data = &lockup_si_mask,
> + .maxlen = sizeof(lockup_si_mask),
> + .mode = 0644,
> + .proc_handler = sysctl_sys_info_handler,
> + },
There already exists:
+ hardlockup_all_cpu_backtrace
+ hardlockup_panic
+ softlockup_all_cpu_backtrace
+ softlockup_panic
IMHO, it would make sense to introduce separate:
+ hardlockup_sys_info
+ softlockup_sys_info
Best Regards,
Petr
next prev parent reply other threads:[~2025-11-11 13:26 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-06 2:30 [PATCH 0/3] Enable hung_task and lockup cases to dump system info on demand Feng Tang
2025-11-06 2:30 ` [PATCH 1/3] docs: panic: correct some sys_ifo names in sysctl doc Feng Tang
2025-11-10 16:52 ` Petr Mladek
2025-11-11 14:09 ` Feng Tang
2025-11-06 2:30 ` [PATCH 2/3] hung_task: Add hung_task_sys_info sysctl to dump sys info on task-hung Feng Tang
2025-11-06 3:28 ` Lance Yang
2025-11-06 4:48 ` Feng Tang
2025-11-10 17:55 ` Petr Mladek
2025-11-11 13:37 ` Feng Tang
2025-11-12 11:25 ` Feng Tang
2025-11-12 14:44 ` Petr Mladek
2025-11-13 2:56 ` Feng Tang
2025-11-06 2:30 ` [PATCH 3/3] watchdog: add lockup_sys_info sysctl to dump sys info on system lockup Feng Tang
2025-11-11 13:26 ` Petr Mladek [this message]
2025-11-11 14:09 ` Feng Tang
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=aRM5bXr4erUqpl_e@pathway \
--to=pmladek@suse.com \
--cc=akpm@linux-foundation.org \
--cc=feng.tang@linux.alibaba.com \
--cc=ioworker0@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=paulmck@kernel.org \
--cc=rostedt@goodmis.org \
/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.