Wei Huang | 474a5bb | 2015-06-19 13:54:23 +0200 | [diff] [blame] | 1 | #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 | |
| 8 | struct kvm_event_hw_type_mapping { |
| 9 | u8 eventsel; |
| 10 | u8 unit_mask; |
| 11 | unsigned event_type; |
| 12 | }; |
| 13 | |
| 14 | void kvm_pmu_deliver_pmi(struct kvm_vcpu *vcpu); |
| 15 | void kvm_pmu_handle_event(struct kvm_vcpu *vcpu); |
| 16 | int kvm_pmu_rdpmc(struct kvm_vcpu *vcpu, unsigned pmc, u64 *data); |
| 17 | int kvm_pmu_is_valid_msr_idx(struct kvm_vcpu *vcpu, unsigned idx); |
| 18 | bool kvm_pmu_is_valid_msr(struct kvm_vcpu *vcpu, u32 msr); |
| 19 | int kvm_pmu_get_msr(struct kvm_vcpu *vcpu, u32 msr, u64 *data); |
| 20 | int kvm_pmu_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info); |
| 21 | void kvm_pmu_refresh(struct kvm_vcpu *vcpu); |
| 22 | void kvm_pmu_reset(struct kvm_vcpu *vcpu); |
| 23 | void kvm_pmu_init(struct kvm_vcpu *vcpu); |
| 24 | void kvm_pmu_destroy(struct kvm_vcpu *vcpu); |
| 25 | |
| 26 | #endif /* __KVM_X86_PMU_H */ |