On Wed, Apr 22, 2020 at 7:26 PM Sean Christopherson <sean.j.christopherson@xxxxxxxxx> wrote: > > Add a kvm_x86_ops hook to detect a nested pending "hypervisor timer" and > use it to effectively open a window for servicing the expired timer. > Like pending SMIs on VMX, opening a window simply means requesting an > immediate exit. > > This fixes a bug where an expired VMX preemption timer (for L2) will be > delayed and/or lost if a pending exception is injected into L2. The > pending exception is rightly prioritized by vmx_check_nested_events() > and injected into L2, with the preemption timer left pending. Because > no window opened, L2 is free to run uninterrupted. > > Fixes: f4124500c2c13 ("KVM: nVMX: Fully emulate preemption timer") > Reported-by: Jim Mattson <jmattson@xxxxxxxxxx> > Cc: Oliver Upton <oupton@xxxxxxxxxx> > Cc: Peter Shier <pshier@xxxxxxxxxx> > Signed-off-by: Sean Christopherson <sean.j.christopherson@xxxxxxxxx> Reviewed-by: Jim Mattson <jmattson@xxxxxxxxxx>