From: Robert Richter <robert.richter@amd.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: Andi Kleen <andi@firstfloor.org>,
LKML <linux-kernel@vger.kernel.org>,
oprofile-list <oprofile-list@lists.sourceforge.net>,
Robert Richter <robert.richter@amd.com>
Subject: [PATCH 4/7] oprofile/x86: stop disabled counters in nmi handler
Date: Thu, 6 May 2010 15:26:11 +0200 [thread overview]
Message-ID: <1273152374-9392-5-git-send-email-robert.richter@amd.com> (raw)
In-Reply-To: <1273152374-9392-1-git-send-email-robert.richter@amd.com>
This patch adds checks to the nmi handler. Now samples are only
generated and counters reenabled, if the counters are running.
Otherwise the counters are stopped, if oprofile is using the nmi. In
other cases it will ignore the nmi notification.
Cc: Andi Kleen <andi@firstfloor.org>
Signed-off-by: Robert Richter <robert.richter@amd.com>
---
arch/x86/oprofile/nmi_int.c | 12 ++++++++++--
1 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/arch/x86/oprofile/nmi_int.c b/arch/x86/oprofile/nmi_int.c
index b56601e..94b5481 100644
--- a/arch/x86/oprofile/nmi_int.c
+++ b/arch/x86/oprofile/nmi_int.c
@@ -62,12 +62,16 @@ static int profile_exceptions_notify(struct notifier_block *self,
{
struct die_args *args = (struct die_args *)data;
int ret = NOTIFY_DONE;
- int cpu = smp_processor_id();
switch (val) {
case DIE_NMI:
case DIE_NMI_IPI:
- model->check_ctrs(args->regs, &per_cpu(cpu_msrs, cpu));
+ if (ctr_running)
+ model->check_ctrs(args->regs, &__get_cpu_var(cpu_msrs));
+ else if (!nmi_enabled)
+ break;
+ else
+ model->stop(&__get_cpu_var(cpu_msrs));
ret = NOTIFY_STOP;
break;
default:
@@ -392,6 +396,9 @@ static int nmi_setup(void)
mux_clone(cpu);
}
+ nmi_enabled = 0;
+ ctr_running = 0;
+ barrier();
err = register_die_notifier(&profile_exceptions_nb);
if (err)
goto fail;
@@ -451,6 +458,7 @@ static void nmi_shutdown(void)
nmi_enabled = 0;
ctr_running = 0;
put_online_cpus();
+ barrier();
unregister_die_notifier(&profile_exceptions_nb);
msrs = &get_cpu_var(cpu_msrs);
model->shutdown(msrs);
--
1.7.0.3
next prev parent reply other threads:[~2010-05-06 15:24 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-06 13:26 [PATCH 0/7] oprofile/x86: fix cpu hotplug Robert Richter
2010-05-06 13:26 ` [PATCH 1/7] oprofile/x86: fix uninitialized counter usage during " Robert Richter
2010-05-06 13:26 ` [PATCH 2/7] oprofile/x86: remove CONFIG_SMP macros Robert Richter
2010-05-06 13:26 ` [PATCH 3/7] oprofile/x86: protect cpu hotplug sections Robert Richter
2010-05-06 13:26 ` Robert Richter [this message]
2010-05-06 13:26 ` [PATCH 5/7] oprofile/x86: reordering some functions Robert Richter
2010-05-06 13:26 ` [PATCH 6/7] oprofile/x86: notify cpus only when daemon is running Robert Richter
2010-05-06 13:26 ` [PATCH 7/7] oprofile/x86: make AMD IBS hotplug capable Robert Richter
2010-05-10 10:33 ` [GIT PULL] oprofile hotplug fixes for x86 Robert Richter
2010-05-10 11:14 ` Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1273152374-9392-5-git-send-email-robert.richter@amd.com \
--to=robert.richter@amd.com \
--cc=andi@firstfloor.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=oprofile-list@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome