@@ -686,6 +686,8 @@ struct kvm_vcpu_events {
} nmi;
__u32 sipi_vector;
__u32 flags;
+ __u32 instruction_length; /* used by VMX */
+ __u32 reserved[9];
};
4.30 KVM_SET_VCPU_EVENTS
@@ -281,7 +281,8 @@ struct kvm_vcpu_events {
} nmi;
__u32 sipi_vector;
__u32 flags;
- __u32 reserved[10];
+ __u32 instruction_length; /* used by VMX */
+ __u32 reserved[9];
};
#endif /* _ASM_X86_KVM_H */
@@ -2134,6 +2134,8 @@ static void kvm_vcpu_ioctl_x86_get_vcpu_events(struct kvm_vcpu *vcpu,
events->nmi.pending = vcpu->arch.nmi_pending;
events->nmi.masked = kvm_x86_ops->get_nmi_mask(vcpu);
+ events->instruction_length = vcpu->arch.event_exit_inst_len;
+
events->sipi_vector = vcpu->arch.sipi_vector;
events->flags = (KVM_VCPUEVENT_VALID_NMI_PENDING
@@ -2170,6 +2172,8 @@ static int kvm_vcpu_ioctl_x86_set_vcpu_events(struct kvm_vcpu *vcpu,
if (events->flags & KVM_VCPUEVENT_VALID_SIPI_VECTOR)
vcpu->arch.sipi_vector = events->sipi_vector;
+ vcpu->arch.event_exit_inst_len = events->instruction_length;
+
vcpu_put(vcpu);
return 0;