diff options
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/oprofile/op_model_ppro.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/x86/oprofile/op_model_ppro.c b/arch/x86/oprofile/op_model_ppro.c index 07c914555a5e..85eb6268374f 100644 --- a/arch/x86/oprofile/op_model_ppro.c +++ b/arch/x86/oprofile/op_model_ppro.c | |||
@@ -126,6 +126,13 @@ static int ppro_check_ctrs(struct pt_regs * const regs, | |||
126 | u64 val; | 126 | u64 val; |
127 | int i; | 127 | int i; |
128 | 128 | ||
129 | /* | ||
130 | * This can happen if perf counters are in use when | ||
131 | * we steal the die notifier NMI. | ||
132 | */ | ||
133 | if (unlikely(!reset_value)) | ||
134 | goto out; | ||
135 | |||
129 | for (i = 0 ; i < num_counters; ++i) { | 136 | for (i = 0 ; i < num_counters; ++i) { |
130 | if (!reset_value[i]) | 137 | if (!reset_value[i]) |
131 | continue; | 138 | continue; |
@@ -136,6 +143,7 @@ static int ppro_check_ctrs(struct pt_regs * const regs, | |||
136 | } | 143 | } |
137 | } | 144 | } |
138 | 145 | ||
146 | out: | ||
139 | /* Only P6 based Pentium M need to re-unmask the apic vector but it | 147 | /* Only P6 based Pentium M need to re-unmask the apic vector but it |
140 | * doesn't hurt other P6 variant */ | 148 | * doesn't hurt other P6 variant */ |
141 | apic_write(APIC_LVTPC, apic_read(APIC_LVTPC) & ~APIC_LVT_MASKED); | 149 | apic_write(APIC_LVTPC, apic_read(APIC_LVTPC) & ~APIC_LVT_MASKED); |