This is my final draft of the patches. I'm starting to run them
through my formal tests now. They may change depending on the outcome
of the tests.
I'm also a bit tired, and I added the change logs last. Thus I may
need to go back and fix the change logs up too. But the code was done
when I was rather spunky. But that doesn't mean I didn't break anything.
Anyway, let me know what you think. I'm going to need acks for the
places I added the FTRACE_UNSAFE_RCU() annotations.
I added a checker that traces all functions with the non RCU safe
settings, and did a rcu_read_lock() with PROVE_RCU enabled. This caught
several functions that needed to be annotated. There may be more, but
the test gives us a way to find out.
There's some improvements that can be done to these patches, but for
3.12, I think this version is good enough. We can do the improvements
for 3.13.
Well, enjoy.
-- Steve
Steven Rostedt (Red Hat) (18):
ftrace: Add hash list to save RCU unsafe functions
ftrace: Do not set ftrace records for unsafe RCU when not allowed
ftrace: Set ftrace internal function tracing RCU safe
ftrace: Add test for ops against unsafe RCU functions in callback
ftrace: Do not display non safe RCU functions in
available_filter_functions
ftrace: Add rcu_unsafe_filter_functions file
ftrace: Add selftest to check if RCU unsafe functions are filtered
properly
ftrace/rcu: Do not trace debug_lockdep_rcu_enabled()
ftrace: Fix a slight race in modifying what function callback gets traced
ftrace: Create a RCU unsafe checker
ftrace: Adde infrastructure to stop RCU unsafe checker from checking
ftrace: Disable RCU unsafe checker when function graph is enabled
ftrace: Disable the RCU unsafe checker when irqsoff is enabled
ftrace/lockdep: Have the RCU lockdep splat show what function triggered
ftrace/rcu: Mark functions that are RCU unsafe
rcu/irq/x86: Mark functions that are RCU unsafe
ftrace/cpuidle/x86: Mark functions that are RCU unsafe
ftrace/sched: Mark functions that are RCU unsafe
----
arch/x86/kernel/apic/apic.c | 2 +
arch/x86/kernel/irq.c | 1 +
arch/x86/kernel/irq_work.c | 3 +
arch/x86/kernel/process.c | 2 +
arch/x86/kernel/smp.c | 8 ++
drivers/cpuidle/cpuidle.c | 2 +
include/asm-generic/vmlinux.lds.h | 10 ++
include/linux/ftrace.h | 46 +++++++
kernel/cpu/idle.c | 2 +
kernel/lockdep.c | 2 +
kernel/rcupdate.c | 2 +-
kernel/rcutiny.c | 1 +
kernel/rcutree.c | 7 +
kernel/sched/core.c | 2 +
kernel/softirq.c | 2 +
kernel/trace/Kconfig | 22 ++++
kernel/trace/ftrace.c | 231 +++++++++++++++++++++++++++++++--
kernel/trace/trace.h | 11 ++
kernel/trace/trace_functions.c | 76 ++++++++++-
kernel/trace/trace_irqsoff.c | 16 ++-
kernel/trace/trace_selftest.c | 94 ++++++++++++++
kernel/trace/trace_selftest_dynamic.c | 7 +
22 files changed, 532 insertions(+), 17 deletions(-)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/