Skip to content

Commit

Permalink
perfcounters: fix "perf counters kill oprofile" bug
Browse files Browse the repository at this point in the history
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: Mike Galbraith <efault@gmx.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
Mike Galbraith authored and Ingo Molnar committed Feb 4, 2009
1 parent 15081c6 commit 5b75af0
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 4 deletions.
4 changes: 3 additions & 1 deletion arch/x86/kernel/cpu/perf_counter.c
Original file line number Diff line number Diff line change
Expand Up @@ -643,7 +643,9 @@ perf_counter_nmi_handler(struct notifier_block *self,
}

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)
Expand Down
7 changes: 4 additions & 3 deletions arch/x86/oprofile/nmi_int.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,9 @@ static int profile_exceptions_notify(struct notifier_block *self,

switch (val) {
case DIE_NMI:
if (model->check_ctrs(args->regs, &per_cpu(cpu_msrs, cpu)))
ret = NOTIFY_STOP;
case DIE_NMI_IPI:
model->check_ctrs(args->regs, &per_cpu(cpu_msrs, cpu));
ret = NOTIFY_STOP;
break;
default:
break;
Expand Down Expand Up @@ -134,7 +135,7 @@ static void nmi_cpu_setup(void *dummy)
static struct notifier_block profile_exceptions_nb = {
.notifier_call = profile_exceptions_notify,
.next = NULL,
.priority = 0
.priority = 2
};

static int nmi_setup(void)
Expand Down

0 comments on commit 5b75af0

Please sign in to comment.