| #ifndef ARCH_X86_KVM_X86_H |
| #define ARCH_X86_KVM_X86_H |
| |
| #include <linux/kvm_host.h> |
| |
| static inline void kvm_clear_exception_queue(struct kvm_vcpu *vcpu) |
| { |
| vcpu->arch.exception.pending = false; |
| } |
| |
| static inline void kvm_queue_interrupt(struct kvm_vcpu *vcpu, u8 vector, |
| bool soft) |
| { |
| vcpu->arch.interrupt.pending = true; |
| vcpu->arch.interrupt.soft = soft; |
| vcpu->arch.interrupt.nr = vector; |
| } |
| |
| static inline void kvm_clear_interrupt_queue(struct kvm_vcpu *vcpu) |
| { |
| vcpu->arch.interrupt.pending = false; |
| } |
| |
| static inline bool kvm_event_needs_reinjection(struct kvm_vcpu *vcpu) |
| { |
| return vcpu->arch.exception.pending || vcpu->arch.interrupt.pending || |
| vcpu->arch.nmi_injected; |
| } |
| |
| static inline bool kvm_exception_is_soft(unsigned int nr) |
| { |
| return (nr == BP_VECTOR) || (nr == OF_VECTOR); |
| } |
| #endif |