diff options
Diffstat (limited to 'arch/x86/kernel/cpu/perf_event.c')
| -rw-r--r-- | arch/x86/kernel/cpu/perf_event.c | 19 | 
1 files changed, 8 insertions, 11 deletions
diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c index 4d98789b066..70d6d8fc241 100644 --- a/arch/x86/kernel/cpu/perf_event.c +++ b/arch/x86/kernel/cpu/perf_event.c @@ -642,21 +642,24 @@ static void x86_pmu_disable(struct pmu *pmu)  	x86_pmu.disable_all();  } +static inline void __x86_pmu_enable_event(struct hw_perf_event *hwc, +					  u64 enable_mask) +{ +	wrmsrl(hwc->config_base + hwc->idx, hwc->config | enable_mask); +} +  static void x86_pmu_enable_all(int added)  {  	struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);  	int idx;  	for (idx = 0; idx < x86_pmu.num_counters; idx++) { -		struct perf_event *event = cpuc->events[idx]; -		u64 val; +		struct hw_perf_event *hwc = &cpuc->events[idx]->hw;  		if (!test_bit(idx, cpuc->active_mask))  			continue; -		val = event->hw.config; -		val |= ARCH_PERFMON_EVENTSEL_ENABLE; -		wrmsrl(x86_pmu.eventsel + idx, val); +		__x86_pmu_enable_event(hwc, ARCH_PERFMON_EVENTSEL_ENABLE);  	}  } @@ -915,12 +918,6 @@ static void x86_pmu_enable(struct pmu *pmu)  	x86_pmu.enable_all(added);  } -static inline void __x86_pmu_enable_event(struct hw_perf_event *hwc, -					  u64 enable_mask) -{ -	wrmsrl(hwc->config_base + hwc->idx, hwc->config | enable_mask); -} -  static inline void x86_pmu_disable_event(struct perf_event *event)  {  	struct hw_perf_event *hwc = &event->hw;  |