blob: 19bf0172f93b383b10d23d882759bb63cd4248ab [file] [log] [blame]
Wei Huang474a5bb2015-06-19 13:54:23 +02001#ifndef __KVM_X86_PMU_H
2#define __KVM_X86_PMU_H
3
4#define vcpu_to_pmu(vcpu) (&(vcpu)->arch.pmu)
5#define pmu_to_vcpu(pmu) (container_of((pmu), struct kvm_vcpu, arch.pmu))
6#define pmc_to_pmu(pmc) (&(pmc)->vcpu->arch.pmu)
7
8struct kvm_event_hw_type_mapping {
9 u8 eventsel;
10 u8 unit_mask;
11 unsigned event_type;
12};
13
14void kvm_pmu_deliver_pmi(struct kvm_vcpu *vcpu);
15void kvm_pmu_handle_event(struct kvm_vcpu *vcpu);
16int kvm_pmu_rdpmc(struct kvm_vcpu *vcpu, unsigned pmc, u64 *data);
17int kvm_pmu_is_valid_msr_idx(struct kvm_vcpu *vcpu, unsigned idx);
18bool kvm_pmu_is_valid_msr(struct kvm_vcpu *vcpu, u32 msr);
19int kvm_pmu_get_msr(struct kvm_vcpu *vcpu, u32 msr, u64 *data);
20int kvm_pmu_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info);
21void kvm_pmu_refresh(struct kvm_vcpu *vcpu);
22void kvm_pmu_reset(struct kvm_vcpu *vcpu);
23void kvm_pmu_init(struct kvm_vcpu *vcpu);
24void kvm_pmu_destroy(struct kvm_vcpu *vcpu);
25
26#endif /* __KVM_X86_PMU_H */