From 57f50b53ca5c8a5f6503f0ac058e306dbdcecb21 Mon Sep 17 00:00:00 2001 From: "he, bo" Date: Sun, 9 Dec 2018 18:11:33 +0800 Subject: [PATCH] rcu: v2: detect the preempt_rcu hang for triage jing's board Change-Id: I7b413b4fb40b16e5f33737b15689dacaf6d4f33e Tracked-On: Signed-off-by: he, bo --- kernel/rcu/tree.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 0b760c1..23669c1 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -2163,8 +2163,9 @@ static int __noreturn rcu_gp_kthread(void *arg) READ_ONCE(rsp->gp_seq), TPS("reqwait")); rsp->gp_state = RCU_GP_WAIT_GPS; - swait_event_idle_exclusive(rsp->gp_wq, READ_ONCE(rsp->gp_flags) & - RCU_GP_FLAG_INIT); + ret = swait_event_idle_timeout_exclusive(rsp->gp_wq, READ_ONCE(rsp->gp_flags) & + RCU_GP_FLAG_INIT, MAX_SCHEDULE_TIMEOUT); + rsp->gp_state = RCU_GP_DONE_GPS; /* Locking provides needed memory barrier. */ if (rcu_gp_init(rsp)) -- 2.7.4