world leader in high performance signal processing
Trace: » nmi_watchdog

NMI Watchdog Introduction

The nmi watchdog on blackfin is implemented for WDT1 which existed on BF561. So this driver only work for SMP kernel.

The tick handler on each cpu is responsible of touching the per-cpu variable: 'nmi_touched', and there is a timer which will periodically(every 4 seconds) checks these variables, if checks OK, the timer handler will reset the nmi watchdog, or else, debug messages will be dumped out, and the system died.

Testing the nmi_wdt

Enable nmi_wdt in Kernel

  • Enable SMP

Blackfin Processor Options —> [*] Symmetric multi-processing support

  • Select NMI Watchdog driver

Kernel hacking —> [*] Enable NMI watchdog to help debuging lockup on SMP

Enable nmi_wdt_test in User

Blackfin test programs —> [*] nmi_wdt test

Build kernel image

# cd trunk
# make;cp -f images/uImage /tftpboot/

Test in kernel

# modprobe  nmi_wdt_test
# cd /proc
# ls -l nmi_wdt
# nmi_wdt                                                       
 --w--w--w-    1 root     root            0 Jan  1 00:24 nmi_wdt
# echo 1 > /proc/nmi_wdt

Check the Dump Information

The dump info looks like,

NMI Watchdog detected LOCKUP, dump for CPU 0                                    
Deferred Interrupt
context                                                      
No Valid process in current
context                                             
return address: [0x00038c3e]; contents of:
...
...

This fault is not recoverable, sorry!