mirror of https://github.com/torvalds/linux.git
PM: dpm_watchdog: add module param to backtrace all CPUs
Add dpm_watchdog_all_cpu_backtrace module parameter which controls all CPU backtrace dump before the DPM watchdog panics the system. This is expected to help understand what might have caused device timeout. Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org> Reviewed-by: Tomasz Figa <tfiga@chromium.org> Reviewed-by: Dhruva Gole <d-gole@ti.com> Link: https://patch.msgid.link/20251007063551.3147937-1-senozhatsky@chromium.org [ rjw: Subject and changelog edits ] Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
5a151c2328
commit
a67818f745
|
|
@ -34,6 +34,7 @@
|
|||
#include <linux/cpufreq.h>
|
||||
#include <linux/devfreq.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/nmi.h>
|
||||
|
||||
#include "../base.h"
|
||||
#include "power.h"
|
||||
|
|
@ -515,6 +516,11 @@ struct dpm_watchdog {
|
|||
#define DECLARE_DPM_WATCHDOG_ON_STACK(wd) \
|
||||
struct dpm_watchdog wd
|
||||
|
||||
static bool __read_mostly dpm_watchdog_all_cpu_backtrace;
|
||||
module_param(dpm_watchdog_all_cpu_backtrace, bool, 0644);
|
||||
MODULE_PARM_DESC(dpm_watchdog_all_cpu_backtrace,
|
||||
"Backtrace all CPUs on DPM watchdog timeout");
|
||||
|
||||
/**
|
||||
* dpm_watchdog_handler - Driver suspend / resume watchdog handler.
|
||||
* @t: The timer that PM watchdog depends on.
|
||||
|
|
@ -530,8 +536,12 @@ static void dpm_watchdog_handler(struct timer_list *t)
|
|||
unsigned int time_left;
|
||||
|
||||
if (wd->fatal) {
|
||||
unsigned int this_cpu = smp_processor_id();
|
||||
|
||||
dev_emerg(wd->dev, "**** DPM device timeout ****\n");
|
||||
show_stack(wd->tsk, NULL, KERN_EMERG);
|
||||
if (dpm_watchdog_all_cpu_backtrace)
|
||||
trigger_allbutcpu_cpu_backtrace(this_cpu);
|
||||
panic("%s %s: unrecoverable failure\n",
|
||||
dev_driver_string(wd->dev), dev_name(wd->dev));
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue