• Steven Rostedt (Red Hat)'s avatar
    tracing: Fix tick_stop tracepoint symbols for user export · c87edb36
    Steven Rostedt (Red Hat) authored
    The symbols used in the tick_stop tracepoint were not being converted
    properly into integers in the trace_stop format file. Instead we had this:
    
    print fmt: "success=%d dependency=%s", REC->success,
        __print_symbolic(REC->dependency, { 0, "NONE" },
         { (1 << TICK_DEP_BIT_POSIX_TIMER), "POSIX_TIMER" },
         { (1 << TICK_DEP_BIT_PERF_EVENTS), "PERF_EVENTS" },
         { (1 << TICK_DEP_BIT_SCHED), "SCHED" },
         { (1 << TICK_DEP_BIT_CLOCK_UNSTABLE), "CLOCK_UNSTABLE" })
    
    User space tools have no idea how to parse "TICK_DEP_BIT_SCHED" or the other
    symbols used to do the bit shifting. The reason is that the conversion was
    done with using the TICK_DEP_MASK_* symbols which are just macros that
    convert to the BIT shift itself (with the exception of NONE, which was
    converted properly, because it doesn't use bits, and is defined as zero).
    
    The TICK_DEP_BIT_* needs to be denoted by TRACE_DEFINE_ENUM() in order to
    have this properly converted for user space tools to parse this event.
    
    Cc: stable@vger.kernel.org
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Fixes: e6e6cc22 ("nohz: Use enum code for tick stop failure tracing message")
    Reported-by: default avatarLuiz Capitulino <lcapitulino@redhat.com>
    Tested-by: default avatarLuiz Capitulino <lcapitulino@redhat.com>
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    c87edb36
timer.h 8.99 KB