Peter Xu <peterx@xxxxxxxxxx> writes: > Callers of kvm_apic_match_dest() should always pass in APIC_DEST_* > macros for either dest_mode and short_hand parameters. Fix up all the > callers of kvm_apic_match_dest() that are not following the rule. > > Reported-by: Sean Christopherson <sean.j.christopherson@xxxxxxxxx> > Reported-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> > Signed-off-by: Peter Xu <peterx@xxxxxxxxxx> > --- > arch/x86/kvm/ioapic.c | 11 +++++++---- > arch/x86/kvm/irq_comm.c | 3 ++- > 2 files changed, 9 insertions(+), 5 deletions(-) > > diff --git a/arch/x86/kvm/ioapic.c b/arch/x86/kvm/ioapic.c > index 901d85237d1c..1082ca8d11e5 100644 > --- a/arch/x86/kvm/ioapic.c > +++ b/arch/x86/kvm/ioapic.c > @@ -108,8 +108,9 @@ static void __rtc_irq_eoi_tracking_restore_one(struct kvm_vcpu *vcpu) > union kvm_ioapic_redirect_entry *e; > > e = &ioapic->redirtbl[RTC_GSI]; > - if (!kvm_apic_match_dest(vcpu, NULL, 0, e->fields.dest_id, > - e->fields.dest_mode)) > + if (!kvm_apic_match_dest(vcpu, NULL, APIC_DEST_NOSHORT, > + e->fields.dest_id, > + kvm_lapic_irq_dest_mode(e->fields.dest_mode))) > return; > > new_val = kvm_apic_pending_eoi(vcpu, e->fields.vector); > @@ -237,6 +238,7 @@ void kvm_ioapic_scan_entry(struct kvm_vcpu *vcpu, ulong *ioapic_handled_vectors) > struct dest_map *dest_map = &ioapic->rtc_status.dest_map; > union kvm_ioapic_redirect_entry *e; > int index; > + u16 dm; > > spin_lock(&ioapic->lock); > > @@ -250,8 +252,9 @@ void kvm_ioapic_scan_entry(struct kvm_vcpu *vcpu, ulong *ioapic_handled_vectors) > if (e->fields.trig_mode == IOAPIC_LEVEL_TRIG || > kvm_irq_has_notifier(ioapic->kvm, KVM_IRQCHIP_IOAPIC, index) || > index == RTC_GSI) { > - if (kvm_apic_match_dest(vcpu, NULL, 0, > - e->fields.dest_id, e->fields.dest_mode) || > + dm = kvm_lapic_irq_dest_mode(e->fields.dest_mode); Nit: you could've defined 'dm' right here in the block (after '{') but in any case I'd suggest to stick to 'dest_mode' and not shorten it to 'dm' for consistency. > + if (kvm_apic_match_dest(vcpu, NULL, APIC_DEST_NOSHORT, > + e->fields.dest_id, dm) || > kvm_apic_pending_eoi(vcpu, e->fields.vector)) > __set_bit(e->fields.vector, > ioapic_handled_vectors); > diff --git a/arch/x86/kvm/irq_comm.c b/arch/x86/kvm/irq_comm.c > index 5f59e5ebdbed..e89c2160b39f 100644 > --- a/arch/x86/kvm/irq_comm.c > +++ b/arch/x86/kvm/irq_comm.c > @@ -417,7 +417,8 @@ void kvm_scan_ioapic_routes(struct kvm_vcpu *vcpu, > > kvm_set_msi_irq(vcpu->kvm, entry, &irq); > > - if (irq.level && kvm_apic_match_dest(vcpu, NULL, 0, > + if (irq.level && > + kvm_apic_match_dest(vcpu, NULL, APIC_DEST_NOSHORT, > irq.dest_id, irq.dest_mode)) > __set_bit(irq.vector, ioapic_handled_vectors); > } Reviewed-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> -- Vitaly