aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcu
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2016-03-21 22:46:04 -0400
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2016-03-31 16:29:08 -0400
commit274529ba9bda86c91c2c06da3a641aaf617dd30f (patch)
tree3bf398577e821ee17bec1457fc0cd55d7d4d7403 /kernel/rcu
parentf55532a0c0b8bb6148f4e07853b876ef73bc69ca (diff)
rcu: Consolidate dumping of ftrace buffer
This commit consolidates a couple definitions and several calls for single-shot ftrace-buffer dumping. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/rcu')
-rw-r--r--kernel/rcu/rcutorture.c17
-rw-r--r--kernel/rcu/tree.c4
2 files changed, 5 insertions, 16 deletions
diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
index 250ea67c1615..463867c43221 100644
--- a/kernel/rcu/rcutorture.c
+++ b/kernel/rcu/rcutorture.c
@@ -1082,17 +1082,6 @@ rcu_torture_fakewriter(void *arg)
1082 return 0; 1082 return 0;
1083} 1083}
1084 1084
1085static void rcutorture_trace_dump(void)
1086{
1087 static atomic_t beenhere = ATOMIC_INIT(0);
1088
1089 if (atomic_read(&beenhere))
1090 return;
1091 if (atomic_xchg(&beenhere, 1) != 0)
1092 return;
1093 ftrace_dump(DUMP_ALL);
1094}
1095
1096/* 1085/*
1097 * RCU torture reader from timer handler. Dereferences rcu_torture_current, 1086 * RCU torture reader from timer handler. Dereferences rcu_torture_current,
1098 * incrementing the corresponding element of the pipeline array. The 1087 * incrementing the corresponding element of the pipeline array. The
@@ -1142,7 +1131,7 @@ static void rcu_torture_timer(unsigned long unused)
1142 if (pipe_count > 1) { 1131 if (pipe_count > 1) {
1143 do_trace_rcu_torture_read(cur_ops->name, &p->rtort_rcu, ts, 1132 do_trace_rcu_torture_read(cur_ops->name, &p->rtort_rcu, ts,
1144 started, completed); 1133 started, completed);
1145 rcutorture_trace_dump(); 1134 rcu_ftrace_dump(DUMP_ALL);
1146 } 1135 }
1147 __this_cpu_inc(rcu_torture_count[pipe_count]); 1136 __this_cpu_inc(rcu_torture_count[pipe_count]);
1148 completed = completed - started; 1137 completed = completed - started;
@@ -1215,7 +1204,7 @@ rcu_torture_reader(void *arg)
1215 if (pipe_count > 1) { 1204 if (pipe_count > 1) {
1216 do_trace_rcu_torture_read(cur_ops->name, &p->rtort_rcu, 1205 do_trace_rcu_torture_read(cur_ops->name, &p->rtort_rcu,
1217 ts, started, completed); 1206 ts, started, completed);
1218 rcutorture_trace_dump(); 1207 rcu_ftrace_dump(DUMP_ALL);
1219 } 1208 }
1220 __this_cpu_inc(rcu_torture_count[pipe_count]); 1209 __this_cpu_inc(rcu_torture_count[pipe_count]);
1221 completed = completed - started; 1210 completed = completed - started;
@@ -1333,7 +1322,7 @@ rcu_torture_stats_print(void)
1333 rcu_torture_writer_state, 1322 rcu_torture_writer_state,
1334 gpnum, completed, flags); 1323 gpnum, completed, flags);
1335 show_rcu_gp_kthreads(); 1324 show_rcu_gp_kthreads();
1336 rcutorture_trace_dump(); 1325 rcu_ftrace_dump(DUMP_ALL);
1337 } 1326 }
1338 rtcv_snap = rcu_torture_current_version; 1327 rtcv_snap = rcu_torture_current_version;
1339} 1328}
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index 9a535a86e732..531a328076bd 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -637,7 +637,7 @@ static void rcu_eqs_enter_common(long long oldval, bool user)
637 idle_task(smp_processor_id()); 637 idle_task(smp_processor_id());
638 638
639 trace_rcu_dyntick(TPS("Error on entry: not idle task"), oldval, 0); 639 trace_rcu_dyntick(TPS("Error on entry: not idle task"), oldval, 0);
640 ftrace_dump(DUMP_ORIG); 640 rcu_ftrace_dump(DUMP_ORIG);
641 WARN_ONCE(1, "Current pid: %d comm: %s / Idle pid: %d comm: %s", 641 WARN_ONCE(1, "Current pid: %d comm: %s / Idle pid: %d comm: %s",
642 current->pid, current->comm, 642 current->pid, current->comm,
643 idle->pid, idle->comm); /* must be idle task! */ 643 idle->pid, idle->comm); /* must be idle task! */
@@ -799,7 +799,7 @@ static void rcu_eqs_exit_common(long long oldval, int user)
799 799
800 trace_rcu_dyntick(TPS("Error on exit: not idle task"), 800 trace_rcu_dyntick(TPS("Error on exit: not idle task"),
801 oldval, rdtp->dynticks_nesting); 801 oldval, rdtp->dynticks_nesting);
802 ftrace_dump(DUMP_ORIG); 802 rcu_ftrace_dump(DUMP_ORIG);
803 WARN_ONCE(1, "Current pid: %d comm: %s / Idle pid: %d comm: %s", 803 WARN_ONCE(1, "Current pid: %d comm: %s / Idle pid: %d comm: %s",
804 current->pid, current->comm, 804 current->pid, current->comm,
805 idle->pid, idle->comm); /* must be idle task! */ 805 idle->pid, idle->comm); /* must be idle task! */