From: Greg Kroah-Hartman Date: Sun, 13 Mar 2016 03:49:46 +0000 (-0800) Subject: 3.10-stable patches X-Git-Tag: v4.4.6~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=32436027e2c1c8a4921b4afd8ea4b8af774f9606;p=thirdparty%2Fkernel%2Fstable-queue.git 3.10-stable patches added patches: kvm-x86-move-steal-time-initialization-to-vcpu-entry-time.patch --- diff --git a/queue-3.10/kvm-x86-move-steal-time-initialization-to-vcpu-entry-time.patch b/queue-3.10/kvm-x86-move-steal-time-initialization-to-vcpu-entry-time.patch new file mode 100644 index 00000000000..d07c3503ecf --- /dev/null +++ b/queue-3.10/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 +@@ -1941,6 +1941,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; + +@@ -2074,12 +2076,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; +@@ -2758,7 +2754,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.10/series b/queue-3.10/series index 7a202d94632..3697edb5b5d 100644 --- a/queue-3.10/series +++ b/queue-3.10/series @@ -7,3 +7,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