KVM: nVMX: pass valid guest linear-address to the L1
authorJan Dakinevich <jan.dakinevich@gmail.com>
Sun, 4 Sep 2016 18:22:47 +0000 (21:22 +0300)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 7 Sep 2016 17:34:28 +0000 (19:34 +0200)
If EPT support is exposed to L1 hypervisor, guest linear-address field
of VMCS should contain GVA of L2, the access to which caused EPT violation.

Signed-off-by: Jan Dakinevich <jan.dakinevich@gmail.com>
Reviewed-by: Wanpeng Li <wanpeng.li@hotmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/vmx.c

index ccb0356e3f2bbb7bea632364d520d13974578b1c..4c1a814867641ebaab8761c5263813aa916cc9a5 100644 (file)
@@ -10500,6 +10500,9 @@ static void prepare_vmcs12(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12,
                vmcs12->guest_pdptr3 = vmcs_read64(GUEST_PDPTR3);
        }
 
+       if (nested_cpu_has_ept(vmcs12))
+               vmcs12->guest_linear_address = vmcs_readl(GUEST_LINEAR_ADDRESS);
+
        if (nested_cpu_has_vid(vmcs12))
                vmcs12->guest_intr_status = vmcs_read16(GUEST_INTR_STATUS);