KVM: nVMX: set IDTR and GDTR limits when loading L1 host state
authorLadi Prosek <lprosek@redhat.com>
Wed, 11 Oct 2017 14:54:42 +0000 (16:54 +0200)
committerBen Hutchings <ben@decadent.org.uk>
Tue, 13 Feb 2018 18:32:09 +0000 (18:32 +0000)
commit 21f2d551183847bc7fbe8d866151d00cdad18752 upstream.

Intel SDM 27.5.2 Loading Host Segment and Descriptor-Table Registers:

"The GDTR and IDTR limits are each set to FFFFH."

Signed-off-by: Ladi Prosek <lprosek@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
arch/x86/kvm/vmx.c

index 39d40ad..0b19852 100644 (file)
@@ -7076,6 +7076,8 @@ void load_vmcs12_host_state(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12)
        vmcs_writel(GUEST_SYSENTER_EIP, vmcs12->host_ia32_sysenter_eip);
        vmcs_writel(GUEST_IDTR_BASE, vmcs12->host_idtr_base);
        vmcs_writel(GUEST_GDTR_BASE, vmcs12->host_gdtr_base);
+       vmcs_write32(GUEST_IDTR_LIMIT, 0xFFFF);
+       vmcs_write32(GUEST_GDTR_LIMIT, 0xFFFF);
        vmcs_writel(GUEST_TR_BASE, vmcs12->host_tr_base);
        vmcs_writel(GUEST_GS_BASE, vmcs12->host_gs_base);
        vmcs_writel(GUEST_FS_BASE, vmcs12->host_fs_base);