Re: [PATCH v2 4/4] Add WARN() function call to hard-soft lockup

From: Don Zickus
Date: Mon Feb 01 2016 - 16:09:00 EST


On Mon, Feb 01, 2016 at 01:45:27PM -0700, Jeffrey Merkey wrote:
> This patch series adds config options which can be set during compile to
> direct the compiler to output a breakpoint instruction anywhere a BUG_XX()
> or WARN_XX() macro has been placed in the kernel to trigger the system to
> enter a debugger if a bug is detected by the system. Use of this compile
> time option also allows conditional breakpoints to be set in the kernel
> where these macros have been previously placed.
>
> This addition is extremely useful for debugging hard and soft lockups
> real time and quickly from a console debugger, and other areas of the
> kernel.
>
> Signed-off-by: Jeffrey Merkey <jeffmerkey@xxxxxxxxx>
> ---
> kernel/watchdog.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/kernel/watchdog.c b/kernel/watchdog.c
> index b3ace6e..af07a83 100644
> --- a/kernel/watchdog.c
> +++ b/kernel/watchdog.c
> @@ -358,6 +358,8 @@ static void watchdog_overflow_callback(struct perf_event *event,
> else
> dump_stack();
>
> + WARN(1, "Watchdog detected hard LOCKUP on cpu %d", this_cpu);
> +

So we repeat the same exact print message and dump the same stack again as
we do a few lines above? That doesn't make any sense.

Cheers,
Don

> /*
> * Perform all-CPU dump only once to avoid multiple hardlockups
> * generating interleaving traces
> @@ -478,6 +480,9 @@ static enum hrtimer_restart watchdog_timer_fn(struct hrtimer *hrtimer)
> else
> dump_stack();
>
> + WARN(1, "Watchdog detected soft LOCKUP on cpu %d",
> + smp_processor_id());
> +
> if (softlockup_all_cpu_backtrace) {
> /* Avoid generating two back traces for current
> * given that one is already made above
> --
> 1.8.3.1
>