diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.9.21/0081-KVM-x86-Update-cpuid-properly-when-CR4.OSXAVE-or-CR4.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.9.21/0081-KVM-x86-Update-cpuid-properly-when-CR4.OSXAVE-or-CR4.patch | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.9.21/0081-KVM-x86-Update-cpuid-properly-when-CR4.OSXAVE-or-CR4.patch b/common/recipes-kernel/linux/linux-yocto-4.9.21/0081-KVM-x86-Update-cpuid-properly-when-CR4.OSXAVE-or-CR4.patch deleted file mode 100644 index f44b77a1..00000000 --- a/common/recipes-kernel/linux/linux-yocto-4.9.21/0081-KVM-x86-Update-cpuid-properly-when-CR4.OSXAVE-or-CR4.patch +++ /dev/null @@ -1,63 +0,0 @@ -From a41340930388022d17c5acfa7c00edc80fa486f6 Mon Sep 17 00:00:00 2001 -From: Wei Huang <wei@redhat.com> -Date: Tue, 1 May 2018 09:49:54 -0500 -Subject: [PATCH 81/93] KVM: x86: Update cpuid properly when CR4.OSXAVE or - CR4.PKE is changed -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -commit c4d2188206bafa177ea58e9a25b952baa0bf7712 upstream. - -The CPUID bits of OSXSAVE (function=0x1) and OSPKE (func=0x7, leaf=0x0) -allows user apps to detect if OS has set CR4.OSXSAVE or CR4.PKE. KVM is -supposed to update these CPUID bits when CR4 is updated. Current KVM -code doesn't handle some special cases when updates come from emulator. -Here is one example: - - Step 1: guest boots - Step 2: guest OS enables XSAVE ==> CR4.OSXSAVE=1 and CPUID.OSXSAVE=1 - Step 3: guest hot reboot ==> QEMU reset CR4 to 0, but CPUID.OSXAVE==1 - Step 4: guest os checks CPUID.OSXAVE, detects 1, then executes xgetbv - -Step 4 above will cause an #UD and guest crash because guest OS hasn't -turned on OSXAVE yet. This patch solves the problem by comparing the the -old_cr4 with cr4. If the related bits have been changed, -kvm_update_cpuid() needs to be called. - -Signed-off-by: Wei Huang <wei@redhat.com> -Reviewed-by: Bandan Das <bsd@redhat.com> -Cc: stable@vger.kernel.org -Signed-off-by: Radim Krčmář <rkrcmar@redhat.com> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> ---- - arch/x86/kvm/x86.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c -index c531231..27e6cf0 100644 ---- a/arch/x86/kvm/x86.c -+++ b/arch/x86/kvm/x86.c -@@ -7201,6 +7201,7 @@ int kvm_arch_vcpu_ioctl_set_sregs(struct kvm_vcpu *vcpu, - { - struct msr_data apic_base_msr; - int mmu_reset_needed = 0; -+ int cpuid_update_needed = 0; - int pending_vec, max_bits, idx; - struct desc_ptr dt; - -@@ -7232,8 +7233,10 @@ int kvm_arch_vcpu_ioctl_set_sregs(struct kvm_vcpu *vcpu, - vcpu->arch.cr0 = sregs->cr0; - - mmu_reset_needed |= kvm_read_cr4(vcpu) != sregs->cr4; -+ cpuid_update_needed |= ((kvm_read_cr4(vcpu) ^ sregs->cr4) & -+ (X86_CR4_OSXSAVE | X86_CR4_PKE)); - kvm_x86_ops->set_cr4(vcpu, sregs->cr4); -- if (sregs->cr4 & (X86_CR4_OSXSAVE | X86_CR4_PKE)) -+ if (cpuid_update_needed) - kvm_update_cpuid(vcpu); - - idx = srcu_read_lock(&vcpu->kvm->srcu); --- -2.7.4 - |