|
@@ -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;
|