From 18c71abf7bc2d24cb4c78321795397d824576483 Mon Sep 17 00:00:00 2001 From: Bruce Ashfield Date: Mon, 8 Apr 2013 12:56:48 -0700 Subject: [PATCH] Revert "ftrace/x86: Have x86 ftrace use the ftrace_modify_all_code()" This reverts commit e4f5d5440bb860a3e8942ca8f7277a7f31798965. --- arch/x86/kernel/ftrace.c | 15 +++++++++++++-- include/linux/ftrace.h | 1 - kernel/trace/ftrace.c | 4 ++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c index 1d41402..d09cae5 100644 --- a/arch/x86/kernel/ftrace.c +++ b/arch/x86/kernel/ftrace.c @@ -555,7 +555,7 @@ static void run_sync(void) local_irq_disable(); } -void ftrace_replace_code(int enable) +static void ftrace_replace_code(int enable) { struct ftrace_rec_iter *iter; struct dyn_ftrace *rec; @@ -646,7 +646,18 @@ void arch_ftrace_update_code(int command) /* See comment above by declaration of modifying_ftrace_code */ atomic_inc(&modifying_ftrace_code); - ftrace_modify_all_code(command); + if (command & FTRACE_UPDATE_CALLS) + ftrace_replace_code(1); + else if (command & FTRACE_DISABLE_CALLS) + ftrace_replace_code(0); + + if (command & FTRACE_UPDATE_TRACE_FUNC) + ftrace_update_ftrace_func(ftrace_trace_function); + + if (command & FTRACE_START_FUNC_RET) + ftrace_enable_ftrace_graph_caller(); + else if (command & FTRACE_STOP_FUNC_RET) + ftrace_disable_ftrace_graph_caller(); atomic_dec(&modifying_ftrace_code); } diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h index 92691d8..de6655a 100644 --- a/include/linux/ftrace.h +++ b/include/linux/ftrace.h @@ -403,7 +403,6 @@ ftrace_set_early_filter(struct ftrace_ops *ops, char *buf, int enable); /* defined in arch */ extern int ftrace_ip_converted(unsigned long ip); extern int ftrace_dyn_arch_init(void *data); -extern void ftrace_replace_code(int enable); extern int ftrace_update_ftrace_func(ftrace_func_t func); extern void ftrace_caller(void); extern void ftrace_regs_caller(void); diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 43defd1..934bed4 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -1772,7 +1772,7 @@ __ftrace_replace_code(struct dyn_ftrace *rec, int enable) return -1; /* unknow ftrace bug */ } -void __weak ftrace_replace_code(int enable) +static void ftrace_replace_code(int update) { struct dyn_ftrace *rec; struct ftrace_page *pg; @@ -1782,7 +1782,7 @@ void __weak ftrace_replace_code(int enable) return; do_for_each_ftrace_rec(pg, rec) { - failed = __ftrace_replace_code(rec, enable); + failed = __ftrace_replace_code(rec, update); if (failed) { ftrace_bug(failed, rec->ip); /* Stop processing */ -- 1.7.10.4