• Nadav Amit's avatar
    KVM: x86: some apic broadcast modes does not work · 394457a9
    Nadav Amit authored
    KVM does not deliver x2APIC broadcast messages with physical mode.  Intel SDM
    (10.12.9 ICR Operation in x2APIC Mode) states: "A destination ID value of
    FFFF_FFFFH is used for broadcast of interrupts in both logical destination and
    physical destination modes."
    
    In addition, the local-apic enables cluster mode broadcast. As Intel SDM
    10.6.2.2 says: "Broadcast to all local APICs is achieved by setting all
    destination bits to one." This patch enables cluster mode broadcast.
    
    The fix tries to combine broadcast in different modes through a unified code.
    
    One rare case occurs when the source of IPI has its APIC disabled.  In such
    case, the source can still issue IPIs, but since the source is not obliged to
    have the same LAPIC mode as the enabled ones, we cannot rely on it.
    Since it is a rare case, it is unoptimized and done on the slow-path.
    Signed-off-by: default avatarNadav Amit <namit@cs.technion.ac.il>
    Reviewed-by: default avatarRadim Krčmář <rkrcmar@redhat.com>
    Reviewed-by: default avatarWanpeng Li <wanpeng.li@linux.intel.com>
    [As per Radim's review, use unsigned int for X2APIC_BROADCAST, return bool from
     kvm_apic_broadcast. - Paolo]
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    394457a9
lapic.c 48.1 KB