diff options
Diffstat (limited to 'kernel/rcu/tree.h')
| -rw-r--r-- | kernel/rcu/tree.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h index 119de399eb2f..a69d3dab2ec4 100644 --- a/kernel/rcu/tree.h +++ b/kernel/rcu/tree.h | |||
| @@ -141,12 +141,20 @@ struct rcu_node { | |||
| 141 | /* complete (only for PREEMPT_RCU). */ | 141 | /* complete (only for PREEMPT_RCU). */ |
| 142 | unsigned long qsmaskinit; | 142 | unsigned long qsmaskinit; |
| 143 | /* Per-GP initial value for qsmask & expmask. */ | 143 | /* Per-GP initial value for qsmask & expmask. */ |
| 144 | /* Initialized from ->qsmaskinitnext at the */ | ||
| 145 | /* beginning of each grace period. */ | ||
| 146 | unsigned long qsmaskinitnext; | ||
| 147 | /* Online CPUs for next grace period. */ | ||
| 144 | unsigned long grpmask; /* Mask to apply to parent qsmask. */ | 148 | unsigned long grpmask; /* Mask to apply to parent qsmask. */ |
| 145 | /* Only one bit will be set in this mask. */ | 149 | /* Only one bit will be set in this mask. */ |
| 146 | int grplo; /* lowest-numbered CPU or group here. */ | 150 | int grplo; /* lowest-numbered CPU or group here. */ |
| 147 | int grphi; /* highest-numbered CPU or group here. */ | 151 | int grphi; /* highest-numbered CPU or group here. */ |
| 148 | u8 grpnum; /* CPU/group number for next level up. */ | 152 | u8 grpnum; /* CPU/group number for next level up. */ |
| 149 | u8 level; /* root is at level 0. */ | 153 | u8 level; /* root is at level 0. */ |
| 154 | bool wait_blkd_tasks;/* Necessary to wait for blocked tasks to */ | ||
| 155 | /* exit RCU read-side critical sections */ | ||
| 156 | /* before propagating offline up the */ | ||
| 157 | /* rcu_node tree? */ | ||
| 150 | struct rcu_node *parent; | 158 | struct rcu_node *parent; |
| 151 | struct list_head blkd_tasks; | 159 | struct list_head blkd_tasks; |
| 152 | /* Tasks blocked in RCU read-side critical */ | 160 | /* Tasks blocked in RCU read-side critical */ |
| @@ -448,8 +456,6 @@ struct rcu_state { | |||
| 448 | long qlen; /* Total number of callbacks. */ | 456 | long qlen; /* Total number of callbacks. */ |
| 449 | /* End of fields guarded by orphan_lock. */ | 457 | /* End of fields guarded by orphan_lock. */ |
| 450 | 458 | ||
| 451 | struct mutex onoff_mutex; /* Coordinate hotplug & GPs. */ | ||
| 452 | |||
| 453 | struct mutex barrier_mutex; /* Guards barrier fields. */ | 459 | struct mutex barrier_mutex; /* Guards barrier fields. */ |
| 454 | atomic_t barrier_cpu_count; /* # CPUs waiting on. */ | 460 | atomic_t barrier_cpu_count; /* # CPUs waiting on. */ |
| 455 | struct completion barrier_completion; /* Wake at barrier end. */ | 461 | struct completion barrier_completion; /* Wake at barrier end. */ |
| @@ -559,6 +565,7 @@ static void rcu_prepare_kthreads(int cpu); | |||
| 559 | static void rcu_cleanup_after_idle(void); | 565 | static void rcu_cleanup_after_idle(void); |
| 560 | static void rcu_prepare_for_idle(void); | 566 | static void rcu_prepare_for_idle(void); |
| 561 | static void rcu_idle_count_callbacks_posted(void); | 567 | static void rcu_idle_count_callbacks_posted(void); |
| 568 | static bool rcu_preempt_has_tasks(struct rcu_node *rnp); | ||
| 562 | static void print_cpu_stall_info_begin(void); | 569 | static void print_cpu_stall_info_begin(void); |
| 563 | static void print_cpu_stall_info(struct rcu_state *rsp, int cpu); | 570 | static void print_cpu_stall_info(struct rcu_state *rsp, int cpu); |
| 564 | static void print_cpu_stall_info_end(void); | 571 | static void print_cpu_stall_info_end(void); |
