> -----Original Message----- > From: Sean Christopherson <seanjc@xxxxxxxxxx> > Sent: Wednesday, August 31, 2022 8:35 AM > To: Sean Christopherson <seanjc@xxxxxxxxxx>; Paolo Bonzini > <pbonzini@xxxxxxxxxx> > Cc: kvm@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; Suravee Suthikulpanit > <suravee.suthikulpanit@xxxxxxx>; Maxim Levitsky <mlevitsk@xxxxxxxxxx>; > Li,Rongqing <lirongqing@xxxxxxxxx> > Subject: [PATCH 05/19] KVM: SVM: Compute dest based on sender's x2APIC > status for AVIC kick > > 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; > -- > 2.37.2.672.g94769d06f0-goog Reviewed-by: Li RongQing <lirongqing@xxxxxxxxx> Thanks. -Li