aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/kvm/vmx.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 7d056f5385e7..c6f4ad44aa95 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -2766,8 +2766,11 @@ static void nested_vmx_setup_ctls_msrs(struct vcpu_vmx *vmx)
2766 vmx->nested.nested_vmx_ept_caps |= VMX_EPT_EXTENT_GLOBAL_BIT | 2766 vmx->nested.nested_vmx_ept_caps |= VMX_EPT_EXTENT_GLOBAL_BIT |
2767 VMX_EPT_EXTENT_CONTEXT_BIT | VMX_EPT_2MB_PAGE_BIT | 2767 VMX_EPT_EXTENT_CONTEXT_BIT | VMX_EPT_2MB_PAGE_BIT |
2768 VMX_EPT_1GB_PAGE_BIT; 2768 VMX_EPT_1GB_PAGE_BIT;
2769 if (enable_ept_ad_bits) 2769 if (enable_ept_ad_bits) {
2770 vmx->nested.nested_vmx_secondary_ctls_high |=
2771 SECONDARY_EXEC_ENABLE_PML;
2770 vmx->nested.nested_vmx_ept_caps |= VMX_EPT_AD_BIT; 2772 vmx->nested.nested_vmx_ept_caps |= VMX_EPT_AD_BIT;
2773 }
2771 } else 2774 } else
2772 vmx->nested.nested_vmx_ept_caps = 0; 2775 vmx->nested.nested_vmx_ept_caps = 0;
2773 2776
@@ -8129,7 +8132,7 @@ static bool nested_vmx_exit_handled(struct kvm_vcpu *vcpu)
8129 case EXIT_REASON_PREEMPTION_TIMER: 8132 case EXIT_REASON_PREEMPTION_TIMER:
8130 return false; 8133 return false;
8131 case EXIT_REASON_PML_FULL: 8134 case EXIT_REASON_PML_FULL:
8132 /* We don't expose PML support to L1. */ 8135 /* We emulate PML support to L1. */
8133 return false; 8136 return false;
8134 default: 8137 default:
8135 return true; 8138 return true;
@@ -9924,7 +9927,7 @@ static int prepare_vmcs02(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12,
9924 bool from_vmentry, u32 *entry_failure_code) 9927 bool from_vmentry, u32 *entry_failure_code)
9925{ 9928{
9926 struct vcpu_vmx *vmx = to_vmx(vcpu); 9929 struct vcpu_vmx *vmx = to_vmx(vcpu);
9927 u32 exec_control; 9930 u32 exec_control, vmcs12_exec_ctrl;
9928 9931
9929 vmcs_write16(GUEST_ES_SELECTOR, vmcs12->guest_es_selector); 9932 vmcs_write16(GUEST_ES_SELECTOR, vmcs12->guest_es_selector);
9930 vmcs_write16(GUEST_CS_SELECTOR, vmcs12->guest_cs_selector); 9933 vmcs_write16(GUEST_CS_SELECTOR, vmcs12->guest_cs_selector);
@@ -10055,8 +10058,11 @@ static int prepare_vmcs02(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12,
10055 SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY | 10058 SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY |
10056 SECONDARY_EXEC_APIC_REGISTER_VIRT); 10059 SECONDARY_EXEC_APIC_REGISTER_VIRT);
10057 if (nested_cpu_has(vmcs12, 10060 if (nested_cpu_has(vmcs12,
10058 CPU_BASED_ACTIVATE_SECONDARY_CONTROLS)) 10061 CPU_BASED_ACTIVATE_SECONDARY_CONTROLS)) {
10059 exec_control |= vmcs12->secondary_vm_exec_control; 10062 vmcs12_exec_ctrl = vmcs12->secondary_vm_exec_control &
10063 ~SECONDARY_EXEC_ENABLE_PML;
10064 exec_control |= vmcs12_exec_ctrl;
10065 }
10060 10066
10061 if (exec_control & SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY) { 10067 if (exec_control & SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY) {
10062 vmcs_write64(EOI_EXIT_BITMAP0, 10068 vmcs_write64(EOI_EXIT_BITMAP0,