KVM: Change API of kvm_ioapic_get_delivery_bitmask
[safe/jmp/linux-2.6] / virt / kvm / ioapic.c
index 883fd0d..3b53712 100644 (file)
@@ -161,22 +161,22 @@ static void ioapic_inj_nmi(struct kvm_vcpu *vcpu)
        kvm_vcpu_kick(vcpu);
 }
 
-u32 kvm_ioapic_get_delivery_bitmask(struct kvm_ioapic *ioapic, u8 dest,
-                                   u8 dest_mode)
+void kvm_ioapic_get_delivery_bitmask(struct kvm_ioapic *ioapic, u8 dest,
+                                    u8 dest_mode, unsigned long *mask)
 {
-       u32 mask = 0;
        int i;
        struct kvm *kvm = ioapic->kvm;
        struct kvm_vcpu *vcpu;
 
        ioapic_debug("dest %d dest_mode %d\n", dest, dest_mode);
 
+       *mask = 0;
        if (dest_mode == 0) {   /* Physical mode. */
                if (dest == 0xFF) {     /* Broadcast. */
                        for (i = 0; i < KVM_MAX_VCPUS; ++i)
                                if (kvm->vcpus[i] && kvm->vcpus[i]->arch.apic)
-                                       mask |= 1 << i;
-                       return mask;
+                                       *mask |= 1 << i;
+                       return;
                }
                for (i = 0; i < KVM_MAX_VCPUS; ++i) {
                        vcpu = kvm->vcpus[i];
@@ -184,7 +184,7 @@ u32 kvm_ioapic_get_delivery_bitmask(struct kvm_ioapic *ioapic, u8 dest,
                                continue;
                        if (kvm_apic_match_physical_addr(vcpu->arch.apic, dest)) {
                                if (vcpu->arch.apic)
-                                       mask = 1 << i;
+                                       *mask = 1 << i;
                                break;
                        }
                }
@@ -195,10 +195,9 @@ u32 kvm_ioapic_get_delivery_bitmask(struct kvm_ioapic *ioapic, u8 dest,
                                continue;
                        if (vcpu->arch.apic &&
                            kvm_apic_match_logical_addr(vcpu->arch.apic, dest))
-                               mask |= 1 << vcpu->vcpu_id;
+                               *mask |= 1 << vcpu->vcpu_id;
                }
-       ioapic_debug("mask %x\n", mask);
-       return mask;
+       ioapic_debug("mask %x\n", *mask);
 }
 
 static int ioapic_deliver(struct kvm_ioapic *ioapic, int irq)