• Linus Torvalds's avatar
    Merge tag 'trace-v6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace · d579c468
    Linus Torvalds authored
    Pull tracing updates from Steven Rostedt:
    
     - User events are finally ready!
    
       After lots of collaboration between various parties, we finally
       locked down on a stable interface for user events that can also work
       with user space only tracing.
    
       This is implemented by telling the kernel (or user space library, but
       that part is user space only and not part of this patch set), where
       the variable is that the application uses to know if something is
       listening to the trace.
    
       There's also an interface to tell the kernel about these events,
       which will show up in the /sys/kernel/tracing/events/user_events/
       directory, where it can be enabled.
    
       When it's enabled, the kernel will update the variable, to tell the
       application to start writing to the kernel.
    
       See https://lwn.net/Articles/927595/
    
     - Cleaned up the direct trampolines code to simplify arm64 addition of
       direct trampolines.
    
       Direct trampolines use the ftrace interface but instead of jumping to
       the ftrace trampoline, applications (mostly BPF) can register their
       own trampoline for performance reasons.
    
     - Some updates to the fprobe infrastructure. fprobes are more efficient
       than kprobes, as it does not need to save all the registers that
       kprobes on ftrace do. More work needs to be done before the fprobes
       will be exposed as dynamic events.
    
     - More updates to references to the obsolete path of
       /sys/kernel/debug/tracing for the new /sys/kernel/tracing path.
    
     - Add a seq_buf_do_printk() helper to seq_bufs, to print a large buffer
       line by line instead of all at once.
    
       There are users in production kernels that have a large data dump
       that originally used printk() directly, but the data dump was larger
       than what printk() allowed as a single print.
    
       Using seq_buf() to do the printing fixes that.
    
     - Add /sys/kernel/tracing/touched_functions that shows all functions
       that was every traced by ftrace or a direct trampoline. This is used
       for debugging issues where a traced function could have caused a
       crash by a bpf program or live patching.
    
     - Add a "fields" option that is similar to "raw" but outputs the fields
       of the events. It's easier to read by humans.
    
     - Some minor fixes and clean ups.
    
    * tag 'trace-v6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace: (41 commits)
      ring-buffer: Sync IRQ works before buffer destruction
      tracing: Add missing spaces in trace_print_hex_seq()
      ring-buffer: Ensure proper resetting of atomic variables in ring_buffer_reset_online_cpus
      recordmcount: Fix memory leaks in the uwrite function
      tracing/user_events: Limit max fault-in attempts
      tracing/user_events: Prevent same address and bit per process
      tracing/user_events: Ensure bit is cleared on unregister
      tracing/user_events: Ensure write index cannot be negative
      seq_buf: Add seq_buf_do_printk() helper
      tracing: Fix print_fields() for __dyn_loc/__rel_loc
      tracing/user_events: Set event filter_type from type
      ring-buffer: Clearly check null ptr returned by rb_set_head_page()
      tracing: Unbreak user events
      tracing/user_events: Use print_format_fields() for trace output
      tracing/user_events: Align structs with tabs for readability
      tracing/user_events: Limit global user_event count
      tracing/user_events: Charge event allocs to cgroups
      tracing/user_events: Update documentation for ABI
      tracing/user_events: Use write ABI in example
      tracing/user_events: Add ABI self-test
      ...
    d579c468
ring_buffer.c 165 KB