unwind x86: Switch dump_trace into function pointer

And renaming dump_trace 32/64 functions into
dump_trace_legacy.

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
diff --git a/arch/x86/include/asm/stacktrace.h b/arch/x86/include/asm/stacktrace.h
index ed31d6d..1502799 100644
--- a/arch/x86/include/asm/stacktrace.h
+++ b/arch/x86/include/asm/stacktrace.h
@@ -43,9 +43,18 @@
 	walk_stack_t	walk_stack;
 };
 
-void dump_trace(struct task_struct *tsk, struct pt_regs *regs,
-		unsigned long *stack, unsigned long bp,
-		const struct stacktrace_ops *ops, void *data);
+typedef void (*dump_trace_t)(struct task_struct *tsk,
+			     struct pt_regs *regs,
+			     unsigned long *stack,
+			     unsigned long bp,
+			     const struct stacktrace_ops *ops,
+			     void *data);
+
+extern dump_trace_t dump_trace;
+
+void dump_trace_legacy(struct task_struct *tsk, struct pt_regs *regs,
+		       unsigned long *stack, unsigned long bp,
+		       const struct stacktrace_ops *ops, void *data);
 
 #ifdef CONFIG_DWARF_UNWIND
 void dump_trace_dwarf(struct task_struct *task, struct pt_regs *regs,
diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile
index 04d6b16..4178e1e 100644
--- a/arch/x86/kernel/Makefile
+++ b/arch/x86/kernel/Makefile
@@ -35,6 +35,7 @@
 obj-y			+= tsc.o io_delay.o rtc.o
 obj-y			+= pci-iommu_table.o
 obj-y			+= resource.o
+obj-y			+= dumptrace.o
 
 obj-$(CONFIG_PREEMPT)	+= preempt.o
 
diff --git a/arch/x86/kernel/dumpstack_32.c b/arch/x86/kernel/dumpstack_32.c
index f2a1770..c1cd603 100644
--- a/arch/x86/kernel/dumpstack_32.c
+++ b/arch/x86/kernel/dumpstack_32.c
@@ -17,9 +17,9 @@
 #include <asm/stacktrace.h>
 
 
-void dump_trace(struct task_struct *task, struct pt_regs *regs,
-		unsigned long *stack, unsigned long bp,
-		const struct stacktrace_ops *ops, void *data)
+void dump_trace_legacy(struct task_struct *task, struct pt_regs *regs,
+		       unsigned long *stack, unsigned long bp,
+		       const struct stacktrace_ops *ops, void *data)
 {
 	int graph = 0;
 
@@ -52,7 +52,7 @@
 		touch_nmi_watchdog();
 	}
 }
-EXPORT_SYMBOL(dump_trace);
+EXPORT_SYMBOL(dump_trace_legacy);
 
 void
 show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs,
diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c
index addb207..1b1b496 100644
--- a/arch/x86/kernel/dumpstack_64.c
+++ b/arch/x86/kernel/dumpstack_64.c
@@ -111,9 +111,9 @@
  * severe exception (double fault, nmi, stack fault, debug, mce) hardware stack
  */
 
-void dump_trace(struct task_struct *task, struct pt_regs *regs,
-		unsigned long *stack, unsigned long bp,
-		const struct stacktrace_ops *ops, void *data)
+void dump_trace_legacy(struct task_struct *task, struct pt_regs *regs,
+		       unsigned long *stack, unsigned long bp,
+		       const struct stacktrace_ops *ops, void *data)
 {
 	const unsigned cpu = get_cpu();
 	unsigned long *irq_stack_end =
@@ -194,7 +194,7 @@
 	bp = ops->walk_stack(tinfo, stack, bp, ops, data, NULL, &graph);
 	put_cpu();
 }
-EXPORT_SYMBOL(dump_trace);
+EXPORT_SYMBOL(dump_trace_legacy);
 
 void
 show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs,
diff --git a/arch/x86/kernel/dumptrace.c b/arch/x86/kernel/dumptrace.c
new file mode 100644
index 0000000..3cb943f
--- /dev/null
+++ b/arch/x86/kernel/dumptrace.c
@@ -0,0 +1,7 @@
+
+#include <linux/export.h>
+#include <asm/stacktrace.h>
+
+dump_trace_t dump_trace = dump_trace_legacy;
+
+EXPORT_SYMBOL(dump_trace);