diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.9.21/0018-KVM-VMX-introduce-alloc_loaded_vmcs.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.9.21/0018-KVM-VMX-introduce-alloc_loaded_vmcs.patch | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.9.21/0018-KVM-VMX-introduce-alloc_loaded_vmcs.patch b/common/recipes-kernel/linux/linux-yocto-4.9.21/0018-KVM-VMX-introduce-alloc_loaded_vmcs.patch deleted file mode 100644 index a22f91a8..00000000 --- a/common/recipes-kernel/linux/linux-yocto-4.9.21/0018-KVM-VMX-introduce-alloc_loaded_vmcs.patch +++ /dev/null @@ -1,104 +0,0 @@ -From 80f4f0e9de9cce1047ac0aac305aca7310e37313 Mon Sep 17 00:00:00 2001 -From: Paolo Bonzini <pbonzini@redhat.com> -Date: Thu, 11 Jan 2018 12:16:15 +0100 -Subject: [PATCH 18/33] KVM: VMX: introduce alloc_loaded_vmcs - -(cherry picked from commit f21f165ef922c2146cc5bdc620f542953c41714b) - -Group together the calls to alloc_vmcs and loaded_vmcs_init. Soon we'll also -allocate an MSR bitmap there. - -Cc: stable@vger.kernel.org # prereq for Spectre mitigation -Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> -Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> ---- - arch/x86/kvm/vmx.c | 38 +++++++++++++++++++++++--------------- - 1 file changed, 23 insertions(+), 15 deletions(-) - -diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c -index 099f221..6814355 100644 ---- a/arch/x86/kvm/vmx.c -+++ b/arch/x86/kvm/vmx.c -@@ -3514,11 +3514,6 @@ static struct vmcs *alloc_vmcs_cpu(int cpu) - return vmcs; - } - --static struct vmcs *alloc_vmcs(void) --{ -- return alloc_vmcs_cpu(raw_smp_processor_id()); --} -- - static void free_vmcs(struct vmcs *vmcs) - { - free_pages((unsigned long)vmcs, vmcs_config.order); -@@ -3537,6 +3532,22 @@ static void free_loaded_vmcs(struct loaded_vmcs *loaded_vmcs) - WARN_ON(loaded_vmcs->shadow_vmcs != NULL); - } - -+static struct vmcs *alloc_vmcs(void) -+{ -+ return alloc_vmcs_cpu(raw_smp_processor_id()); -+} -+ -+static int alloc_loaded_vmcs(struct loaded_vmcs *loaded_vmcs) -+{ -+ loaded_vmcs->vmcs = alloc_vmcs(); -+ if (!loaded_vmcs->vmcs) -+ return -ENOMEM; -+ -+ loaded_vmcs->shadow_vmcs = NULL; -+ loaded_vmcs_init(loaded_vmcs); -+ return 0; -+} -+ - static void free_kvm_area(void) - { - int cpu; -@@ -6916,6 +6927,7 @@ static int handle_vmon(struct kvm_vcpu *vcpu) - struct vmcs *shadow_vmcs; - const u64 VMXON_NEEDED_FEATURES = FEATURE_CONTROL_LOCKED - | FEATURE_CONTROL_VMXON_ENABLED_OUTSIDE_SMX; -+ int r; - - /* The Intel VMX Instruction Reference lists a bunch of bits that - * are prerequisite to running VMXON, most notably cr4.VMXE must be -@@ -6955,11 +6967,9 @@ static int handle_vmon(struct kvm_vcpu *vcpu) - return 1; - } - -- vmx->nested.vmcs02.vmcs = alloc_vmcs(); -- vmx->nested.vmcs02.shadow_vmcs = NULL; -- if (!vmx->nested.vmcs02.vmcs) -+ r = alloc_loaded_vmcs(&vmx->nested.vmcs02); -+ if (r < 0) - goto out_vmcs02; -- loaded_vmcs_init(&vmx->nested.vmcs02); - - if (cpu_has_vmx_msr_bitmap()) { - vmx->nested.msr_bitmap = -@@ -9090,17 +9100,15 @@ static struct kvm_vcpu *vmx_create_vcpu(struct kvm *kvm, unsigned int id) - if (!vmx->guest_msrs) - goto free_pml; - -- vmx->loaded_vmcs = &vmx->vmcs01; -- vmx->loaded_vmcs->vmcs = alloc_vmcs(); -- vmx->loaded_vmcs->shadow_vmcs = NULL; -- if (!vmx->loaded_vmcs->vmcs) -- goto free_msrs; - if (!vmm_exclusive) - kvm_cpu_vmxon(__pa(per_cpu(vmxarea, raw_smp_processor_id()))); -- loaded_vmcs_init(vmx->loaded_vmcs); -+ err = alloc_loaded_vmcs(&vmx->vmcs01); - if (!vmm_exclusive) - kvm_cpu_vmxoff(); -+ if (err < 0) -+ goto free_msrs; - -+ vmx->loaded_vmcs = &vmx->vmcs01; - cpu = get_cpu(); - vmx_vcpu_load(&vmx->vcpu, cpu); - vmx->vcpu.cpu = cpu; --- -2.7.4 - |