Commit e4aa0da3 authored by Steven Rostedt's avatar Steven Rostedt Committed by Paul E. McKenney

rcu: Allow rcutorture to be built at low optimization levels

The uses of trace_clock_local() are dead code when CONFIG_RCU_TRACE=n,
but some compilers might nevertheless generate code calling this function.
This commit therefore ensures that trace_clock_local() is invoked only
when CONFIG_RCU_TRACE=y.
Reported-by: default avatarTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent 40393f52
...@@ -208,6 +208,20 @@ MODULE_PARM_DESC(rcutorture_runnable, "Start rcutorture at boot"); ...@@ -208,6 +208,20 @@ MODULE_PARM_DESC(rcutorture_runnable, "Start rcutorture at boot");
#define rcu_can_boost() 0 #define rcu_can_boost() 0
#endif /* #else #if defined(CONFIG_RCU_BOOST) && !defined(CONFIG_HOTPLUG_CPU) */ #endif /* #else #if defined(CONFIG_RCU_BOOST) && !defined(CONFIG_HOTPLUG_CPU) */
#ifdef CONFIG_RCU_TRACE
static u64 notrace rcu_trace_clock_local(void)
{
u64 ts = trace_clock_local();
unsigned long __maybe_unused ts_rem = do_div(ts, NSEC_PER_USEC);
return ts;
}
#else /* #ifdef CONFIG_RCU_TRACE */
static u64 notrace rcu_trace_clock_local(void)
{
return 0ULL;
}
#endif /* #else #ifdef CONFIG_RCU_TRACE */
static unsigned long shutdown_time; /* jiffies to system shutdown. */ static unsigned long shutdown_time; /* jiffies to system shutdown. */
static unsigned long boost_starttime; /* jiffies of next boost test start. */ static unsigned long boost_starttime; /* jiffies of next boost test start. */
DEFINE_MUTEX(boost_mutex); /* protect setting boost_starttime */ DEFINE_MUTEX(boost_mutex); /* protect setting boost_starttime */
...@@ -1051,7 +1065,7 @@ static void rcu_torture_timer(unsigned long unused) ...@@ -1051,7 +1065,7 @@ static void rcu_torture_timer(unsigned long unused)
idx = cur_ops->readlock(); idx = cur_ops->readlock();
completed = cur_ops->completed(); completed = cur_ops->completed();
ts = trace_clock_local(); ts = rcu_trace_clock_local();
p = rcu_dereference_check(rcu_torture_current, p = rcu_dereference_check(rcu_torture_current,
rcu_read_lock_bh_held() || rcu_read_lock_bh_held() ||
rcu_read_lock_sched_held() || rcu_read_lock_sched_held() ||
...@@ -1075,8 +1089,6 @@ static void rcu_torture_timer(unsigned long unused) ...@@ -1075,8 +1089,6 @@ static void rcu_torture_timer(unsigned long unused)
} }
completed_end = cur_ops->completed(); completed_end = cur_ops->completed();
if (pipe_count > 1) { if (pipe_count > 1) {
unsigned long __maybe_unused ts_rem = do_div(ts, NSEC_PER_USEC);
do_trace_rcu_torture_read(cur_ops->name, &p->rtort_rcu, ts, do_trace_rcu_torture_read(cur_ops->name, &p->rtort_rcu, ts,
completed, completed_end); completed, completed_end);
rcutorture_trace_dump(); rcutorture_trace_dump();
...@@ -1122,7 +1134,7 @@ rcu_torture_reader(void *arg) ...@@ -1122,7 +1134,7 @@ rcu_torture_reader(void *arg)
} }
idx = cur_ops->readlock(); idx = cur_ops->readlock();
completed = cur_ops->completed(); completed = cur_ops->completed();
ts = trace_clock_local(); ts = rcu_trace_clock_local();
p = rcu_dereference_check(rcu_torture_current, p = rcu_dereference_check(rcu_torture_current,
rcu_read_lock_bh_held() || rcu_read_lock_bh_held() ||
rcu_read_lock_sched_held() || rcu_read_lock_sched_held() ||
...@@ -1144,9 +1156,6 @@ rcu_torture_reader(void *arg) ...@@ -1144,9 +1156,6 @@ rcu_torture_reader(void *arg)
} }
completed_end = cur_ops->completed(); completed_end = cur_ops->completed();
if (pipe_count > 1) { if (pipe_count > 1) {
unsigned long __maybe_unused ts_rem =
do_div(ts, NSEC_PER_USEC);
do_trace_rcu_torture_read(cur_ops->name, &p->rtort_rcu, do_trace_rcu_torture_read(cur_ops->name, &p->rtort_rcu,
ts, completed, completed_end); ts, completed, completed_end);
rcutorture_trace_dump(); rcutorture_trace_dump();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment