diff options
Diffstat (limited to 'arch/x86/kvm/lapic.h')
| -rw-r--r-- | arch/x86/kvm/lapic.h | 14 | 
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/x86/kvm/lapic.h b/arch/x86/kvm/lapic.h index edce055e9fd7..ed0ed39abd36 100644 --- a/arch/x86/kvm/lapic.h +++ b/arch/x86/kvm/lapic.h @@ -16,6 +16,13 @@  #define APIC_BUS_CYCLE_NS       1  #define APIC_BUS_FREQUENCY      (1000000000ULL / APIC_BUS_CYCLE_NS) +enum lapic_mode { +	LAPIC_MODE_DISABLED = 0, +	LAPIC_MODE_INVALID = X2APIC_ENABLE, +	LAPIC_MODE_XAPIC = MSR_IA32_APICBASE_ENABLE, +	LAPIC_MODE_X2APIC = MSR_IA32_APICBASE_ENABLE | X2APIC_ENABLE, +}; +  struct kvm_timer {  	struct hrtimer timer;  	s64 period; 				/* unit: ns */ @@ -89,6 +96,7 @@ u64 kvm_get_apic_base(struct kvm_vcpu *vcpu);  int kvm_set_apic_base(struct kvm_vcpu *vcpu, struct msr_data *msr_info);  int kvm_apic_get_state(struct kvm_vcpu *vcpu, struct kvm_lapic_state *s);  int kvm_apic_set_state(struct kvm_vcpu *vcpu, struct kvm_lapic_state *s); +enum lapic_mode kvm_get_apic_mode(struct kvm_vcpu *vcpu);  int kvm_lapic_find_highest_irr(struct kvm_vcpu *vcpu);  u64 kvm_get_lapic_tscdeadline_msr(struct kvm_vcpu *vcpu); @@ -220,4 +228,10 @@ void kvm_lapic_switch_to_hv_timer(struct kvm_vcpu *vcpu);  void kvm_lapic_expired_hv_timer(struct kvm_vcpu *vcpu);  bool kvm_lapic_hv_timer_in_use(struct kvm_vcpu *vcpu);  void kvm_lapic_restart_hv_timer(struct kvm_vcpu *vcpu); + +static inline enum lapic_mode kvm_apic_mode(u64 apic_base) +{ +	return apic_base & (MSR_IA32_APICBASE_ENABLE | X2APIC_ENABLE); +} +  #endif  | 
