KVM: Do not re-execute INTn instruction.
[linux-3.10.git] / arch / x86 / kvm / x86.h
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 #endif