Lines Matching refs:pmu
110 struct pmu *pmu;
116 struct pmu pmu;
210 static void rapl_start_hrtimer(struct rapl_pmu *pmu)
212 hrtimer_start(&pmu->hrtimer, pmu->timer_interval,
218 struct rapl_pmu *pmu = container_of(hrtimer, struct rapl_pmu, hrtimer);
222 if (!pmu->n_active)
225 raw_spin_lock_irqsave(&pmu->lock, flags);
227 list_for_each_entry(event, &pmu->active_list, active_entry)
230 raw_spin_unlock_irqrestore(&pmu->lock, flags);
232 hrtimer_forward_now(hrtimer, pmu->timer_interval);
237 static void rapl_hrtimer_init(struct rapl_pmu *pmu)
239 struct hrtimer *hr = &pmu->hrtimer;
245 static void __rapl_pmu_event_start(struct rapl_pmu *pmu,
253 list_add_tail(&event->active_entry, &pmu->active_list);
257 pmu->n_active++;
258 if (pmu->n_active == 1)
259 rapl_start_hrtimer(pmu);
264 struct rapl_pmu *pmu = event->pmu_private;
267 raw_spin_lock_irqsave(&pmu->lock, flags);
268 __rapl_pmu_event_start(pmu, event);
269 raw_spin_unlock_irqrestore(&pmu->lock, flags);
274 struct rapl_pmu *pmu = event->pmu_private;
278 raw_spin_lock_irqsave(&pmu->lock, flags);
282 WARN_ON_ONCE(pmu->n_active <= 0);
283 pmu->n_active--;
284 if (pmu->n_active == 0)
285 hrtimer_cancel(&pmu->hrtimer);
303 raw_spin_unlock_irqrestore(&pmu->lock, flags);
308 struct rapl_pmu *pmu = event->pmu_private;
312 raw_spin_lock_irqsave(&pmu->lock, flags);
317 __rapl_pmu_event_start(pmu, event);
319 raw_spin_unlock_irqrestore(&pmu->lock, flags);
333 struct rapl_pmu *pmu;
336 if (event->attr.type != rapl_pmus->pmu.type)
363 pmu = cpu_to_rapl_pmu(event->cpu);
364 if (!pmu)
366 event->cpu = pmu->cpu;
367 event->pmu_private = pmu;
546 struct rapl_pmu *pmu = cpu_to_rapl_pmu(cpu);
553 pmu->cpu = -1;
560 pmu->cpu = target;
561 perf_pmu_migrate_context(pmu->pmu, cpu, target);
568 struct rapl_pmu *pmu = cpu_to_rapl_pmu(cpu);
571 if (!pmu) {
572 pmu = kzalloc_node(sizeof(*pmu), GFP_KERNEL, cpu_to_node(cpu));
573 if (!pmu)
576 raw_spin_lock_init(&pmu->lock);
577 INIT_LIST_HEAD(&pmu->active_list);
578 pmu->pmu = &rapl_pmus->pmu;
579 pmu->timer_interval = ms_to_ktime(rapl_timer_ms);
580 rapl_hrtimer_init(pmu);
582 rapl_pmus->pmus[topology_logical_die_id(cpu)] = pmu;
594 pmu->cpu = cpu;
691 rapl_pmus->pmu.attr_groups = rapl_attr_groups;
692 rapl_pmus->pmu.attr_update = rapl_attr_update;
693 rapl_pmus->pmu.task_ctx_nr = perf_invalid_context;
694 rapl_pmus->pmu.event_init = rapl_pmu_event_init;
695 rapl_pmus->pmu.add = rapl_pmu_event_add;
696 rapl_pmus->pmu.del = rapl_pmu_event_del;
697 rapl_pmus->pmu.start = rapl_pmu_event_start;
698 rapl_pmus->pmu.stop = rapl_pmu_event_stop;
699 rapl_pmus->pmu.read = rapl_pmu_event_read;
700 rapl_pmus->pmu.module = THIS_MODULE;
701 rapl_pmus->pmu.capabilities = PERF_PMU_CAP_NO_EXCLUDE;
845 ret = perf_pmu_register(&rapl_pmus->pmu, "power", -1);
864 perf_pmu_unregister(&rapl_pmus->pmu);