Lines Matching refs:pmc
11 #define pmc_to_pmu(pmc) (&(pmc)->vcpu->arch.pmu)
91 #define kvm_for_each_pmc(pmu, pmc, i, bitmap) \
93 if (!(pmc = kvm_pmc_idx_to_pmc(pmu, i))) \
97 static inline u64 pmc_bitmask(struct kvm_pmc *pmc)
99 struct kvm_pmu *pmu = pmc_to_pmu(pmc);
101 return pmu->counter_bitmask[pmc->type];
104 static inline u64 pmc_read_counter(struct kvm_pmc *pmc)
108 counter = pmc->counter + pmc->emulated_counter;
110 if (pmc->perf_event && !pmc->is_paused)
111 counter += perf_event_read_value(pmc->perf_event,
114 return counter & pmc_bitmask(pmc);
117 void pmc_write_counter(struct kvm_pmc *pmc, u64 val);
119 static inline bool pmc_is_gp(struct kvm_pmc *pmc)
121 return pmc->type == KVM_PMC_GP;
124 static inline bool pmc_is_fixed(struct kvm_pmc *pmc)
126 return pmc->type == KVM_PMC_FIXED;
167 static inline bool pmc_speculative_in_use(struct kvm_pmc *pmc)
169 struct kvm_pmu *pmu = pmc_to_pmu(pmc);
171 if (pmc_is_fixed(pmc))
173 pmc->idx - KVM_FIXED_PMC_BASE_IDX) & 0x3;
175 return pmc->eventsel & ARCH_PERFMON_EVENTSEL_ENABLE;
228 static inline void kvm_pmu_request_counter_reprogram(struct kvm_pmc *pmc)
230 set_bit(pmc->idx, pmc_to_pmu(pmc)->reprogram_pmi);
231 kvm_make_request(KVM_REQ_PMU, pmc->vcpu);
251 static inline bool pmc_is_globally_enabled(struct kvm_pmc *pmc)
253 struct kvm_pmu *pmu = pmc_to_pmu(pmc);
258 return test_bit(pmc->idx, (unsigned long *)&pmu->global_ctrl);
263 int kvm_pmu_rdpmc(struct kvm_vcpu *vcpu, unsigned pmc, u64 *data);