Re: [PATCH] watchdog/hardlockup: set watchdog_hardlockup_warned to true as early as possible

From: Andrew Morton
Date: Sat Aug 05 2023 - 13:17:33 EST


On Sun, 6 Aug 2023 00:01:44 +0800 Liu Song <liusong@xxxxxxxxxxxxxxxxx> wrote:

> Since we want to ensure only printing hardlockups once, it is necessary
> to set "watchdog_hardlockup_warned" to true as early as possible.
>
> ...
>
> --- a/kernel/watchdog.c
> +++ b/kernel/watchdog.c
> @@ -180,6 +180,8 @@ void watchdog_hardlockup_check(unsigned int cpu, struct pt_regs *regs)
> /* Only print hardlockups once. */
> if (per_cpu(watchdog_hardlockup_warned, cpu))
> return;
> + else
> + per_cpu(watchdog_hardlockup_warned, cpu) = true;

The "else" is unneeded.

> pr_emerg("Watchdog detected hard LOCKUP on cpu %d\n", cpu);
> print_modules();
> @@ -206,8 +208,6 @@ void watchdog_hardlockup_check(unsigned int cpu, struct pt_regs *regs)
>
> if (hardlockup_panic)
> nmi_panic(regs, "Hard LOCKUP");
> -
> - per_cpu(watchdog_hardlockup_warned, cpu) = true;
> } else {
> per_cpu(watchdog_hardlockup_warned, cpu) = false;
> }

When resending, please tell us some more about the effects of the
change. Presumably there are circumstances in which excess output is
produced? If so, describe these circumstances and the observed
effects.