KVM: x86: Disable APIC logical map if vCPUs are aliased in logical mode
Disable the optimized APIC logical map if multiple vCPUs are aliased to the same logical ID. Architecturally, all CPUs whose logical ID matches the MDA are supposed to receive the interrupt; overwriting existing map entries can result in missed IPIs. Fixes: 1e08ec4a130e ("KVM: optimize apic interrupt delivery") Signed-off-by: Sean Christopherson <seanjc@google.com> Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com> Message-Id: <20230106011306.85230-22-seanjc@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
2bf934aadc
commit
2970052481
@ -346,11 +346,12 @@ void kvm_recalculate_apic_map(struct kvm *kvm)
|
||||
if (!mask)
|
||||
continue;
|
||||
|
||||
if (!is_power_of_2(mask)) {
|
||||
ldr = ffs(mask) - 1;
|
||||
if (!is_power_of_2(mask) || cluster[ldr]) {
|
||||
new->logical_mode = KVM_APIC_MODE_MAP_DISABLED;
|
||||
continue;
|
||||
}
|
||||
cluster[ffs(mask) - 1] = apic;
|
||||
cluster[ldr] = apic;
|
||||
}
|
||||
out:
|
||||
old = rcu_dereference_protected(kvm->arch.apic_map,
|
||||
|
Loading…
x
Reference in New Issue
Block a user