Srivatsa S. Bhat
d39ad278a3
trace, ring-buffer: Fix CPU hotplug callback registration
...
Subsystems that want to register CPU hotplug callbacks, as well as perform
initialization for the CPUs that are already online, often do it as shown
below:
get_online_cpus();
for_each_online_cpu(cpu)
init_cpu(cpu);
register_cpu_notifier(&foobar_cpu_notifier);
put_online_cpus();
This is wrong, since it is prone to ABBA deadlocks involving the
cpu_add_remove_lock and the cpu_hotplug.lock (when running concurrently
with CPU hotplug operations).
Instead, the correct and race-free way of performing the callback
registration is:
cpu_notifier_register_begin();
for_each_online_cpu(cpu)
init_cpu(cpu);
/* Note the use of the double underscored version of the API */
__register_cpu_notifier(&foobar_cpu_notifier);
cpu_notifier_register_done();
Fix the tracing ring-buffer code by using this latter form of callback
registration.
Cc: Frederic Weisbecker <[email protected] >
Cc: Ingo Molnar <[email protected] >
Acked-by: Steven Rostedt <[email protected] >
Signed-off-by: Srivatsa S. Bhat <[email protected] >
Signed-off-by: Rafael J. Wysocki <[email protected] >
2014-03-20 13:43:48 +01:00
..
blktrace.c
block: Abstract out bvec iterator
2013-11-23 22:33:47 -08:00
ftrace.c
This pull request has a new feature to ftrace, namely the trace event
2014-01-22 16:35:21 -08:00
Kconfig
ring-buffer: Select IRQ_WORK
2013-05-03 19:24:17 -04:00
Makefile
tracing: Add basic event trigger framework
2013-12-20 18:40:22 -05:00
power-traces.c
ring_buffer.c
trace, ring-buffer: Fix CPU hotplug callback registration
2014-03-20 13:43:48 +01:00
ring_buffer_benchmark.c
rpm-traces.c
trace.c
tracing: Check if tracing is enabled in trace_puts()
2014-01-23 12:27:59 -05:00
trace.h
tracing: Fix rcu handling of event_trigger_data filter field
2014-01-02 16:17:22 -05:00
trace_branch.c
tracing: Update event filters for multibuffer
2013-11-05 16:50:20 -05:00
trace_clock.c
tracing: Add "uptime" trace clock that uses jiffies
2013-03-15 00:36:09 -04:00
trace_entries.h
tracing: Add trace_puts() for even faster trace_printk() tracing
2013-03-15 00:35:55 -04:00
trace_event_perf.c
perf/trace: Properly use u64 to hold event_id
2013-11-19 16:57:44 +01:00
trace_events.c
tracing: Do not add event files for modules that fail tracepoints
2014-03-03 21:11:05 -05:00
trace_events_filter.c
tracing: Add and use generic set_trigger_filter() implementation
2013-12-21 22:02:17 -05:00
trace_events_filter_test.h
trace_events_trigger.c
tracing: Show available event triggers when no trigger is set
2014-01-09 21:20:32 -05:00
trace_export.c
tracing: Update event filters for multibuffer
2013-11-05 16:50:20 -05:00
trace_functions.c
tracing: Add ref_data to function and fgraph tracer structs
2013-07-18 21:31:31 -04:00
trace_functions_graph.c
tracing: Do not use signed enums with unsigned long long in fgragh output
2013-11-06 15:26:56 -05:00
trace_irqsoff.c
tracing: Use flag buffer_disabled for irqsoff tracer
2013-07-01 20:34:28 -04:00
trace_kdb.c
tracing: Consolidate max_tr into main trace_array structure
2013-03-15 00:35:40 -04:00
trace_kprobe.c
tracing: Consolidate event trigger code
2014-01-09 21:20:07 -05:00
trace_mmiotrace.c
tracing: Update event filters for multibuffer
2013-11-05 16:50:20 -05:00
trace_nop.c
trace_output.c
ftrace, sched: Add TRACE_FLAG_PREEMPT_RESCHED
2013-11-11 12:43:39 +01:00
trace_output.h
tracing: Rename trace_event_mutex to trace_event_sem
2013-03-15 13:22:10 -04:00
trace_printk.c
tracing: Add __tracepoint_string() to export string pointers
2013-07-26 13:39:44 -04:00
trace_probe.c
tracing/uprobes: Add @+file_offset fetch method
2014-01-02 20:57:05 -05:00
trace_probe.h
tracing/probes: Fix build break on !CONFIG_KPROBE_EVENT
2014-01-03 15:27:18 -05:00
trace_sched_switch.c
tracing: Update event filters for multibuffer
2013-11-05 16:50:20 -05:00
trace_sched_wakeup.c
sched/deadline: Add SCHED_DEADLINE inheritance logic
2014-01-13 13:42:56 +01:00
trace_selftest.c
sched/deadline: Add latency tracing for SCHED_DEADLINE tasks
2014-01-13 13:41:11 +01:00
trace_selftest_dynamic.c
trace_stack.c
tracing: Add generic tracing_lseek() function
2014-01-02 16:17:12 -05:00
trace_stat.c
trace/trace_stat: use rbtree postorder iteration helper instead of opencoding
2013-11-05 16:01:47 -05:00
trace_stat.h
trace_syscalls.c
tracing: Consolidate event trigger code
2014-01-09 21:20:07 -05:00
trace_uprobe.c
tracing/probes: Fix build break on !CONFIG_KPROBE_EVENT
2014-01-03 15:27:18 -05:00