From: Greg Kroah-Hartman Date: Sun, 13 Mar 2016 03:49:47 +0000 (-0800) Subject: 3.14-stable patches X-Git-Tag: v4.4.6~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ad5ae22803c53ec9d9cf3edcb1235955e85a13e1;p=thirdparty%2Fkernel%2Fstable-queue.git 3.14-stable patches added patches: kvm-x86-move-steal-time-initialization-to-vcpu-entry-time.patch --- diff --git a/queue-3.14/kvm-x86-move-steal-time-initialization-to-vcpu-entry-time.patch b/queue-3.14/kvm-x86-move-steal-time-initialization-to-vcpu-entry-time.patch new file mode 100644 index 00000000000..f6901511a22 --- /dev/null +++ b/queue-3.14/kvm-x86-move-steal-time-initialization-to-vcpu-entry-time.patch @@ -0,0 +1,61 @@ +From 7cae2bedcbd4680b155999655e49c27b9cf020fa Mon Sep 17 00:00:00 2001 +From: Marcelo Tosatti +Date: Wed, 14 Oct 2015 19:33:09 -0300 +Subject: KVM: x86: move steal time initialization to vcpu entry time + +From: Marcelo Tosatti + +commit 7cae2bedcbd4680b155999655e49c27b9cf020fa upstream. + +As reported at https://bugs.launchpad.net/qemu/+bug/1494350, +it is possible to have vcpu->arch.st.last_steal initialized +from a thread other than vcpu thread, say the iothread, via +KVM_SET_MSRS. + +Which can cause an overflow later (when subtracting from vcpu threads +sched_info.run_delay). + +To avoid that, move steal time accumulation to vcpu entry time, +before copying steal time data to guest. + +Signed-off-by: Marcelo Tosatti +Reviewed-by: David Matlack +Signed-off-by: Paolo Bonzini +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kvm/x86.c | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) + +--- a/arch/x86/kvm/x86.c ++++ b/arch/x86/kvm/x86.c +@@ -1991,6 +1991,8 @@ static void accumulate_steal_time(struct + + static void record_steal_time(struct kvm_vcpu *vcpu) + { ++ accumulate_steal_time(vcpu); ++ + if (!(vcpu->arch.st.msr_val & KVM_MSR_ENABLED)) + return; + +@@ -2123,12 +2125,6 @@ int kvm_set_msr_common(struct kvm_vcpu * + if (!(data & KVM_MSR_ENABLED)) + break; + +- vcpu->arch.st.last_steal = current->sched_info.run_delay; +- +- preempt_disable(); +- accumulate_steal_time(vcpu); +- preempt_enable(); +- + kvm_make_request(KVM_REQ_STEAL_UPDATE, vcpu); + + break; +@@ -2818,7 +2814,6 @@ void kvm_arch_vcpu_load(struct kvm_vcpu + vcpu->cpu = cpu; + } + +- accumulate_steal_time(vcpu); + kvm_make_request(KVM_REQ_STEAL_UPDATE, vcpu); + } + diff --git a/queue-3.14/series b/queue-3.14/series index 1ea95521b32..5fd779e0b93 100644 --- a/queue-3.14/series +++ b/queue-3.14/series @@ -8,3 +8,4 @@ iwlwifi-mvm-inc-pending-frames-counter-also-when-txing-non-sta.patch mac80211-fix-use-of-uninitialised-values-in-rx-aggregation.patch mac80211-minstrel_ht-set-default-tx-aggregation-timeout-to-0.patch powerpc-fix-dedotify-for-binutils-2.26.patch +kvm-x86-move-steal-time-initialization-to-vcpu-entry-time.patch