aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.9.21/0013-KVM-X86-Fix-preempt-the-preemption-timer-cancel.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.9.21/0013-KVM-X86-Fix-preempt-the-preemption-timer-cancel.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.9.21/0013-KVM-X86-Fix-preempt-the-preemption-timer-cancel.patch93
1 files changed, 0 insertions, 93 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.9.21/0013-KVM-X86-Fix-preempt-the-preemption-timer-cancel.patch b/common/recipes-kernel/linux/linux-yocto-4.9.21/0013-KVM-X86-Fix-preempt-the-preemption-timer-cancel.patch
deleted file mode 100644
index 4331a9f4..00000000
--- a/common/recipes-kernel/linux/linux-yocto-4.9.21/0013-KVM-X86-Fix-preempt-the-preemption-timer-cancel.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From b541de5f53d608796a946a42f5c3251e4dd07522 Mon Sep 17 00:00:00 2001
-From: Wanpeng Li <wanpeng.li@hotmail.com>
-Date: Sat, 20 May 2017 20:32:32 -0700
-Subject: [PATCH 13/93] KVM: X86: Fix preempt the preemption timer cancel
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[ Upstream commit 5acc1ca4fb15f00bfa3d4046e35ca381bc25d580 ]
-
-Preemption can occur during cancel preemption timer, and there will be
-inconsistent status in lapic, vmx and vmcs field.
-
- CPU0 CPU1
-
- preemption timer vmexit
- handle_preemption_timer(vCPU0)
- kvm_lapic_expired_hv_timer
- vmx_cancel_hv_timer
- vmx->hv_deadline_tsc = -1
- vmcs_clear_bits
- /* hv_timer_in_use still true */
- sched_out
- sched_in
- kvm_arch_vcpu_load
- vmx_set_hv_timer
- write vmx->hv_deadline_tsc
- vmcs_set_bits
- /* back in kvm_lapic_expired_hv_timer */
- hv_timer_in_use = false
- ...
- vmx_vcpu_run
- vmx_arm_hv_run
- write preemption timer deadline
- spurious preemption timer vmexit
- handle_preemption_timer(vCPU0)
- kvm_lapic_expired_hv_timer
- WARN_ON(!apic->lapic_timer.hv_timer_in_use);
-
-This can be reproduced sporadically during boot of L2 on a
-preemptible L1, causing a splat on L1.
-
- WARNING: CPU: 3 PID: 1952 at arch/x86/kvm/lapic.c:1529 kvm_lapic_expired_hv_timer+0xb5/0xd0 [kvm]
- CPU: 3 PID: 1952 Comm: qemu-system-x86 Not tainted 4.12.0-rc1+ #24 RIP: 0010:kvm_lapic_expired_hv_timer+0xb5/0xd0 [kvm]
- Call Trace:
- handle_preemption_timer+0xe/0x20 [kvm_intel]
- vmx_handle_exit+0xc9/0x15f0 [kvm_intel]
- ? lock_acquire+0xdb/0x250
- ? lock_acquire+0xdb/0x250
- ? kvm_arch_vcpu_ioctl_run+0xdf3/0x1ce0 [kvm]
- kvm_arch_vcpu_ioctl_run+0xe55/0x1ce0 [kvm]
- kvm_vcpu_ioctl+0x384/0x7b0 [kvm]
- ? kvm_vcpu_ioctl+0x384/0x7b0 [kvm]
- ? __fget+0xf3/0x210
- do_vfs_ioctl+0xa4/0x700
- ? __fget+0x114/0x210
- SyS_ioctl+0x79/0x90
- do_syscall_64+0x8f/0x750
- ? trace_hardirqs_on_thunk+0x1a/0x1c
- entry_SYSCALL64_slow_path+0x25/0x25
-
-This patch fixes it by disabling preemption while cancelling
-preemption timer. This way cancel_hv_timer is atomic with
-respect to kvm_arch_vcpu_load.
-
-Cc: Paolo Bonzini <pbonzini@redhat.com>
-Cc: Radim Krčmář <rkrcmar@redhat.com>
-Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
-Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/x86/kvm/lapic.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
-index 3f05c04..650ff4a 100644
---- a/arch/x86/kvm/lapic.c
-+++ b/arch/x86/kvm/lapic.c
-@@ -1358,8 +1358,10 @@ EXPORT_SYMBOL_GPL(kvm_lapic_hv_timer_in_use);
-
- static void cancel_hv_tscdeadline(struct kvm_lapic *apic)
- {
-+ preempt_disable();
- kvm_x86_ops->cancel_hv_timer(apic->vcpu);
- apic->lapic_timer.hv_timer_in_use = false;
-+ preempt_enable();
- }
-
- void kvm_lapic_expired_hv_timer(struct kvm_vcpu *vcpu)
---
-2.7.4
-