On Wed, 2022-08-31 at 00:35 +0000, Sean Christopherson wrote: > Explicitly skip the optimized map setup if the vCPU's LDR is '0', i.e. if > the vCPU will never response to logical mode interrupts. KVM already > skips setup in this case, but relies on kvm_apic_map_get_logical_dest() > to generate mask==0. KVM still needs the mask=0 check as a non-zero LDR > can yield mask==0 depending on the mode, but explicitly handling the LDR > will make it simpler to clean up the logical mode tracking in the future. If I am not mistaken, the commit description is a bit misleading - in this case we just don't add the vCPU to the map since it is unreachable, but we do continue creating the map. Best regards, MaxiM Levitsky > > No functional change intended. > > Signed-off-by: Sean Christopherson <seanjc@xxxxxxxxxx> > --- > arch/x86/kvm/lapic.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c > index c224b5c7cd92..8209caffe3ab 100644 > --- a/arch/x86/kvm/lapic.c > +++ b/arch/x86/kvm/lapic.c > @@ -318,10 +318,12 @@ void kvm_recalculate_apic_map(struct kvm *kvm) > continue; > > ldr = kvm_lapic_get_reg(apic, APIC_LDR); > + if (!ldr) > + continue; > > if (apic_x2apic_mode(apic)) { > new->mode |= KVM_APIC_MODE_X2APIC; > - } else if (ldr) { > + } else { > ldr = GET_APIC_LOGICAL_ID(ldr); > if (kvm_lapic_get_reg(apic, APIC_DFR) == APIC_DFR_FLAT) > new->mode |= KVM_APIC_MODE_XAPIC_FLAT;