提交 6a9ae70a 编写于 作者: C Chunyan Zhang 提交者: Yang Yingliang

tick/common: Touch watchdog in tick_unfreeze() on all CPUs

stable inclusion
from linux-4.19.158
commit 880d94c7811ebe89ab7edc7e8839ccdf0eedcd91

--------------------------------

commit 5167c506 upstream.

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: NChunyan Zhang <chunyan.zhang@unisoc.com>
Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20200110083902.27276-1-chunyan.zhang@unisoc.comSigned-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
Signed-off-by: NCheng Jian <cj.chengjian@huawei.com>
上级 3a1670da
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <linux/err.h> #include <linux/err.h>
#include <linux/hrtimer.h> #include <linux/hrtimer.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/nmi.h>
#include <linux/percpu.h> #include <linux/percpu.h>
#include <linux/profile.h> #include <linux/profile.h>
#include <linux/sched.h> #include <linux/sched.h>
...@@ -520,6 +521,7 @@ void tick_unfreeze(void) ...@@ -520,6 +521,7 @@ void tick_unfreeze(void)
trace_suspend_resume(TPS("timekeeping_freeze"), trace_suspend_resume(TPS("timekeeping_freeze"),
smp_processor_id(), false); smp_processor_id(), false);
} else { } else {
touch_softlockup_watchdog();
tick_resume_local(); tick_resume_local();
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册