aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/oprofile/op_model_amd.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/arch/x86/oprofile/op_model_amd.c b/arch/x86/oprofile/op_model_amd.c
index f4ebc4596da8..6a58256dce9f 100644
--- a/arch/x86/oprofile/op_model_amd.c
+++ b/arch/x86/oprofile/op_model_amd.c
@@ -127,7 +127,7 @@ static void op_mux_switch_ctrl(struct op_x86_model_spec const *model,
127 /* enable active counters */ 127 /* enable active counters */
128 for (i = 0; i < NUM_COUNTERS; ++i) { 128 for (i = 0; i < NUM_COUNTERS; ++i) {
129 int virt = op_x86_phys_to_virt(i); 129 int virt = op_x86_phys_to_virt(i);
130 if (!counter_config[virt].enabled) 130 if (!reset_value[virt])
131 continue; 131 continue;
132 rdmsrl(msrs->controls[i].addr, val); 132 rdmsrl(msrs->controls[i].addr, val);
133 val &= model->reserved; 133 val &= model->reserved;
@@ -163,7 +163,8 @@ static void op_amd_setup_ctrs(struct op_x86_model_spec const *model,
163 163
164 /* setup reset_value */ 164 /* setup reset_value */
165 for (i = 0; i < NUM_VIRT_COUNTERS; ++i) { 165 for (i = 0; i < NUM_VIRT_COUNTERS; ++i) {
166 if (counter_config[i].enabled) 166 if (counter_config[i].enabled
167 && msrs->counters[op_x86_virt_to_phys(i)].addr)
167 reset_value[i] = counter_config[i].count; 168 reset_value[i] = counter_config[i].count;
168 else 169 else
169 reset_value[i] = 0; 170 reset_value[i] = 0;
@@ -197,9 +198,7 @@ static void op_amd_setup_ctrs(struct op_x86_model_spec const *model,
197 /* enable active counters */ 198 /* enable active counters */
198 for (i = 0; i < NUM_COUNTERS; ++i) { 199 for (i = 0; i < NUM_COUNTERS; ++i) {
199 int virt = op_x86_phys_to_virt(i); 200 int virt = op_x86_phys_to_virt(i);
200 if (!counter_config[virt].enabled) 201 if (!reset_value[virt])
201 continue;
202 if (!msrs->counters[i].addr)
203 continue; 202 continue;
204 203
205 /* setup counter registers */ 204 /* setup counter registers */