diff options
Diffstat (limited to 'kernel/rcu/tree.h')
-rw-r--r-- | kernel/rcu/tree.h | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h index 9af0f31d6847..8e1f285f0a70 100644 --- a/kernel/rcu/tree.h +++ b/kernel/rcu/tree.h | |||
@@ -219,8 +219,6 @@ struct rcu_data { | |||
219 | /* qlen at last check for QS forcing */ | 219 | /* qlen at last check for QS forcing */ |
220 | unsigned long n_cbs_invoked; /* count of RCU cbs invoked. */ | 220 | unsigned long n_cbs_invoked; /* count of RCU cbs invoked. */ |
221 | unsigned long n_nocbs_invoked; /* count of no-CBs RCU cbs invoked. */ | 221 | unsigned long n_nocbs_invoked; /* count of no-CBs RCU cbs invoked. */ |
222 | unsigned long n_cbs_orphaned; /* RCU cbs orphaned by dying CPU */ | ||
223 | unsigned long n_cbs_adopted; /* RCU cbs adopted from dying CPU */ | ||
224 | unsigned long n_force_qs_snap; | 222 | unsigned long n_force_qs_snap; |
225 | /* did other CPU force QS recently? */ | 223 | /* did other CPU force QS recently? */ |
226 | long blimit; /* Upper limit on a processed batch */ | 224 | long blimit; /* Upper limit on a processed batch */ |
@@ -268,7 +266,9 @@ struct rcu_data { | |||
268 | struct rcu_head **nocb_follower_tail; | 266 | struct rcu_head **nocb_follower_tail; |
269 | struct swait_queue_head nocb_wq; /* For nocb kthreads to sleep on. */ | 267 | struct swait_queue_head nocb_wq; /* For nocb kthreads to sleep on. */ |
270 | struct task_struct *nocb_kthread; | 268 | struct task_struct *nocb_kthread; |
269 | raw_spinlock_t nocb_lock; /* Guard following pair of fields. */ | ||
271 | int nocb_defer_wakeup; /* Defer wakeup of nocb_kthread. */ | 270 | int nocb_defer_wakeup; /* Defer wakeup of nocb_kthread. */ |
271 | struct timer_list nocb_timer; /* Enforce finite deferral. */ | ||
272 | 272 | ||
273 | /* The following fields are used by the leader, hence own cacheline. */ | 273 | /* The following fields are used by the leader, hence own cacheline. */ |
274 | struct rcu_head *nocb_gp_head ____cacheline_internodealigned_in_smp; | 274 | struct rcu_head *nocb_gp_head ____cacheline_internodealigned_in_smp; |
@@ -350,15 +350,6 @@ struct rcu_state { | |||
350 | 350 | ||
351 | /* End of fields guarded by root rcu_node's lock. */ | 351 | /* End of fields guarded by root rcu_node's lock. */ |
352 | 352 | ||
353 | raw_spinlock_t orphan_lock ____cacheline_internodealigned_in_smp; | ||
354 | /* Protect following fields. */ | ||
355 | struct rcu_cblist orphan_pend; /* Orphaned callbacks that */ | ||
356 | /* need a grace period. */ | ||
357 | struct rcu_cblist orphan_done; /* Orphaned callbacks that */ | ||
358 | /* are ready to invoke. */ | ||
359 | /* (Contains counts.) */ | ||
360 | /* End of fields guarded by orphan_lock. */ | ||
361 | |||
362 | struct mutex barrier_mutex; /* Guards barrier fields. */ | 353 | struct mutex barrier_mutex; /* Guards barrier fields. */ |
363 | atomic_t barrier_cpu_count; /* # CPUs waiting on. */ | 354 | atomic_t barrier_cpu_count; /* # CPUs waiting on. */ |
364 | struct completion barrier_completion; /* Wake at barrier end. */ | 355 | struct completion barrier_completion; /* Wake at barrier end. */ |
@@ -495,7 +486,7 @@ static void rcu_nocb_gp_cleanup(struct swait_queue_head *sq); | |||
495 | static void rcu_init_one_nocb(struct rcu_node *rnp); | 486 | static void rcu_init_one_nocb(struct rcu_node *rnp); |
496 | static bool __call_rcu_nocb(struct rcu_data *rdp, struct rcu_head *rhp, | 487 | static bool __call_rcu_nocb(struct rcu_data *rdp, struct rcu_head *rhp, |
497 | bool lazy, unsigned long flags); | 488 | bool lazy, unsigned long flags); |
498 | static bool rcu_nocb_adopt_orphan_cbs(struct rcu_state *rsp, | 489 | static bool rcu_nocb_adopt_orphan_cbs(struct rcu_data *my_rdp, |
499 | struct rcu_data *rdp, | 490 | struct rcu_data *rdp, |
500 | unsigned long flags); | 491 | unsigned long flags); |
501 | static int rcu_nocb_need_deferred_wakeup(struct rcu_data *rdp); | 492 | static int rcu_nocb_need_deferred_wakeup(struct rcu_data *rdp); |