On Wed, 2022-08-31 at 00:34 +0000, Sean Christopherson wrote: > Compute the destination from ICRH using the sender's x2APIC status, not > each (potential) target's x2APIC status. > > Fixes: c514d3a348ac ("KVM: SVM: Update avic_kick_target_vcpus to support 32-bit APIC ID") > Cc: Li RongQing <lirongqing@xxxxxxxxx> > Signed-off-by: Sean Christopherson <seanjc@xxxxxxxxxx> > --- > arch/x86/kvm/svm/avic.c | 8 +------- > 1 file changed, 1 insertion(+), 7 deletions(-) > > diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c > index b59f8ee2671f..3ace0f2f52f0 100644 > --- a/arch/x86/kvm/svm/avic.c > +++ b/arch/x86/kvm/svm/avic.c > @@ -441,6 +441,7 @@ static int avic_kick_target_vcpus_fast(struct kvm *kvm, struct kvm_lapic *source > static void avic_kick_target_vcpus(struct kvm *kvm, struct kvm_lapic *source, > u32 icrl, u32 icrh, u32 index) > { > + u32 dest = apic_x2apic_mode(source) ? icrh : GET_XAPIC_DEST_FIELD(icrh); > unsigned long i; > struct kvm_vcpu *vcpu; > > @@ -456,13 +457,6 @@ static void avic_kick_target_vcpus(struct kvm *kvm, struct kvm_lapic *source, > * since entered the guest will have processed pending IRQs at VMRUN. > */ > kvm_for_each_vcpu(i, vcpu, kvm) { > - u32 dest; > - > - if (apic_x2apic_mode(vcpu->arch.apic)) > - dest = icrh; > - else > - dest = GET_XAPIC_DEST_FIELD(icrh); > - > if (kvm_apic_match_dest(vcpu, source, icrl & APIC_SHORT_MASK, > dest, icrl & APIC_DEST_MASK)) { > vcpu->arch.apic->irr_pending = true; I didn't notice this in a review, makes sense. Reviewed-by: Maxim Levitsky <mlevitsk@xxxxxxxxxx> Best regards, Maxim Levitsky