This patch adds a `vcpu_id' field in `struct vcpu', so we can
differentiate BSP and APs without pointer comparison or arithmetic.
Signed-off-by: Qing He <qing.he@intel.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
 
 struct kvm_vcpu {
        struct kvm *kvm;
+       int vcpu_id;
        union {
                struct vmcs *vmcs;
                struct vcpu_svm *svm;
 
                goto out;
 
        vcpu = &kvm->vcpus[n];
+       vcpu->vcpu_id = n;
 
        mutex_lock(&vcpu->mutex);
 
 
        fx_init(vcpu);
        vcpu->fpu_active = 1;
        vcpu->apic_base = 0xfee00000 | MSR_IA32_APICBASE_ENABLE;
-       if (vcpu == &vcpu->kvm->vcpus[0])
+       if (vcpu->vcpu_id == 0)
                vcpu->apic_base |= MSR_IA32_APICBASE_BSP;
 
        return 0;
 
        vcpu->regs[VCPU_REGS_RDX] = get_rdx_init_val();
        vcpu->cr8 = 0;
        vcpu->apic_base = 0xfee00000 | MSR_IA32_APICBASE_ENABLE;
-       if (vcpu == &vcpu->kvm->vcpus[0])
+       if (vcpu->vcpu_id == 0)
                vcpu->apic_base |= MSR_IA32_APICBASE_BSP;
 
        fx_init(vcpu);