diff options
Diffstat (limited to 'kernel/rcu/tree.c')
-rw-r--r-- | kernel/rcu/tree.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 71395e91b876..81105141b6a8 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c | |||
@@ -1912,7 +1912,7 @@ rcu_report_unblock_qs_rnp(struct rcu_node *rnp, unsigned long flags) | |||
1912 | struct rcu_node *rnp_p; | 1912 | struct rcu_node *rnp_p; |
1913 | 1913 | ||
1914 | raw_lockdep_assert_held_rcu_node(rnp); | 1914 | raw_lockdep_assert_held_rcu_node(rnp); |
1915 | if (WARN_ON_ONCE(!IS_ENABLED(CONFIG_PREEMPT)) || | 1915 | if (WARN_ON_ONCE(!IS_ENABLED(CONFIG_PREEMPTION)) || |
1916 | WARN_ON_ONCE(rcu_preempt_blocked_readers_cgp(rnp)) || | 1916 | WARN_ON_ONCE(rcu_preempt_blocked_readers_cgp(rnp)) || |
1917 | rnp->qsmask != 0) { | 1917 | rnp->qsmask != 0) { |
1918 | raw_spin_unlock_irqrestore_rcu_node(rnp, flags); | 1918 | raw_spin_unlock_irqrestore_rcu_node(rnp, flags); |
@@ -2266,7 +2266,7 @@ static void force_qs_rnp(int (*f)(struct rcu_data *rdp)) | |||
2266 | mask = 0; | 2266 | mask = 0; |
2267 | raw_spin_lock_irqsave_rcu_node(rnp, flags); | 2267 | raw_spin_lock_irqsave_rcu_node(rnp, flags); |
2268 | if (rnp->qsmask == 0) { | 2268 | if (rnp->qsmask == 0) { |
2269 | if (!IS_ENABLED(CONFIG_PREEMPT) || | 2269 | if (!IS_ENABLED(CONFIG_PREEMPTION) || |
2270 | rcu_preempt_blocked_readers_cgp(rnp)) { | 2270 | rcu_preempt_blocked_readers_cgp(rnp)) { |
2271 | /* | 2271 | /* |
2272 | * No point in scanning bits because they | 2272 | * No point in scanning bits because they |
@@ -2681,7 +2681,7 @@ static int rcu_blocking_is_gp(void) | |||
2681 | { | 2681 | { |
2682 | int ret; | 2682 | int ret; |
2683 | 2683 | ||
2684 | if (IS_ENABLED(CONFIG_PREEMPT)) | 2684 | if (IS_ENABLED(CONFIG_PREEMPTION)) |
2685 | return rcu_scheduler_active == RCU_SCHEDULER_INACTIVE; | 2685 | return rcu_scheduler_active == RCU_SCHEDULER_INACTIVE; |
2686 | might_sleep(); /* Check for RCU read-side critical section. */ | 2686 | might_sleep(); /* Check for RCU read-side critical section. */ |
2687 | preempt_disable(); | 2687 | preempt_disable(); |
@@ -3297,13 +3297,13 @@ static int __init rcu_spawn_gp_kthread(void) | |||
3297 | t = kthread_create(rcu_gp_kthread, NULL, "%s", rcu_state.name); | 3297 | t = kthread_create(rcu_gp_kthread, NULL, "%s", rcu_state.name); |
3298 | if (WARN_ONCE(IS_ERR(t), "%s: Could not start grace-period kthread, OOM is now expected behavior\n", __func__)) | 3298 | if (WARN_ONCE(IS_ERR(t), "%s: Could not start grace-period kthread, OOM is now expected behavior\n", __func__)) |
3299 | return 0; | 3299 | return 0; |
3300 | rnp = rcu_get_root(); | ||
3301 | raw_spin_lock_irqsave_rcu_node(rnp, flags); | ||
3302 | rcu_state.gp_kthread = t; | ||
3303 | if (kthread_prio) { | 3300 | if (kthread_prio) { |
3304 | sp.sched_priority = kthread_prio; | 3301 | sp.sched_priority = kthread_prio; |
3305 | sched_setscheduler_nocheck(t, SCHED_FIFO, &sp); | 3302 | sched_setscheduler_nocheck(t, SCHED_FIFO, &sp); |
3306 | } | 3303 | } |
3304 | rnp = rcu_get_root(); | ||
3305 | raw_spin_lock_irqsave_rcu_node(rnp, flags); | ||
3306 | rcu_state.gp_kthread = t; | ||
3307 | raw_spin_unlock_irqrestore_rcu_node(rnp, flags); | 3307 | raw_spin_unlock_irqrestore_rcu_node(rnp, flags); |
3308 | wake_up_process(t); | 3308 | wake_up_process(t); |
3309 | rcu_spawn_nocb_kthreads(); | 3309 | rcu_spawn_nocb_kthreads(); |