Skip to content

Commit 5167c50

Browse files
lyrazhangKAGA-KOKO
authored andcommitted
tick/common: Touch watchdog in tick_unfreeze() on all CPUs
Suspend to IDLE invokes tick_unfreeze() on resume. tick_unfreeze() on the first resuming CPU resumes timekeeping, which also has the side effect of resetting the softlockup watchdog on this CPU. But on the secondary CPUs the watchdog is not reset in the resume / unfreeze() path, which can result in false softlockup warnings on those CPUs depending on the time spent in suspend. Prevent this by clearing the softlock watchdog in the unfreeze path also on the secondary resuming CPUs. [ tglx: Massaged changelog ] Signed-off-by: Chunyan Zhang <chunyan.zhang@unisoc.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/r/20200110083902.27276-1-chunyan.zhang@unisoc.com
1 parent 6b6d188 commit 5167c50

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

kernel/time/tick-common.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include <linux/err.h>
1212
#include <linux/hrtimer.h>
1313
#include <linux/interrupt.h>
14+
#include <linux/nmi.h>
1415
#include <linux/percpu.h>
1516
#include <linux/profile.h>
1617
#include <linux/sched.h>
@@ -558,6 +559,7 @@ void tick_unfreeze(void)
558559
trace_suspend_resume(TPS("timekeeping_freeze"),
559560
smp_processor_id(), false);
560561
} else {
562+
touch_softlockup_watchdog();
561563
tick_resume_local();
562564
}
563565

0 commit comments

Comments
 (0)