forked from Minki/linux
perfcounters: fix non-intel-perfmon CPUs
Do not write MSR_CORE_PERF_GLOBAL_CTRL on CPUs where it does not exist. Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
e06c61a879
commit
2b9ff0db19
@ -157,6 +157,9 @@ static int __hw_perf_counter_init(struct perf_counter *counter)
|
|||||||
|
|
||||||
void hw_perf_enable_all(void)
|
void hw_perf_enable_all(void)
|
||||||
{
|
{
|
||||||
|
if (unlikely(!perf_counters_initialized))
|
||||||
|
return;
|
||||||
|
|
||||||
wrmsr(MSR_CORE_PERF_GLOBAL_CTRL, perf_counter_mask, 0);
|
wrmsr(MSR_CORE_PERF_GLOBAL_CTRL, perf_counter_mask, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -164,14 +167,21 @@ u64 hw_perf_save_disable(void)
|
|||||||
{
|
{
|
||||||
u64 ctrl;
|
u64 ctrl;
|
||||||
|
|
||||||
|
if (unlikely(!perf_counters_initialized))
|
||||||
|
return 0;
|
||||||
|
|
||||||
rdmsrl(MSR_CORE_PERF_GLOBAL_CTRL, ctrl);
|
rdmsrl(MSR_CORE_PERF_GLOBAL_CTRL, ctrl);
|
||||||
wrmsr(MSR_CORE_PERF_GLOBAL_CTRL, 0, 0);
|
wrmsr(MSR_CORE_PERF_GLOBAL_CTRL, 0, 0);
|
||||||
|
|
||||||
return ctrl;
|
return ctrl;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(hw_perf_save_disable);
|
EXPORT_SYMBOL_GPL(hw_perf_save_disable);
|
||||||
|
|
||||||
void hw_perf_restore(u64 ctrl)
|
void hw_perf_restore(u64 ctrl)
|
||||||
{
|
{
|
||||||
|
if (unlikely(!perf_counters_initialized))
|
||||||
|
return;
|
||||||
|
|
||||||
wrmsr(MSR_CORE_PERF_GLOBAL_CTRL, ctrl, 0);
|
wrmsr(MSR_CORE_PERF_GLOBAL_CTRL, ctrl, 0);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(hw_perf_restore);
|
EXPORT_SYMBOL_GPL(hw_perf_restore);
|
||||||
|
Loading…
Reference in New Issue
Block a user