• Jim Mattson's avatar
    kvm: x86: Introduce KVM_CAP_EXCEPTION_PAYLOAD · c4f55198
    Jim Mattson authored
    This is a per-VM capability which can be enabled by userspace so that
    the faulting linear address will be included with the information
    about a pending #PF in L2, and the "new DR6 bits" will be included
    with the information about a pending #DB in L2. With this capability
    enabled, the L1 hypervisor can now intercept #PF before CR2 is
    modified. Under VMX, the L1 hypervisor can now intercept #DB before
    DR6 and DR7 are modified.
    
    When userspace has enabled KVM_CAP_EXCEPTION_PAYLOAD, it should
    generally provide an appropriate payload when injecting a #PF or #DB
    exception via KVM_SET_VCPU_EVENTS. However, to support restoring old
    checkpoints, this payload is not required.
    
    Note that bit 16 of the "new DR6 bits" is set to indicate that a debug
    exception (#DB) or a breakpoint exception (#BP) occurred inside an RTM
    region while advanced debugging of RTM transactional regions was
    enabled. This is the reverse of DR6.RTM, which is cleared in this
    scenario.
    
    This capability also enables exception.pending in struct
    kvm_vcpu_events, which allows userspace to distinguish between pending
    and injected exceptions.
    Reported-by: default avatarJim Mattson <jmattson@google.com>
    Suggested-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: default avatarJim Mattson <jmattson@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    c4f55198
api.txt 162 KB