1#ifndef ARCH_X86_KVM_X86_H 2#define ARCH_X86_KVM_X86_H 3 4#include <linux/kvm_host.h> 5 6static inline void kvm_clear_exception_queue(struct kvm_vcpu *vcpu) 7{ 8 vcpu->arch.exception.pending = false; 9} 10 11static 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 19static inline void kvm_clear_interrupt_queue(struct kvm_vcpu *vcpu) 20{ 21 vcpu->arch.interrupt.pending = false; 22} 23 24static 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 30static inline bool kvm_exception_is_soft(unsigned int nr) 31{ 32 return (nr == BP_VECTOR) || (nr == OF_VECTOR); 33} 34 35struct kvm_cpuid_entry2 *kvm_find_cpuid_entry(struct kvm_vcpu *vcpu, 36 u32 function, u32 index); 37 38#endif 39