• Steven Rostedt's avatar
    ftrace: use dynamic patching for updating mcount calls · d61f82d0
    Steven Rostedt authored
    This patch replaces the indirect call to the mcount function
    pointer with a direct call that will be patched by the
    dynamic ftrace routines.
    
    On boot up, the mcount function calls the ftace_stub function.
    When the dynamic ftrace code is initialized, the ftrace_stub
    is replaced with a call to the ftrace_record_ip, which records
    the instruction pointers of the locations that call it.
    
    Later, the ftraced daemon will call kstop_machine and patch all
    the locations to nops.
    
    When a ftrace is enabled, the original calls to mcount will now
    be set top call ftrace_caller, which will do a direct call
    to the registered ftrace function. This direct call is also patched
    when the function that should be called is updated.
    
    All patching is performed by a kstop_machine routine to prevent any
    type of race conditions that is associated with modifying code
    on the fly.
    Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    d61f82d0
ftrace.c 3.33 KB