• Sean Christopherson's avatar
    KVM: x86: Treat x2APIC's ICR as a 64-bit register, not two 32-bit regs · a57a3168
    Sean Christopherson authored
    
    
    Emulate the x2APIC ICR as a single 64-bit register, as opposed to forking
    it across ICR and ICR2 as two 32-bit registers.  This mirrors hardware
    behavior for Intel's upcoming IPI virtualization support, which does not
    split the access.
    
    Previous versions of Intel's SDM and AMD's APM don't explicitly state
    exactly how ICR is reflected in the vAPIC page for x2APIC, KVM just
    happened to speculate incorrectly.
    
    Handling the upcoming behavior is necessary in order to maintain
    backwards compatibility with KVM_{G,S}ET_LAPIC, e.g. failure to shuffle
    the 64-bit ICR to ICR+ICR2 and vice versa would break live migration if
    IPI virtualization support isn't symmetrical across the source and dest.
    
    Cc: Zeng Guang <guang.zeng@intel.com>
    Cc: Chao Gao <chao.gao@intel.com>
    Cc: Maxim Levitsky <mlevitsk@redhat.com>
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    Message-Id: <20220204214205.3306634-10-seanjc@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    a57a3168
lapic.c 76.3 KB