diff options
author | Ben Hutchings <ben@decadent.org.uk> | 2019-05-07 19:43:15 +0100 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2019-05-07 19:43:15 +0100 |
commit | b89b229ea01dcddeb5590a691b2e48ae10c9901b (patch) | |
tree | 09a97ae7f3f62e038ea2993ea6045b1753c8cde3 /queue-3.16 | |
parent | ef21a9556d964e8da65ce0df6de508d5650308d7 (diff) | |
download | linux-stable-queue-b89b229ea01dcddeb5590a691b2e48ae10c9901b.tar.gz |
Add KVM regression fix
Diffstat (limited to 'queue-3.16')
-rw-r--r-- | queue-3.16/kvm-vmx-fix-x2apic-check-in-vmx_msr_bitmap_mode.patch | 44 | ||||
-rw-r--r-- | queue-3.16/series | 1 |
2 files changed, 45 insertions, 0 deletions
diff --git a/queue-3.16/kvm-vmx-fix-x2apic-check-in-vmx_msr_bitmap_mode.patch b/queue-3.16/kvm-vmx-fix-x2apic-check-in-vmx_msr_bitmap_mode.patch new file mode 100644 index 00000000..900344e3 --- /dev/null +++ b/queue-3.16/kvm-vmx-fix-x2apic-check-in-vmx_msr_bitmap_mode.patch @@ -0,0 +1,44 @@ +From: Joerg Roedel <jroedel@suse.de> +Date: Thu, 21 Feb 2019 15:30:48 +0000 +Subject: KVM: VMX: Fix x2apic check in vmx_msr_bitmap_mode() + +The stable backport of upstream commit + + 904e14fb7cb96 KVM: VMX: make MSR bitmaps per-VCPU + +has a bug in vmx_msr_bitmap_mode(). It enables the x2apic +MSR-bitmap when the kernel emulates x2apic for the guest in +software. The upstream version of the commit checkes whether +the hardware has virtualization enabled for x2apic +emulation. + +Since KVM emulates x2apic for guests even when the host does +not support x2apic in hardware, this causes the intercept of +at least the X2APIC_TASKPRI MSR to be disabled on machines +not supporting that MSR. The result is undefined behavior, +on some machines (Intel Westmere based) it causes a crash of +the guest kernel when it tries to access that MSR. + +Change the check in vmx_msr_bitmap_mode() to match the upstream +code. This fixes the guest crashes observed with stable +kernels starting with v4.4.168 through v4.4.175. + +Signed-off-by: Joerg Roedel <jroedel@suse.de> +Signed-off-by: Ben Hutchings <ben@decadent.org.uk> +--- + arch/x86/kvm/vmx.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/arch/x86/kvm/vmx.c ++++ b/arch/x86/kvm/vmx.c +@@ -4224,7 +4224,9 @@ static u8 vmx_msr_bitmap_mode(struct kvm + { + u8 mode = 0; + +- if (irqchip_in_kernel(vcpu->kvm) && apic_x2apic_mode(vcpu->arch.apic)) { ++ if (cpu_has_secondary_exec_ctrls() && ++ (vmcs_read32(SECONDARY_VM_EXEC_CONTROL) & ++ SECONDARY_EXEC_VIRTUALIZE_X2APIC_MODE)) { + mode |= MSR_BITMAP_MODE_X2APIC; + if (enable_apicv) + mode |= MSR_BITMAP_MODE_X2APIC_APICV; diff --git a/queue-3.16/series b/queue-3.16/series index 4fa59399..c54b617e 100644 --- a/queue-3.16/series +++ b/queue-3.16/series @@ -4,3 +4,4 @@ inet-update-the-ip-id-generation-algorithm-to-higher-standards.patch spi-omap-100k-remove-unused-definitions.patch vxlan-fix-big-endian-declaration-of-vni.patch ipv4-fix-a-race-in-update_or_create_fnhe.patch +kvm-vmx-fix-x2apic-check-in-vmx_msr_bitmap_mode.patch |