aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/kvm/x86.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 1d27a57026ab..2b1c9f2fb8dd 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -2100,14 +2100,17 @@ static void kvm_vcpu_ioctl_x86_get_vcpu_events(struct kvm_vcpu *vcpu,
2100{ 2100{
2101 vcpu_load(vcpu); 2101 vcpu_load(vcpu);
2102 2102
2103 events->exception.injected = vcpu->arch.exception.pending; 2103 events->exception.injected =
2104 vcpu->arch.exception.pending &&
2105 !kvm_exception_is_soft(vcpu->arch.exception.nr);
2104 events->exception.nr = vcpu->arch.exception.nr; 2106 events->exception.nr = vcpu->arch.exception.nr;
2105 events->exception.has_error_code = vcpu->arch.exception.has_error_code; 2107 events->exception.has_error_code = vcpu->arch.exception.has_error_code;
2106 events->exception.error_code = vcpu->arch.exception.error_code; 2108 events->exception.error_code = vcpu->arch.exception.error_code;
2107 2109
2108 events->interrupt.injected = vcpu->arch.interrupt.pending; 2110 events->interrupt.injected =
2111 vcpu->arch.interrupt.pending && !vcpu->arch.interrupt.soft;
2109 events->interrupt.nr = vcpu->arch.interrupt.nr; 2112 events->interrupt.nr = vcpu->arch.interrupt.nr;
2110 events->interrupt.soft = vcpu->arch.interrupt.soft; 2113 events->interrupt.soft = 0;
2111 2114
2112 events->nmi.injected = vcpu->arch.nmi_injected; 2115 events->nmi.injected = vcpu->arch.nmi_injected;
2113 events->nmi.pending = vcpu->arch.nmi_pending; 2116 events->nmi.pending = vcpu->arch.nmi_pending;