diff options
| author | David S. Miller <davem@davemloft.net> | 2011-12-06 21:10:05 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2011-12-06 21:10:05 -0500 |
| commit | 959327c7842e8621e28b89acea7d57ff02b60972 (patch) | |
| tree | b00de195fa401186228796abdcd16812862fbf4d /arch/x86/oprofile/init.c | |
| parent | f84ea779c25dabc90956f1c329e5e5c501ea96cc (diff) | |
| parent | b835c0f47f725d864bf2545f10c733b754bb6d51 (diff) | |
| download | olio-linux-3.10-959327c7842e8621e28b89acea7d57ff02b60972.tar.xz olio-linux-3.10-959327c7842e8621e28b89acea7d57ff02b60972.zip | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Diffstat (limited to 'arch/x86/oprofile/init.c')
| -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 cdfe4c54dec..f148cf65267 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 } |