History

rcu: Irq nesting is always 0 on rcu_enter_idle_common

Because tasks don't nest, the ->dyntick_nesting must always be zero upon entry to rcu_idle_enter_common(). Therefore, pass "0" rather than the counter itself.

Frederic Weisbecker committed 14 years ago

Commit facc4e11 parent b6fc6021 file · +2 −3Browse files

Unified · Split

kernel/rcutree.c+2−3
@@ -350,12 +350,11 @@ static int rcu_implicit_offline_qs(struct rcu_data *rdp) · 349 unmodified lines
350 */350 */
351static void rcu_idle_enter_common(struct rcu_dynticks *rdtp, long long oldval)351static void rcu_idle_enter_common(struct rcu_dynticks *rdtp, long long oldval)
352{352{
353 trace_rcu_dyntick("Start", oldval, rdtp->dynticks_nesting);353 trace_rcu_dyntick("Start", oldval, 0);
354 if (!is_idle_task(current)) {354 if (!is_idle_task(current)) {
355 struct task_struct *idle = idle_task(smp_processor_id());355 struct task_struct *idle = idle_task(smp_processor_id());
356 356
357 trace_rcu_dyntick("Error on entry: not idle task",357 trace_rcu_dyntick("Error on entry: not idle task", oldval, 0);
358 oldval, rdtp->dynticks_nesting);
359 ftrace_dump(DUMP_ALL);358 ftrace_dump(DUMP_ALL);
360 WARN_ONCE(1, "Current pid: %d comm: %s / Idle pid: %d comm: %s",359 WARN_ONCE(1, "Current pid: %d comm: %s / Idle pid: %d comm: %s",
361 current->pid, current->comm,360 current->pid, current->comm,