Re: [PATCH RESEND v2] KVM: LAPIC: Enable timer posted-interrupt when mwait/hlt is advertised

From: Wanpeng Li
Date: Tue Feb 01 2022 - 08:57:33 EST


On Tue, 1 Feb 2022 at 20:11, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote:
>
> On 1/25/22 13:08, Wanpeng Li wrote:
> > As commit 0c5f81dad46 (KVM: LAPIC: Inject timer interrupt via posted interrupt)
> > mentioned that the host admin should well tune the guest setup, so that vCPUs
> > are placed on isolated pCPUs, and with several pCPUs surplus for*busy* housekeeping.
> > It is better to disable mwait/hlt/pause vmexits to keep the vCPUs in non-root
> > mode. However, we may isolate pCPUs for other purpose like DPDK or we can make
> > some guests isolated and others not, we may lose vmx preemption timer/timer fastpath
> > due to not well tuned setup, and the checking in kvm_can_post_timer_interrupt()
> > is not enough. Let's guarantee mwait/hlt is advertised before enabling posted-interrupt
> > interrupt. vmx preemption timer/timer fastpath can continue to work if both of them
> > are not advertised.
>
> Is this the same thing that you meant?
>
> --------
> As commit 0c5f81dad46 ("KVM: LAPIC: Inject timer interrupt via posted interrupt")
> mentioned that the host admin should well tune the guest setup, so that vCPUs
> are placed on isolated pCPUs, and with several pCPUs surplus for *busy* housekeeping.
> In this setup, it is preferrable to disable mwait/hlt/pause vmexits to
> keep the vCPUs in non-root mode.
>
> However, if only some guests isolated and others not, they would not have
> any benefit from posted timer interrupts, and at the same time lose
> VMX preemption timer fast paths because kvm_can_post_timer_interrupt()
> returns true and therefore forces kvm_can_use_hv_timer() to false.
>
> By guaranteeing that posted-interrupt timer is only used if MWAIT or HLT
> are done without vmexit, KVM can make a better choice and use the
> VMX preemption timer and the corresponding fast paths.
> --------

Looks better, thanks Paolo! :)

Wanpeng