Skip to content
  • Steven Rostedt's avatar
    function-graph/x86: Replace unbalanced ret with jmp · 194ec341
    Steven Rostedt authored
    
    
    The function graph tracer replaces the return address with a hook
    to trace the exit of the function call. This hook will finish by
    returning to the real location the function should return to.
    
    But the current implementation uses a ret to jump to the real
    return location. This causes a imbalance between calls and ret.
    That is the original function does a call, the ret goes to the
    handler and then the handler does a ret without a matching call.
    
    Although the function graph tracer itself still breaks the branch
    predictor by replacing the original ret, by using a second ret and
    causing an imbalance, it breaks the predictor even more.
    
    This patch replaces the ret with a jmp to keep the calls and ret
    balanced. I tested this on one box and it showed a 1.7% increase in
    performance. Another box only showed a small 0.3% increase. But no
    box that I tested this on showed a decrease in performance by
    making this change.
    
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    Acked-by: default avatarMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    LKML-Reference: <20091013203425.042034383@goodmis.org>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    194ec341