diff options
author | Robert Richter <robert.richter@amd.com> | 2010-02-23 12:14:58 -0500 |
---|---|---|
committer | Robert Richter <robert.richter@amd.com> | 2010-02-26 09:14:03 -0500 |
commit | 98a2e73a0690b3610f049a64154d8145e5771713 (patch) | |
tree | c58da8c5ffb458094af9681ec47f8b5e647f8d42 /arch/x86/oprofile/op_model_amd.c | |
parent | ba52078e1917c5116c0802298d88ad0e54a6728b (diff) |
oprofile/x86: warn user if a counter is already active
This patch generates a warning if a counter is already active.
Implemented for AMD and P6 models. P4 is not supported.
Cc: Naga Chumbalkar <nagananda.chumbalkar@hp.com>
Cc: Shashi Belur <shashi-kiran.belur@hp.com>
Cc: Tony Jones <tonyj@suse.de>
Signed-off-by: Robert Richter <robert.richter@amd.com>
Diffstat (limited to 'arch/x86/oprofile/op_model_amd.c')
-rw-r--r-- | arch/x86/oprofile/op_model_amd.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/x86/oprofile/op_model_amd.c b/arch/x86/oprofile/op_model_amd.c index a9d194734a8e..ef9d735dea35 100644 --- a/arch/x86/oprofile/op_model_amd.c +++ b/arch/x86/oprofile/op_model_amd.c | |||
@@ -194,9 +194,18 @@ static void op_amd_setup_ctrs(struct op_x86_model_spec const *model, | |||
194 | 194 | ||
195 | /* clear all counters */ | 195 | /* clear all counters */ |
196 | for (i = 0; i < NUM_CONTROLS; ++i) { | 196 | for (i = 0; i < NUM_CONTROLS; ++i) { |
197 | if (unlikely(!msrs->controls[i].addr)) | 197 | if (unlikely(!msrs->controls[i].addr)) { |
198 | if (counter_config[i].enabled && !smp_processor_id()) | ||
199 | /* | ||
200 | * counter is reserved, this is on all | ||
201 | * cpus, so report only for cpu #0 | ||
202 | */ | ||
203 | op_x86_warn_reserved(i); | ||
198 | continue; | 204 | continue; |
205 | } | ||
199 | rdmsrl(msrs->controls[i].addr, val); | 206 | rdmsrl(msrs->controls[i].addr, val); |
207 | if (val & ARCH_PERFMON_EVENTSEL0_ENABLE) | ||
208 | op_x86_warn_in_use(i); | ||
200 | val &= model->reserved; | 209 | val &= model->reserved; |
201 | wrmsrl(msrs->controls[i].addr, val); | 210 | wrmsrl(msrs->controls[i].addr, val); |
202 | } | 211 | } |