On Wed, 25 Mar 2020 at 23:55, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: > > On 24/03/20 07:32, Wanpeng Li wrote: > > hrtimer_cancel(&apic->lapic_timer.timer); > > + preempt_disable(); > > + if (apic->lapic_timer.hv_timer_in_use) > > + cancel_hv_timer(apic); > > + preempt_enable(); > > kvm_lapic_set_reg(apic, APIC_TMICT, 0); > > apic->lapic_timer.period = 0; > > apic->lapic_timer.tscdeadline = 0; > > There are a few other occurrences of hrtimer_cancel, and all of them > probably have a similar issue. What about adding a cancel_apic_timer Other places are a little different, here we just disarm the timer, other places we will restart the timer just after the disarm except the vCPU reset (fixed in commit 95c065400a1 (KVM: VMX: Stop the preemption timer during vCPU reset)), the restart will override vmx->hv_deadline_tsc. What do you think? I can do it if introduce cancel_apic_timer() is still better. Wanpeng