diff options
Diffstat (limited to 'kernel/rcu/tree.c')
| -rw-r--r-- | kernel/rcu/tree.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 51d4c3acf32d..2b13d9679f57 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c | |||
| @@ -2067,8 +2067,8 @@ static bool rcu_gp_init(struct rcu_state *rsp) | |||
| 2067 | } | 2067 | } |
| 2068 | 2068 | ||
| 2069 | /* | 2069 | /* |
| 2070 | * Helper function for wait_event_interruptible_timeout() wakeup | 2070 | * Helper function for swait_event_idle() wakeup at force-quiescent-state |
| 2071 | * at force-quiescent-state time. | 2071 | * time. |
| 2072 | */ | 2072 | */ |
| 2073 | static bool rcu_gp_fqs_check_wake(struct rcu_state *rsp, int *gfp) | 2073 | static bool rcu_gp_fqs_check_wake(struct rcu_state *rsp, int *gfp) |
| 2074 | { | 2074 | { |
| @@ -2206,9 +2206,8 @@ static int __noreturn rcu_gp_kthread(void *arg) | |||
| 2206 | READ_ONCE(rsp->gpnum), | 2206 | READ_ONCE(rsp->gpnum), |
| 2207 | TPS("reqwait")); | 2207 | TPS("reqwait")); |
| 2208 | rsp->gp_state = RCU_GP_WAIT_GPS; | 2208 | rsp->gp_state = RCU_GP_WAIT_GPS; |
| 2209 | swait_event_interruptible(rsp->gp_wq, | 2209 | swait_event_idle(rsp->gp_wq, READ_ONCE(rsp->gp_flags) & |
| 2210 | READ_ONCE(rsp->gp_flags) & | 2210 | RCU_GP_FLAG_INIT); |
| 2211 | RCU_GP_FLAG_INIT); | ||
| 2212 | rsp->gp_state = RCU_GP_DONE_GPS; | 2211 | rsp->gp_state = RCU_GP_DONE_GPS; |
| 2213 | /* Locking provides needed memory barrier. */ | 2212 | /* Locking provides needed memory barrier. */ |
| 2214 | if (rcu_gp_init(rsp)) | 2213 | if (rcu_gp_init(rsp)) |
| @@ -2239,7 +2238,7 @@ static int __noreturn rcu_gp_kthread(void *arg) | |||
| 2239 | READ_ONCE(rsp->gpnum), | 2238 | READ_ONCE(rsp->gpnum), |
| 2240 | TPS("fqswait")); | 2239 | TPS("fqswait")); |
| 2241 | rsp->gp_state = RCU_GP_WAIT_FQS; | 2240 | rsp->gp_state = RCU_GP_WAIT_FQS; |
| 2242 | ret = swait_event_interruptible_timeout(rsp->gp_wq, | 2241 | ret = swait_event_idle_timeout(rsp->gp_wq, |
| 2243 | rcu_gp_fqs_check_wake(rsp, &gf), j); | 2242 | rcu_gp_fqs_check_wake(rsp, &gf), j); |
| 2244 | rsp->gp_state = RCU_GP_DOING_FQS; | 2243 | rsp->gp_state = RCU_GP_DOING_FQS; |
| 2245 | /* Locking provides needed memory barriers. */ | 2244 | /* Locking provides needed memory barriers. */ |
