Lines Matching refs:pmc

36 	struct kvm_pmc *pmc = &pmu->pmc[select_idx];  in kvm_pmu_get_counter_value()  local
45 if (pmc->perf_event) in kvm_pmu_get_counter_value()
46 counter += perf_event_read_value(pmc->perf_event, &enabled, in kvm_pmu_get_counter_value()
49 return counter & pmc->bitmask; in kvm_pmu_get_counter_value()
73 static void kvm_pmu_stop_counter(struct kvm_vcpu *vcpu, struct kvm_pmc *pmc) in kvm_pmu_stop_counter() argument
77 if (pmc->perf_event) { in kvm_pmu_stop_counter()
78 counter = kvm_pmu_get_counter_value(vcpu, pmc->idx); in kvm_pmu_stop_counter()
79 reg = (pmc->idx == ARMV8_PMU_CYCLE_IDX) in kvm_pmu_stop_counter()
80 ? PMCCNTR_EL0 : PMEVCNTR0_EL0 + pmc->idx; in kvm_pmu_stop_counter()
82 perf_event_disable(pmc->perf_event); in kvm_pmu_stop_counter()
83 perf_event_release_kernel(pmc->perf_event); in kvm_pmu_stop_counter()
84 pmc->perf_event = NULL; in kvm_pmu_stop_counter()
99 kvm_pmu_stop_counter(vcpu, &pmu->pmc[i]); in kvm_pmu_vcpu_reset()
100 pmu->pmc[i].idx = i; in kvm_pmu_vcpu_reset()
101 pmu->pmc[i].bitmask = 0xffffffffUL; in kvm_pmu_vcpu_reset()
116 struct kvm_pmc *pmc = &pmu->pmc[i]; in kvm_pmu_vcpu_destroy() local
118 if (pmc->perf_event) { in kvm_pmu_vcpu_destroy()
119 perf_event_disable(pmc->perf_event); in kvm_pmu_vcpu_destroy()
120 perf_event_release_kernel(pmc->perf_event); in kvm_pmu_vcpu_destroy()
121 pmc->perf_event = NULL; in kvm_pmu_vcpu_destroy()
148 struct kvm_pmc *pmc; in kvm_pmu_enable_counter() local
157 pmc = &pmu->pmc[i]; in kvm_pmu_enable_counter()
158 if (pmc->perf_event) { in kvm_pmu_enable_counter()
159 perf_event_enable(pmc->perf_event); in kvm_pmu_enable_counter()
160 if (pmc->perf_event->state != PERF_EVENT_STATE_ACTIVE) in kvm_pmu_enable_counter()
177 struct kvm_pmc *pmc; in kvm_pmu_disable_counter() local
186 pmc = &pmu->pmc[i]; in kvm_pmu_disable_counter()
187 if (pmc->perf_event) in kvm_pmu_disable_counter()
188 perf_event_disable(pmc->perf_event); in kvm_pmu_disable_counter()
276 static inline struct kvm_vcpu *kvm_pmc_to_vcpu(struct kvm_pmc *pmc) in kvm_pmc_to_vcpu() argument
281 pmc -= pmc->idx; in kvm_pmc_to_vcpu()
282 pmu = container_of(pmc, struct kvm_pmu, pmc[0]); in kvm_pmc_to_vcpu()
294 struct kvm_pmc *pmc = perf_event->overflow_handler_context; in kvm_pmu_perf_overflow() local
295 struct kvm_vcpu *vcpu = kvm_pmc_to_vcpu(pmc); in kvm_pmu_perf_overflow()
296 int idx = pmc->idx; in kvm_pmu_perf_overflow()
347 struct kvm_pmc *pmc; in kvm_pmu_handle_pmcr() local
368 pmc = &pmu->pmc[ARMV8_PMU_CYCLE_IDX]; in kvm_pmu_handle_pmcr()
369 pmc->bitmask = 0xffffffffffffffffUL; in kvm_pmu_handle_pmcr()
393 struct kvm_pmc *pmc = &pmu->pmc[select_idx]; in kvm_pmu_set_counter_event_type() local
398 kvm_pmu_stop_counter(vcpu, pmc); in kvm_pmu_set_counter_event_type()
420 attr.sample_period = (-counter) & pmc->bitmask; in kvm_pmu_set_counter_event_type()
423 kvm_pmu_perf_overflow, pmc); in kvm_pmu_set_counter_event_type()
430 pmc->perf_event = event; in kvm_pmu_set_counter_event_type()