Make irq_*_affinity depend on CONFIG_GENERIC_HARDIRQS too.
[safe/jmp/linux-2.6] / kernel / trace / Kconfig
index 5c2295b..e2a4ff6 100644 (file)
@@ -1,23 +1,56 @@
 #
-# Architectures that offer an FTRACE implementation should select HAVE_FTRACE:
+# Architectures that offer an FUNCTION_TRACER implementation should
+#  select HAVE_FUNCTION_TRACER:
 #
-config HAVE_FTRACE
+
+config USER_STACKTRACE_SUPPORT
+       bool
+
+config NOP_TRACER
+       bool
+
+config HAVE_FUNCTION_TRACER
+       bool
+
+config HAVE_FUNCTION_GRAPH_TRACER
+       bool
+
+config HAVE_FUNCTION_TRACE_MCOUNT_TEST
        bool
+       help
+        This gets selected when the arch tests the function_trace_stop
+        variable at the mcount call site. Otherwise, this variable
+        is tested by the called function.
 
 config HAVE_DYNAMIC_FTRACE
        bool
 
+config HAVE_FTRACE_MCOUNT_RECORD
+       bool
+
+config HAVE_HW_BRANCH_TRACER
+       bool
+
 config TRACER_MAX_TRACE
        bool
 
+config RING_BUFFER
+       bool
+
 config TRACING
        bool
        select DEBUG_FS
-       select STACKTRACE
+       select RING_BUFFER
+       select STACKTRACE if STACKTRACE_SUPPORT
+       select TRACEPOINTS
+       select NOP_TRACER
+
+menu "Tracers"
 
-config FTRACE
+config FUNCTION_TRACER
        bool "Kernel Function Tracer"
-       depends on HAVE_FTRACE
+       depends on HAVE_FUNCTION_TRACER
+       depends on DEBUG_KERNEL
        select FRAME_POINTER
        select TRACING
        select CONTEXT_SWITCH_TRACER
@@ -30,12 +63,26 @@ config FTRACE
          (the bootup default), then the overhead of the instructions is very
          small and not measurable even in micro-benchmarks.
 
+config FUNCTION_GRAPH_TRACER
+       bool "Kernel Function Graph Tracer"
+       depends on HAVE_FUNCTION_GRAPH_TRACER
+       depends on FUNCTION_TRACER
+       default y
+       help
+         Enable the kernel to trace a function at both its return
+         and its entry.
+         It's first purpose is to trace the duration of functions and
+         draw a call graph for each thread with some informations like
+         the return value.
+         This is done by setting the current return address on the current
+         task structure into a stack of calls.
+
 config IRQSOFF_TRACER
        bool "Interrupts-off Latency Tracer"
        default n
        depends on TRACE_IRQFLAGS_SUPPORT
        depends on GENERIC_TIME
-       depends on HAVE_FTRACE
+       depends on DEBUG_KERNEL
        select TRACE_IRQFLAGS
        select TRACING
        select TRACER_MAX_TRACE
@@ -58,7 +105,7 @@ config PREEMPT_TRACER
        default n
        depends on GENERIC_TIME
        depends on PREEMPT
-       depends on HAVE_FTRACE
+       depends on DEBUG_KERNEL
        select TRACING
        select TRACER_MAX_TRACE
        help
@@ -75,9 +122,17 @@ config PREEMPT_TRACER
          enabled. This option and the irqs-off timing option can be
          used together or separately.)
 
+config SYSPROF_TRACER
+       bool "Sysprof Tracer"
+       depends on X86
+       select TRACING
+       help
+         This tracer provides the trace needed by the 'Sysprof' userspace
+         tool.
+
 config SCHED_TRACER
        bool "Scheduling Latency Tracer"
-       depends on HAVE_FTRACE
+       depends on DEBUG_KERNEL
        select TRACING
        select CONTEXT_SWITCH_TRACER
        select TRACER_MAX_TRACE
@@ -87,17 +142,133 @@ config SCHED_TRACER
 
 config CONTEXT_SWITCH_TRACER
        bool "Trace process context switches"
-       depends on HAVE_FTRACE
+       depends on DEBUG_KERNEL
        select TRACING
        select MARKERS
        help
          This tracer gets called from the context switch and records
          all switching of tasks.
 
+config BOOT_TRACER
+       bool "Trace boot initcalls"
+       depends on DEBUG_KERNEL
+       select TRACING
+       select CONTEXT_SWITCH_TRACER
+       help
+         This tracer helps developers to optimize boot times: it records
+         the timings of the initcalls and traces key events and the identity
+         of tasks that can cause boot delays, such as context-switches.
+
+         Its aim is to be parsed by the /scripts/bootgraph.pl tool to
+         produce pretty graphics about boot inefficiencies, giving a visual
+         representation of the delays during initcalls - but the raw
+         /debug/tracing/trace text output is readable too.
+
+         ( Note that tracing self tests can't be enabled if this tracer is
+           selected, because the self-tests are an initcall as well and that
+           would invalidate the boot trace. )
+
+config TRACE_BRANCH_PROFILING
+       bool "Trace likely/unlikely profiler"
+       depends on DEBUG_KERNEL
+       select TRACING
+       help
+         This tracer profiles all the the likely and unlikely macros
+         in the kernel. It will display the results in:
+
+         /debugfs/tracing/profile_annotated_branch
+
+         Note: this will add a significant overhead, only turn this
+         on if you need to profile the system's use of these macros.
+
+         Say N if unsure.
+
+config PROFILE_ALL_BRANCHES
+       bool "Profile all if conditionals"
+       depends on TRACE_BRANCH_PROFILING
+       help
+         This tracer profiles all branch conditions. Every if ()
+         taken in the kernel is recorded whether it hit or miss.
+         The results will be displayed in:
+
+         /debugfs/tracing/profile_branch
+
+         This configuration, when enabled, will impose a great overhead
+         on the system. This should only be enabled when the system
+         is to be analyzed
+
+         Say N if unsure.
+
+config TRACING_BRANCHES
+       bool
+       help
+         Selected by tracers that will trace the likely and unlikely
+         conditions. This prevents the tracers themselves from being
+         profiled. Profiling the tracing infrastructure can only happen
+         when the likelys and unlikelys are not being traced.
+
+config BRANCH_TRACER
+       bool "Trace likely/unlikely instances"
+       depends on TRACE_BRANCH_PROFILING
+       select TRACING_BRANCHES
+       help
+         This traces the events of likely and unlikely condition
+         calls in the kernel.  The difference between this and the
+         "Trace likely/unlikely profiler" is that this is not a
+         histogram of the callers, but actually places the calling
+         events into a running trace buffer to see when and where the
+         events happened, as well as their results.
+
+         Say N if unsure.
+
+config POWER_TRACER
+       bool "Trace power consumption behavior"
+       depends on DEBUG_KERNEL
+       depends on X86
+       select TRACING
+       help
+         This tracer helps developers to analyze and optimize the kernels
+         power management decisions, specifically the C-state and P-state
+         behavior.
+
+
+config STACK_TRACER
+       bool "Trace max stack"
+       depends on HAVE_FUNCTION_TRACER
+       depends on DEBUG_KERNEL
+       select FUNCTION_TRACER
+       select STACKTRACE
+       help
+         This special tracer records the maximum stack footprint of the
+         kernel and displays it in debugfs/tracing/stack_trace.
+
+         This tracer works by hooking into every function call that the
+         kernel executes, and keeping a maximum stack depth value and
+         stack-trace saved.  If this is configured with DYNAMIC_FTRACE
+         then it will not have any overhead while the stack tracer
+         is disabled.
+
+         To enable the stack tracer on bootup, pass in 'stacktrace'
+         on the kernel command line.
+
+         The stack tracer can also be enabled or disabled via the
+         sysctl kernel.stack_tracer_enabled
+
+         Say N if unsure.
+
+config HW_BRANCH_TRACER
+       depends on HAVE_HW_BRANCH_TRACER
+       bool "Trace hw branches"
+       select TRACING
+       help
+         This tracer records all branches on the system in a circular
+         buffer giving access to the last N branches for each cpu.
+
 config DYNAMIC_FTRACE
        bool "enable/disable ftrace tracepoints dynamically"
-       depends on FTRACE
+       depends on FUNCTION_TRACER
        depends on HAVE_DYNAMIC_FTRACE
+       depends on DEBUG_KERNEL
        default y
        help
          This option will modify all the calls to ftrace dynamically
@@ -105,7 +276,7 @@ config DYNAMIC_FTRACE
         with a No-Op instruction) as they are called. A table is
         created to dynamically enable them again.
 
-        This way a CONFIG_FTRACE kernel is slightly larger, but otherwise
+        This way a CONFIG_FUNCTION_TRACER kernel is slightly larger, but otherwise
         has native performance as long as no tracing is active.
 
         The changes to the code are done by a kernel thread that
@@ -113,15 +284,22 @@ config DYNAMIC_FTRACE
         were made. If so, it runs stop_machine (stops all CPUS)
         and modifies the code to jump over the call to ftrace.
 
+config FTRACE_MCOUNT_RECORD
+       def_bool y
+       depends on DYNAMIC_FTRACE
+       depends on HAVE_FTRACE_MCOUNT_RECORD
+
 config FTRACE_SELFTEST
        bool
 
 config FTRACE_STARTUP_TEST
        bool "Perform a startup test on ftrace"
-       depends on TRACING
+       depends on TRACING && DEBUG_KERNEL && !BOOT_TRACER
        select FTRACE_SELFTEST
        help
          This option performs a series of startup tests on ftrace. On bootup
          a series of tests are made to verify that the tracer is
          functioning properly. It will do tests on all the configured
          tracers of ftrace.
+
+endmenu