diff options
author | Ingo Molnar <mingo@elte.hu> | 2011-11-15 11:03:30 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2011-11-15 11:03:30 +0100 |
commit | 4a1dba72384193753e44e15d9d05a50be6587271 (patch) | |
tree | a4fc4caa6a11413463b59d8521b67e3cb3926320 /arch | |
parent | perf/x86: Enable raw event access to Intel offcore events (diff) | |
parent | oprofile, x86: Fix crash when unloading module (nmi timer mode) (diff) | |
download | linux-4a1dba72384193753e44e15d9d05a50be6587271.tar.xz linux-4a1dba72384193753e44e15d9d05a50be6587271.zip |
Merge branch 'urgent' of git://amd64.org/linux/rric into perf/urgent
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/oprofile/init.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/x86/oprofile/init.c b/arch/x86/oprofile/init.c index cdfe4c54deca..f148cf652678 100644 --- a/arch/x86/oprofile/init.c +++ b/arch/x86/oprofile/init.c @@ -21,6 +21,7 @@ extern int op_nmi_timer_init(struct oprofile_operations *ops); extern void op_nmi_exit(void); extern void x86_backtrace(struct pt_regs * const regs, unsigned int depth); +static int nmi_timer; int __init oprofile_arch_init(struct oprofile_operations *ops) { @@ -31,8 +32,9 @@ int __init oprofile_arch_init(struct oprofile_operations *ops) #ifdef CONFIG_X86_LOCAL_APIC ret = op_nmi_init(ops); #endif + nmi_timer = (ret != 0); #ifdef CONFIG_X86_IO_APIC - if (ret < 0) + if (nmi_timer) ret = op_nmi_timer_init(ops); #endif ops->backtrace = x86_backtrace; @@ -44,6 +46,7 @@ int __init oprofile_arch_init(struct oprofile_operations *ops) void oprofile_arch_exit(void) { #ifdef CONFIG_X86_LOCAL_APIC - op_nmi_exit(); + if (!nmi_timer) + op_nmi_exit(); #endif } |