• F
    tracing: Allocate the ftrace event profile buffer dynamically · 20ab4425
    Frederic Weisbecker 提交于
    Currently the trace event profile buffer is allocated in the stack. But
    this may be too much for the stack, as the events can have large
    statically defined field size and can also grow with dynamic arrays.
    
    Allocate two per cpu buffer for all profiled events. The first cpu
    buffer is used to host every non-nmi context traces. It is protected
    by disabling the interrupts while writing and committing the trace.
    
    The second buffer is reserved for nmi. So that there is no race between
    them and the first buffer.
    
    The whole write/commit section is rcu protected because we release
    these buffers while deactivating the last profiling trace event.
    
    v2: Move the buffers from trace_event to be global, as pointed by
        Steven Rostedt.
    
    v3: Fix the syscall events to handle the profiling buffer races
        by disabling interrupts, now that the buffers are globals.
    Suggested-by: NSteven Rostedt <rostedt@goodmis.org>
    Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Li Zefan <lizf@cn.fujitsu.com>
    Cc: Jason Baron <jbaron@redhat.com>
    Cc: Masami Hiramatsu <mhiramat@redhat.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    20ab4425
ftrace.h 19.8 KB