.. | .. |
---|
29 | 29 | |
---|
30 | 30 | #include <trace/hooks/softlockup.h> |
---|
31 | 31 | |
---|
| 32 | +#if IS_ENABLED(CONFIG_ROCKCHIP_MINIDUMP) |
---|
| 33 | +#include <soc/rockchip/rk_minidump.h> |
---|
| 34 | +#endif |
---|
| 35 | + |
---|
32 | 36 | static DEFINE_MUTEX(watchdog_mutex); |
---|
33 | 37 | |
---|
34 | 38 | #if defined(CONFIG_HARDLOCKUP_DETECTOR) || defined(CONFIG_HAVE_NMI_WATCHDOG) |
---|
.. | .. |
---|
412 | 416 | if (per_cpu(hard_watchdog_warn, next_cpu) == true) |
---|
413 | 417 | return; |
---|
414 | 418 | |
---|
| 419 | + atomic_notifier_call_chain(&hardlock_notifier_list, next_cpu, NULL); |
---|
| 420 | + |
---|
415 | 421 | if (hardlockup_panic) |
---|
416 | 422 | panic("Watchdog detected hard LOCKUP on cpu %u", next_cpu); |
---|
417 | 423 | else |
---|
418 | 424 | WARN(1, "Watchdog detected hard LOCKUP on cpu %u", next_cpu); |
---|
419 | 425 | |
---|
420 | | - atomic_notifier_call_chain(&hardlock_notifier_list, 0, NULL); |
---|
421 | 426 | per_cpu(hard_watchdog_warn, next_cpu) = true; |
---|
422 | 427 | } else { |
---|
423 | 428 | per_cpu(hard_watchdog_warn, next_cpu) = false; |
---|
.. | .. |
---|
541 | 546 | |
---|
542 | 547 | trace_android_vh_watchdog_timer_softlockup(duration, regs, !!softlockup_panic); |
---|
543 | 548 | add_taint(TAINT_SOFTLOCKUP, LOCKDEP_STILL_OK); |
---|
| 549 | +#if IS_ENABLED(CONFIG_ROCKCHIP_MINIDUMP) |
---|
| 550 | + rk_minidump_update_cpu_regs(regs); |
---|
| 551 | +#endif |
---|
544 | 552 | if (softlockup_panic) |
---|
545 | 553 | panic("softlockup: hung tasks"); |
---|
546 | 554 | } |
---|