diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2016-03-21 22:46:04 -0400 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2016-03-31 16:29:08 -0400 |
commit | 274529ba9bda86c91c2c06da3a641aaf617dd30f (patch) | |
tree | 3bf398577e821ee17bec1457fc0cd55d7d4d7403 /kernel/rcu | |
parent | f55532a0c0b8bb6148f4e07853b876ef73bc69ca (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.c | 17 | ||||
-rw-r--r-- | kernel/rcu/tree.c | 4 |
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 | ||
1085 | static 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! */ |