aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/oprofile/nmi_int.c
diff options
context:
space:
mode:
authorRobert Richter <robert.richter@amd.com>2008-07-22 21:08:48 +0200
committerIngo Molnar <mingo@elte.hu>2008-07-26 11:48:01 +0200
commitadf5ec0bca553b763a6b9baed2677a4c7470025b (patch)
treec3009400fcdd1d0a27ab96e8d9ed6a88535307d4 /arch/x86/oprofile/nmi_int.c
parentoprofile: Add support for AMD Family 11h (diff)
downloadlinux-dev-adf5ec0bca553b763a6b9baed2677a4c7470025b.tar.xz
linux-dev-adf5ec0bca553b763a6b9baed2677a4c7470025b.zip
x86/oprofile: introduce model specific init/exit functions
This patch implements model specific OProfile init/exit functions for x86 CPUs. Though there is more rework needed at the initialization code, this new introduced functions allow it to keep model specific code in the corresponding op_model_*.c files. The function interface is the same as for oprofile_arch_init/exit(). Signed-off-by: Robert Richter <robert.richter@amd.com> Cc: oprofile-list <oprofile-list@lists.sourceforge.net> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/oprofile/nmi_int.c')
-rw-r--r--arch/x86/oprofile/nmi_int.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/x86/oprofile/nmi_int.c b/arch/x86/oprofile/nmi_int.c
index 33db99ab90c0..75e889156f23 100644
--- a/arch/x86/oprofile/nmi_int.c
+++ b/arch/x86/oprofile/nmi_int.c
@@ -1,10 +1,11 @@
/**
* @file nmi_int.c
*
- * @remark Copyright 2002 OProfile authors
+ * @remark Copyright 2002-2008 OProfile authors
* @remark Read the file COPYING
*
* @author John Levon <levon@movementarian.org>
+ * @author Robert Richter <robert.richter@amd.com>
*/
#include <linux/init.h>
@@ -411,6 +412,7 @@ int __init op_nmi_init(struct oprofile_operations *ops)
__u8 vendor = boot_cpu_data.x86_vendor;
__u8 family = boot_cpu_data.x86;
char *cpu_type;
+ int ret = 0;
if (!cpu_has_apic)
return -ENODEV;
@@ -466,6 +468,11 @@ int __init op_nmi_init(struct oprofile_operations *ops)
return -ENODEV;
}
+ if (model->init)
+ ret = model->init(ops);
+ if (ret)
+ return ret;
+
init_sysfs();
using_nmi = 1;
ops->create_files = nmi_create_files;
@@ -482,4 +489,6 @@ void op_nmi_exit(void)
{
if (using_nmi)
exit_sysfs();
+ if (model->exit)
+ model->exit();
}