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 <[email protected]>
> ---
>  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
> 

Reply via email to