Re: [PATCH] KVM: LAPIC: Also cancel preemption timer when disarm LAPIC timer

From: Wanpeng Li
Date: Wed Mar 25 2020 - 20:20:57 EST


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