Re: [PATCH v3 2/2] KVM: nVMX: Fix preemption timer bit set in vmcs02 even if L1 doesn't enable it

From: Paolo Bonzini
Date: Thu Jul 07 2016 - 04:12:16 EST




On 07/07/2016 05:46, Wanpeng Li wrote:
> From: Wanpeng Li <wanpeng.li@xxxxxxxxxxx>
>
> We will go to vcpu_run() loop after L0 emulates VMRESUME which incurs
> 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.

Again, this is wrong. There is no reason why L1's APIC timer cannot be
emulated through the vmcs12's preemption timer setting. The only issue
is getting the pin-based execution controls right.

Paolo