* [PATCH] KVM: x86: move steal time initialization to vcpu entry time
@ 2016-03-11 8:53 Liang Chen
2016-03-13 3:49 ` Greg KH
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Liang Chen @ 2016-03-11 8:53 UTC (permalink / raw)
To: stable; +Cc: mtosatti, pbonzini, lizefan, gregkh, jslaby, sasha.levin
From: Marcelo Tosatti <mtosatti@redhat.com>
commit 7cae2bedcbd4680b155999655e49c27b9cf020fa upstream
This patch is needed on lts 3.4, 3.10, 3.12, 3.14, 3.18, and 4.1 for
the same issue. Can you please to pick it up?
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 <mtosatti@redhat.com>
Reviewed-by: David Matlack <dmatlack@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
arch/x86/kvm/x86.c | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index d6e8bd0..7d4f352 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1987,6 +1987,8 @@ static void accumulate_steal_time(struct kvm_vcpu *vcpu)
static void record_steal_time(struct kvm_vcpu *vcpu)
{
+ accumulate_steal_time(vcpu);
+
if (!(vcpu->arch.st.msr_val & KVM_MSR_ENABLED))
return;
@@ -2120,12 +2122,6 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
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;
@@ -2808,7 +2804,6 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
vcpu->cpu = cpu;
}
- accumulate_steal_time(vcpu);
kvm_make_request(KVM_REQ_STEAL_UPDATE, vcpu);
}
--
1.9.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] KVM: x86: move steal time initialization to vcpu entry time
2016-03-11 8:53 [PATCH] KVM: x86: move steal time initialization to vcpu entry time Liang Chen
@ 2016-03-13 3:49 ` Greg KH
2016-03-14 0:41 ` Zefan Li
2016-03-15 11:37 ` Luis Henriques
2 siblings, 0 replies; 4+ messages in thread
From: Greg KH @ 2016-03-13 3:49 UTC (permalink / raw)
To: Liang Chen; +Cc: stable, mtosatti, pbonzini, lizefan, jslaby, sasha.levin
On Fri, Mar 11, 2016 at 04:53:11PM +0800, Liang Chen wrote:
> From: Marcelo Tosatti <mtosatti@redhat.com>
>
> commit 7cae2bedcbd4680b155999655e49c27b9cf020fa upstream
>
> This patch is needed on lts 3.4, 3.10, 3.12, 3.14, 3.18, and 4.1 for
> the same issue. Can you please to pick it up?
Applied to 3.10 and 3.14-stable trees now, thanks.
greg k-h
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] KVM: x86: move steal time initialization to vcpu entry time
2016-03-11 8:53 [PATCH] KVM: x86: move steal time initialization to vcpu entry time Liang Chen
2016-03-13 3:49 ` Greg KH
@ 2016-03-14 0:41 ` Zefan Li
2016-03-15 11:37 ` Luis Henriques
2 siblings, 0 replies; 4+ messages in thread
From: Zefan Li @ 2016-03-14 0:41 UTC (permalink / raw)
To: Liang Chen, stable; +Cc: mtosatti, pbonzini, gregkh, jslaby, sasha.levin
On 2016/3/11 16:53, Liang Chen wrote:
> From: Marcelo Tosatti <mtosatti@redhat.com>
>
> commit 7cae2bedcbd4680b155999655e49c27b9cf020fa upstream
>
> This patch is needed on lts 3.4, 3.10, 3.12, 3.14, 3.18, and 4.1 for
> the same issue. Can you please to pick it up?
>
Sure. I'll queue it up for 3.4.y. Thanks!
> 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 <mtosatti@redhat.com>
> Reviewed-by: David Matlack <dmatlack@google.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] KVM: x86: move steal time initialization to vcpu entry time
2016-03-11 8:53 [PATCH] KVM: x86: move steal time initialization to vcpu entry time Liang Chen
2016-03-13 3:49 ` Greg KH
2016-03-14 0:41 ` Zefan Li
@ 2016-03-15 11:37 ` Luis Henriques
2 siblings, 0 replies; 4+ messages in thread
From: Luis Henriques @ 2016-03-15 11:37 UTC (permalink / raw)
To: Liang Chen
Cc: stable, mtosatti, pbonzini, lizefan, gregkh, jslaby, sasha.levin
On Fri, Mar 11, 2016 at 04:53:11PM +0800, Liang Chen wrote:
> From: Marcelo Tosatti <mtosatti@redhat.com>
>
> commit 7cae2bedcbd4680b155999655e49c27b9cf020fa upstream
>
> This patch is needed on lts 3.4, 3.10, 3.12, 3.14, 3.18, and 4.1 for
> the same issue. Can you please to pick it up?
Thanks, I'm also including this in the 3.16 kernel.
Cheers,
--
Lu�s
>
> 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 <mtosatti@redhat.com>
> Reviewed-by: David Matlack <dmatlack@google.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> arch/x86/kvm/x86.c | 9 ++-------
> 1 file changed, 2 insertions(+), 7 deletions(-)
>
> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
> index d6e8bd0..7d4f352 100644
> --- a/arch/x86/kvm/x86.c
> +++ b/arch/x86/kvm/x86.c
> @@ -1987,6 +1987,8 @@ static void accumulate_steal_time(struct kvm_vcpu *vcpu)
>
> static void record_steal_time(struct kvm_vcpu *vcpu)
> {
> + accumulate_steal_time(vcpu);
> +
> if (!(vcpu->arch.st.msr_val & KVM_MSR_ENABLED))
> return;
>
> @@ -2120,12 +2122,6 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
> 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;
> @@ -2808,7 +2804,6 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
> vcpu->cpu = cpu;
> }
>
> - accumulate_steal_time(vcpu);
> kvm_make_request(KVM_REQ_STEAL_UPDATE, vcpu);
> }
>
> --
> 1.9.1
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe stable" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-03-15 11:37 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-11 8:53 [PATCH] KVM: x86: move steal time initialization to vcpu entry time Liang Chen
2016-03-13 3:49 ` Greg KH
2016-03-14 0:41 ` Zefan Li
2016-03-15 11:37 ` Luis Henriques
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox