linux-yocto/kernel/trace
Joel Fernandes (Google) da5b3ebb45 tracing: irqsoff: Account for additional preempt_disable
Recently we tried to make the preemptirqsoff tracer to use irqsoff
tracepoint probes. However this causes issues as reported by Masami:

[2.271078] Testing tracer preemptirqsoff: .. no entries found ..FAILED!
[2.381015] WARNING: CPU: 0 PID: 1 at /home/mhiramat/ksrc/linux/kernel/
trace/trace.c:1512 run_tracer_selftest+0xf3/0x154

This is due to the tracepoint code increasing the preempt nesting count
by calling an additional preempt_disable before calling into the
preemptoff tracer which messes up the preempt_count() check in
tracer_hardirqs_off.

To fix this, make the irqsoff tracer probes balance the additional outer
preempt_disable with a preempt_enable_notrace.

The other way to fix this is to just use SRCU for all tracepoints.
However we can't do that because we can't use NMIs from RCU context.

Link: http://lkml.kernel.org/r/20180806034049.67949-1-joel@joelfernandes.org

Fixes: c3bc8fd637 ("tracing: Centralize preemptirq tracepoints and unify their usage")
Fixes: e6753f23d9 ("tracepoint: Make rcuidle tracepoint callers use SRCU")
Reported-by: Masami Hiramatsu <mhiramat@kernel.org>
Tested-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
2018-08-06 21:55:24 -04:00
..
blktrace.c
bpf_trace.c bpf: guard bpf_get_current_cgroup_id() with CONFIG_CGROUPS 2018-06-04 21:52:26 +02:00
ftrace.c ftrace: Use true and false for boolean values in ops_references_rec() 2018-08-01 21:15:31 -04:00
Kconfig tracing: Centralize preemptirq tracepoints and unify their usage 2018-07-31 11:32:27 -04:00
Makefile tracing: Centralize preemptirq tracepoints and unify their usage 2018-07-31 11:32:27 -04:00
power-traces.c
preemptirq_delay_test.c tracing: preemptirq_delay_run() can be static 2018-07-27 17:58:34 -04:00
ring_buffer_benchmark.c
ring_buffer.c ring-buffer: Make ring_buffer_record_is_set_on() return bool 2018-08-01 21:09:50 -04:00
rpm-traces.c
trace_benchmark.c rcu: Rename cond_resched_rcu_qs() to cond_resched_tasks_rcu_qs() 2018-05-15 10:27:29 -07:00
trace_benchmark.h
trace_branch.c
trace_clock.c tracing: Hide global trace clock from lockdep 2018-04-06 08:56:52 -04:00
trace_entries.h tracing: Add trigger file for trace_markers tracefs/ftrace/print 2018-05-29 08:28:53 -04:00
trace_event_perf.c perf/core: Fix perf_uprobe_init() 2018-04-10 07:33:10 +02:00
trace_events_filter_test.h
trace_events_filter.c tracing: Make create_filter() code match the comments 2018-07-03 18:14:40 -04:00
trace_events_hist.c tracing: Avoid string overflow 2018-07-03 18:14:39 -04:00
trace_events_trigger.c tracing: Make unregister_trigger() static 2018-07-26 10:50:18 -04:00
trace_events.c trace: Use rcu_dereference_raw for hooks from trace-event subsystem 2018-08-03 09:38:39 -04:00
trace_export.c tracing: Add trigger file for trace_markers tracefs/ftrace/print 2018-05-29 08:28:53 -04:00
trace_functions_graph.c tracing: Fix missing return symbol in function_graph output 2018-07-03 18:47:11 -04:00
trace_functions.c tracing: Update stack trace skipping for ORC unwinder 2018-01-23 15:57:00 -05:00
trace_hwlat.c tracing: Do a WARN_ON() if start_thread() in hwlat is called when thread exists 2018-08-01 16:06:02 -04:00
trace_irqsoff.c tracing: irqsoff: Account for additional preempt_disable 2018-08-06 21:55:24 -04:00
trace_kdb.c
trace_kprobe_selftest.c selftest/ftrace: Move kprobe selftest function to separate compile unit 2018-07-30 18:41:04 -04:00
trace_kprobe_selftest.h selftest/ftrace: Move kprobe selftest function to separate compile unit 2018-07-30 18:41:04 -04:00
trace_kprobe.c tracing/kprobes: Fix within_notrace_func() to check only notrace functions 2018-08-02 12:34:41 -04:00
trace_mmiotrace.c
trace_nop.c
trace_output.c tracing: Reorder display of TGID to be after PID 2018-07-12 19:56:25 -04:00
trace_output.h
trace_preemptirq.c tracing: Centralize preemptirq tracepoints and unify their usage 2018-07-31 11:32:27 -04:00
trace_printk.c treewide: Align function definition open/close braces 2018-03-26 11:13:09 +02:00
trace_probe.c tracing: probeevent: Fix to support minus offset from symbol 2018-03-23 12:02:37 -04:00
trace_probe.h Merge branch 'perf/urgent' into perf/core 2018-03-29 16:03:48 +02:00
trace_sched_switch.c
trace_sched_wakeup.c
trace_selftest_dynamic.c ftrace: Mark function tracer test functions noinline/noclone 2018-01-23 15:57:29 -05:00
trace_selftest.c
trace_seq.c
trace_stack.c tracing: Fix the file mode of stack tracer 2018-05-03 11:58:05 -04:00
trace_stat.c
trace_stat.h
trace_syscalls.c
trace_uprobe.c bpf: introduce bpf subcommand BPF_TASK_FD_QUERY 2018-05-24 18:18:19 -07:00
trace.c tracing: Make tracer_tracing_is_on() return bool 2018-08-01 16:08:57 -04:00
trace.h tracing: Make tracer_tracing_is_on() return bool 2018-08-01 16:08:57 -04:00
tracing_map.c treewide: Use array_size() in vmalloc() 2018-06-12 16:19:22 -07:00
tracing_map.h tracing: Add per-element variable support to tracing_map 2018-03-10 16:05:53 -05:00