• K
    KVM: nSVM: If VMRUN is single-stepped, queue the #DB intercept in nested_svm_vmexit() · 9a7de6ec
    Krish Sadhukhan 提交于
    According to APM, the #DB intercept for a single-stepped VMRUN must happen
    after the completion of that instruction, when the guest does #VMEXIT to
    the host. However, in the current implementation of KVM, the #DB intercept
    for a single-stepped VMRUN happens after the completion of the instruction
    that follows the VMRUN instruction. When the #DB intercept handler is
    invoked, it shows the RIP of the instruction that follows VMRUN, instead of
    of VMRUN itself. This is an incorrect RIP as far as single-stepping VMRUN
    is concerned.
    
    This patch fixes the problem by checking, in nested_svm_vmexit(), for the
    condition that the VMRUN instruction is being single-stepped and if so,
    queues the pending #DB intercept so that the #DB is accounted for before
    we execute L1's next instruction.
    Suggested-by: NPaolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: NKrish Sadhukhan <krish.sadhukhan@oraacle.com>
    Message-Id: <20210323175006.73249-2-krish.sadhukhan@oracle.com>
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    9a7de6ec
nested.c 36.7 KB