Messages in this thread | | | From | Wanpeng Li <> | Date | Wed, 22 Apr 2020 09:01:52 +0800 | Subject | Re: [PATCH 2/2] KVM: VMX: Handle preemption timer fastpath |
| |
On Tue, 21 Apr 2020 at 19:40, Paolo Bonzini <pbonzini@redhat.com> wrote: > > On 21/04/20 13:20, Wanpeng Li wrote: > > + > > + if (!vmx->req_immediate_exit && > > + !unlikely(vmx->loaded_vmcs->hv_timer_soft_disabled)) { > > + if (!vmx_interrupt_allowed(vcpu) ||
For non-APICv case, we need to request interrupt-window.
> > + !apic_lvtt_tscdeadline(apic) ||
Now just add fastpath for tscdeadline mode.
> > + vmx->rmode.vm86_active || > > + is_smm(vcpu) || > > + !kvm_apic_hw_enabled(apic))
These stuff can be removed, kvm_apic_hw_enable() is check in vmx_fast_deliver_interrupt().
> > + return EXIT_FASTPATH_NONE; > > + > > + if (!apic->lapic_timer.hv_timer_in_use) > > + return EXIT_FASTPATH_CONT_RUN; > > + > > + WARN_ON(swait_active(&vcpu->wq)); > > + vmx_cancel_hv_timer(vcpu); > > + apic->lapic_timer.hv_timer_in_use = false; > > + > > + if (atomic_read(&apic->lapic_timer.pending)) > > + return EXIT_FASTPATH_CONT_RUN;
Other two checks are the same in kvm_lapic_expired_hv_timer().
Wanpeng
> > + > > + ktimer->expired_tscdeadline = ktimer->tscdeadline; > > + vmx_fast_deliver_interrupt(vcpu); > > + ktimer->tscdeadline = 0; > > + return EXIT_FASTPATH_CONT_RUN; > > + } > > + > > Can you explain all the checks you have here, and why you need something > more complex than apic_timer_expired (possibly by adding some > optimizations to kvm_apic_local_deliver)? This code is impossible to > maintain. > > Paolo >
| |