Messages in this thread | | | Subject | Re: [PATCH v4 2/2] KVM: nVMX: Fix preemption timer bit set in vmcs02 even if L1 doesn't enable it | From | Paolo Bonzini <> | Date | Thu, 7 Jul 2016 14:29:33 +0200 |
| |
On 07/07/2016 14:18, Wanpeng Li wrote: > From: Wanpeng Li <wanpeng.li@hotmail.com> > > We will go to vcpu_run() loop after L0 emulates VMRESUME which maybe > incur kvm_sched_out and kvm_sched_in operations since cond_resched() > will be called once need resched. Preemption timer will be reprogrammed > if vCPU is scheduled to a different pCPU. Then the preemption timer > bit of vmcs02 will be set if L0 enable preemption timer to run L1 even > if L1 doesn't enable preemption timer to run L2. > > This patch fix it by don't reprogram preemption timer of vmcs02 if L1's > vCPU is scheduled on diffent pCPU when we are in the way to vmresume > nested guest, and fallback to hrtimer based emulated method. > > Cc: Paolo Bonzini <pbonzini@redhat.com> > Cc: Radim Krčmář <rkrcmar@redhat.com> > Cc: Yunhong Jiang <yunhong.jiang@intel.com> > Cc: Jan Kiszka <jan.kiszka@siemens.com> > Cc: Haozhong Zhang <haozhong.zhang@intel.com> > Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com> > --- > v3 -> v4: > * fallback to hrtimer based emulated method when in the way to vmresume nested guest > > arch/x86/kvm/x86.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index 0cc6cf8..05137c0 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -2743,8 +2743,9 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu) > mark_tsc_unstable("KVM discovered backwards TSC"); > > if (kvm_lapic_hv_timer_in_use(vcpu) && > + (is_guest_mode(vcpu) || > kvm_x86_ops->set_hv_timer(vcpu, > - kvm_get_lapic_tscdeadline_msr(vcpu))) > + kvm_get_lapic_tscdeadline_msr(vcpu)))) > kvm_lapic_switch_to_sw_timer(vcpu); > if (check_tsc_unstable()) { > u64 offset = kvm_compute_tsc_offset(vcpu, >
Thanks, this is good as a fallback. I'll try to fix it by getting the pin-based execution controls right but if I fail this patch is okay.
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
| |