• Steven Rostedt (Google)'s avatar
    tracing: ALSA: hda: Remove string manipulation out of the fast path · c7153100
    Steven Rostedt (Google) authored
    The TRACE_EVENT() macro is broken up into various parts to be efficient.
    The TP_fast_assign() is just to record the event into the ring buffer, and
    is to be done as fast as possible as this occurs during the actual running
    of the code. The slower this is, the slower the code that is being traced
    becomes.
    
    The TP_printk() is processed when reading the tracing buffer. This is
    considered the slow path. Any processing that can be moved from the
    TP_fast_assign() to the TP_printk() should do so.
    
    For some reason, the entire string processing of the trace events
    hda_send_cmd, hda_get_response, and hda_unsol_event was moved from the
    TP_printk() into the TP_fast_assign(). On top of that, the
    __dynamic_array() was used with a fixed size of HDAC_MSG_MAX, which is
    useless as a dynamic_array as it will always allocate HDAC_MSG_MAX bytes
    on the ring buffer and even save that amount into the event (as it expects
    the size to be dynamic, which using a fixed size defeats that purpose).
    
    Instead, just save the necessary elements in the TP_fast_assign() and do
    the string manipulation in the slow path.
    
    The output should be the same.
    Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
    Link: https://lore.kernel.org/r/20220703110605.07a86fb2@rorschach.local.homeSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    c7153100
trace.h 2.33 KB