rcu: Fix tracepoint tracking RCU CPU kthread utilization
In the call to trace_rcu_utilization() at the start of the loop in rcu_cpu_kthread(), "rcu_wait" is incorrect, plus this trace event needs to be hoisted above the loop to balance with either the "rcu_wait" or "rcu_yield", depending on how the loop exits. This commit therefore makes these changes. Signed-off-by: Lai Jiangshan <jiangshanlai@gmail.com> Signed-off-by: Lai Jiangshan <laijs@linux.alibaba.com> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
This commit is contained in:
parent
822175e729
commit
2488a5e695
|
@ -2474,8 +2474,8 @@ static void rcu_cpu_kthread(unsigned int cpu)
|
||||||
char work, *workp = this_cpu_ptr(&rcu_data.rcu_cpu_has_work);
|
char work, *workp = this_cpu_ptr(&rcu_data.rcu_cpu_has_work);
|
||||||
int spincnt;
|
int spincnt;
|
||||||
|
|
||||||
|
trace_rcu_utilization(TPS("Start CPU kthread@rcu_run"));
|
||||||
for (spincnt = 0; spincnt < 10; spincnt++) {
|
for (spincnt = 0; spincnt < 10; spincnt++) {
|
||||||
trace_rcu_utilization(TPS("Start CPU kthread@rcu_wait"));
|
|
||||||
local_bh_disable();
|
local_bh_disable();
|
||||||
*statusp = RCU_KTHREAD_RUNNING;
|
*statusp = RCU_KTHREAD_RUNNING;
|
||||||
local_irq_disable();
|
local_irq_disable();
|
||||||
|
|
Loading…
Reference in New Issue