Commit b1f77b0581b8fd837acb4a973f7d5496cae6efee
1 parent
255d11bc91
Exists in
master
and in
39 other branches
kmemtrace, rcu: fix linux/rcutree.h and linux/rcuclassic.h dependencies
Impact: build fix for all non-x86 architectures We want to remove percpu.h from rcuclassic.h/rcutree.h (for upcoming kmemtrace changes) but that would break the DECLARE_PER_CPU based declarations in these files. Move the quiescent counter management functions to their respective RCU implementation .c files - they were slightly above the inlining limit anyway. Cc: Pekka Enberg <penberg@cs.helsinki.fi> Cc: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro> Cc: paulmck@linux.vnet.ibm.com LKML-Reference: <1237898630.25315.83.camel@penberg-laptop> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Showing 4 changed files with 49 additions and 43 deletions Side-by-side Diff
include/linux/rcuclassic.h
... | ... | @@ -108,25 +108,14 @@ |
108 | 108 | struct rcu_head barrier; |
109 | 109 | }; |
110 | 110 | |
111 | -DECLARE_PER_CPU(struct rcu_data, rcu_data); | |
112 | -DECLARE_PER_CPU(struct rcu_data, rcu_bh_data); | |
113 | - | |
114 | 111 | /* |
115 | 112 | * Increment the quiescent state counter. |
116 | 113 | * The counter is a bit degenerated: We do not need to know |
117 | 114 | * how many quiescent states passed, just if there was at least |
118 | 115 | * one since the start of the grace period. Thus just a flag. |
119 | 116 | */ |
120 | -static inline void rcu_qsctr_inc(int cpu) | |
121 | -{ | |
122 | - struct rcu_data *rdp = &per_cpu(rcu_data, cpu); | |
123 | - rdp->passed_quiesc = 1; | |
124 | -} | |
125 | -static inline void rcu_bh_qsctr_inc(int cpu) | |
126 | -{ | |
127 | - struct rcu_data *rdp = &per_cpu(rcu_bh_data, cpu); | |
128 | - rdp->passed_quiesc = 1; | |
129 | -} | |
117 | +extern void rcu_qsctr_inc(int cpu); | |
118 | +extern void rcu_bh_qsctr_inc(int cpu); | |
130 | 119 | |
131 | 120 | extern int rcu_pending(int cpu); |
132 | 121 | extern int rcu_needs_cpu(int cpu); |
include/linux/rcutree.h
... | ... | @@ -236,30 +236,8 @@ |
236 | 236 | #endif /* #ifdef CONFIG_NO_HZ */ |
237 | 237 | }; |
238 | 238 | |
239 | -extern struct rcu_state rcu_state; | |
240 | -DECLARE_PER_CPU(struct rcu_data, rcu_data); | |
241 | - | |
242 | -extern struct rcu_state rcu_bh_state; | |
243 | -DECLARE_PER_CPU(struct rcu_data, rcu_bh_data); | |
244 | - | |
245 | -/* | |
246 | - * Increment the quiescent state counter. | |
247 | - * The counter is a bit degenerated: We do not need to know | |
248 | - * how many quiescent states passed, just if there was at least | |
249 | - * one since the start of the grace period. Thus just a flag. | |
250 | - */ | |
251 | -static inline void rcu_qsctr_inc(int cpu) | |
252 | -{ | |
253 | - struct rcu_data *rdp = &per_cpu(rcu_data, cpu); | |
254 | - rdp->passed_quiesc = 1; | |
255 | - rdp->passed_quiesc_completed = rdp->completed; | |
256 | -} | |
257 | -static inline void rcu_bh_qsctr_inc(int cpu) | |
258 | -{ | |
259 | - struct rcu_data *rdp = &per_cpu(rcu_bh_data, cpu); | |
260 | - rdp->passed_quiesc = 1; | |
261 | - rdp->passed_quiesc_completed = rdp->completed; | |
262 | -} | |
239 | +extern void rcu_qsctr_inc(int cpu); | |
240 | +extern void rcu_bh_qsctr_inc(int cpu); | |
263 | 241 | |
264 | 242 | extern int rcu_pending(int cpu); |
265 | 243 | extern int rcu_needs_cpu(int cpu); |
kernel/rcuclassic.c
... | ... | @@ -65,6 +65,7 @@ |
65 | 65 | .lock = __SPIN_LOCK_UNLOCKED(&rcu_ctrlblk.lock), |
66 | 66 | .cpumask = CPU_BITS_NONE, |
67 | 67 | }; |
68 | + | |
68 | 69 | static struct rcu_ctrlblk rcu_bh_ctrlblk = { |
69 | 70 | .cur = -300, |
70 | 71 | .completed = -300, |
... | ... | @@ -73,8 +74,26 @@ |
73 | 74 | .cpumask = CPU_BITS_NONE, |
74 | 75 | }; |
75 | 76 | |
76 | -DEFINE_PER_CPU(struct rcu_data, rcu_data) = { 0L }; | |
77 | -DEFINE_PER_CPU(struct rcu_data, rcu_bh_data) = { 0L }; | |
77 | +static DEFINE_PER_CPU(struct rcu_data, rcu_data); | |
78 | +static DEFINE_PER_CPU(struct rcu_data, rcu_bh_data); | |
79 | + | |
80 | +/* | |
81 | + * Increment the quiescent state counter. | |
82 | + * The counter is a bit degenerated: We do not need to know | |
83 | + * how many quiescent states passed, just if there was at least | |
84 | + * one since the start of the grace period. Thus just a flag. | |
85 | + */ | |
86 | +void rcu_qsctr_inc(int cpu) | |
87 | +{ | |
88 | + struct rcu_data *rdp = &per_cpu(rcu_data, cpu); | |
89 | + rdp->passed_quiesc = 1; | |
90 | +} | |
91 | + | |
92 | +void rcu_bh_qsctr_inc(int cpu) | |
93 | +{ | |
94 | + struct rcu_data *rdp = &per_cpu(rcu_bh_data, cpu); | |
95 | + rdp->passed_quiesc = 1; | |
96 | +} | |
78 | 97 | |
79 | 98 | static int blimit = 10; |
80 | 99 | static int qhimark = 10000; |
kernel/rcutree.c
... | ... | @@ -72,11 +72,31 @@ |
72 | 72 | .n_force_qs_ngp = 0, \ |
73 | 73 | } |
74 | 74 | |
75 | -struct rcu_state rcu_state = RCU_STATE_INITIALIZER(rcu_state); | |
76 | -DEFINE_PER_CPU(struct rcu_data, rcu_data); | |
75 | +static struct rcu_state rcu_state = RCU_STATE_INITIALIZER(rcu_state); | |
76 | +static DEFINE_PER_CPU(struct rcu_data, rcu_data); | |
77 | 77 | |
78 | -struct rcu_state rcu_bh_state = RCU_STATE_INITIALIZER(rcu_bh_state); | |
79 | -DEFINE_PER_CPU(struct rcu_data, rcu_bh_data); | |
78 | +static struct rcu_state rcu_bh_state = RCU_STATE_INITIALIZER(rcu_bh_state); | |
79 | +static DEFINE_PER_CPU(struct rcu_data, rcu_bh_data); | |
80 | + | |
81 | +/* | |
82 | + * Increment the quiescent state counter. | |
83 | + * The counter is a bit degenerated: We do not need to know | |
84 | + * how many quiescent states passed, just if there was at least | |
85 | + * one since the start of the grace period. Thus just a flag. | |
86 | + */ | |
87 | +void rcu_qsctr_inc(int cpu) | |
88 | +{ | |
89 | + struct rcu_data *rdp = &per_cpu(rcu_data, cpu); | |
90 | + rdp->passed_quiesc = 1; | |
91 | + rdp->passed_quiesc_completed = rdp->completed; | |
92 | +} | |
93 | + | |
94 | +void rcu_bh_qsctr_inc(int cpu) | |
95 | +{ | |
96 | + struct rcu_data *rdp = &per_cpu(rcu_bh_data, cpu); | |
97 | + rdp->passed_quiesc = 1; | |
98 | + rdp->passed_quiesc_completed = rdp->completed; | |
99 | +} | |
80 | 100 | |
81 | 101 | #ifdef CONFIG_NO_HZ |
82 | 102 | DEFINE_PER_CPU(struct rcu_dynticks, rcu_dynticks) = { |