xref: /openbmc/linux/arch/x86/kvm/x86.h (revision b6dcefde)
1 #ifndef ARCH_X86_KVM_X86_H
2 #define ARCH_X86_KVM_X86_H
3 
4 #include <linux/kvm_host.h>
5 
6 static inline void kvm_clear_exception_queue(struct kvm_vcpu *vcpu)
7 {
8 	vcpu->arch.exception.pending = false;
9 }
10 
11 static inline void kvm_queue_interrupt(struct kvm_vcpu *vcpu, u8 vector,
12 	bool soft)
13 {
14 	vcpu->arch.interrupt.pending = true;
15 	vcpu->arch.interrupt.soft = soft;
16 	vcpu->arch.interrupt.nr = vector;
17 }
18 
19 static inline void kvm_clear_interrupt_queue(struct kvm_vcpu *vcpu)
20 {
21 	vcpu->arch.interrupt.pending = false;
22 }
23 
24 static inline bool kvm_event_needs_reinjection(struct kvm_vcpu *vcpu)
25 {
26 	return vcpu->arch.exception.pending || vcpu->arch.interrupt.pending ||
27 		vcpu->arch.nmi_injected;
28 }
29 
30 static inline bool kvm_exception_is_soft(unsigned int nr)
31 {
32 	return (nr == BP_VECTOR) || (nr == OF_VECTOR);
33 }
34 
35 struct kvm_cpuid_entry2 *kvm_find_cpuid_entry(struct kvm_vcpu *vcpu,
36                                              u32 function, u32 index);
37 
38 #endif
39