Commit 5b75af0a authored by Mike Galbraith's avatar Mike Galbraith Committed by Ingo Molnar

perfcounters: fix "perf counters kill oprofile" bug

With oprofile as a module, and unloaded by profiling script,
both oprofile and kerneltop work fine.. unless you leave kerneltop
running when you start profiling, then you may see badness.
Signed-off-by: default avatarMike Galbraith <efault@gmx.de>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 15081c61
...@@ -643,7 +643,9 @@ perf_counter_nmi_handler(struct notifier_block *self, ...@@ -643,7 +643,9 @@ perf_counter_nmi_handler(struct notifier_block *self,
} }
static __read_mostly struct notifier_block perf_counter_nmi_notifier = { static __read_mostly struct notifier_block perf_counter_nmi_notifier = {
.notifier_call = perf_counter_nmi_handler .notifier_call = perf_counter_nmi_handler,
.next = NULL,
.priority = 1
}; };
void __init init_hw_perf_counters(void) void __init init_hw_perf_counters(void)
......
...@@ -40,8 +40,9 @@ static int profile_exceptions_notify(struct notifier_block *self, ...@@ -40,8 +40,9 @@ static int profile_exceptions_notify(struct notifier_block *self,
switch (val) { switch (val) {
case DIE_NMI: case DIE_NMI:
if (model->check_ctrs(args->regs, &per_cpu(cpu_msrs, cpu))) case DIE_NMI_IPI:
ret = NOTIFY_STOP; model->check_ctrs(args->regs, &per_cpu(cpu_msrs, cpu));
ret = NOTIFY_STOP;
break; break;
default: default:
break; break;
...@@ -134,7 +135,7 @@ static void nmi_cpu_setup(void *dummy) ...@@ -134,7 +135,7 @@ static void nmi_cpu_setup(void *dummy)
static struct notifier_block profile_exceptions_nb = { static struct notifier_block profile_exceptions_nb = {
.notifier_call = profile_exceptions_notify, .notifier_call = profile_exceptions_notify,
.next = NULL, .next = NULL,
.priority = 0 .priority = 2
}; };
static int nmi_setup(void) static int nmi_setup(void)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment