• Wanpeng Li's avatar
    KVM: LAPIC: Fix lapic timer injection delay · c8533544
    Wanpeng Li authored
    If the TSC deadline timer is programmed really close to the deadline or
    even in the past, the computation in vmx_set_hv_timer will program the
    absolute target tsc value to vmcs preemption timer field w/ delta == 0,
    then plays a vmentry and an upcoming vmx preemption timer fire vmexit
    dance, the lapic timer injection is delayed due to this duration. Actually
    the lapic timer which is emulated by hrtimer can handle this correctly.
    
    This patch fixes it by firing the lapic timer and injecting a timer interrupt
    immediately during the next vmentry if the TSC deadline timer is programmed
    really close to the deadline or even in the past. This saves ~300 cycles on
    the tsc_deadline_timer test of apic.flat.
    
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: default avatarWanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    c8533544
vmx.c 329 KB