summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAvi Kivity <avi@qumranet.com>2007-06-13 18:43:19 +0200
committerAvi Kivity <avi@qumranet.com>2007-07-16 11:05:47 +0200
commit94cea1bb9d050c3200b36420cc03ba744dfd4338 (patch)
tree7709ef3d5bd40be22ff27bb99dbbe374ef88c86c /drivers
parentKVM: VMX: Replace memset(<addr>, 0, PAGESIZE) with clear_page(<addr>) (diff)
downloadlinux-94cea1bb9d050c3200b36420cc03ba744dfd4338.tar.xz
linux-94cea1bb9d050c3200b36420cc03ba744dfd4338.zip
KVM: Initialize the BSP bit in the APIC_BASE msr correctly
Needs to be set on vcpu 0 only. Signed-off-by: Avi Kivity <avi@qumranet.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/kvm/svm.c6
-rw-r--r--drivers/kvm/vmx.c6
2 files changed, 6 insertions, 6 deletions
diff --git a/drivers/kvm/svm.c b/drivers/kvm/svm.c
index 68841ef671b9..62ec38c7027b 100644
--- a/drivers/kvm/svm.c
+++ b/drivers/kvm/svm.c
@@ -589,9 +589,9 @@ static int svm_create_vcpu(struct kvm_vcpu *vcpu)
fx_init(vcpu);
vcpu->fpu_active = 1;
- vcpu->apic_base = 0xfee00000 |
- /*for vcpu 0*/ MSR_IA32_APICBASE_BSP |
- MSR_IA32_APICBASE_ENABLE;
+ vcpu->apic_base = 0xfee00000 | MSR_IA32_APICBASE_ENABLE;
+ if (vcpu == &vcpu->kvm->vcpus[0])
+ vcpu->apic_base |= MSR_IA32_APICBASE_BSP;
return 0;
diff --git a/drivers/kvm/vmx.c b/drivers/kvm/vmx.c
index b909b5455675..0b2aace70aec 100644
--- a/drivers/kvm/vmx.c
+++ b/drivers/kvm/vmx.c
@@ -1238,9 +1238,9 @@ static int vmx_vcpu_setup(struct kvm_vcpu *vcpu)
memset(vcpu->regs, 0, sizeof(vcpu->regs));
vcpu->regs[VCPU_REGS_RDX] = get_rdx_init_val();
vcpu->cr8 = 0;
- vcpu->apic_base = 0xfee00000 |
- /*for vcpu 0*/ MSR_IA32_APICBASE_BSP |
- MSR_IA32_APICBASE_ENABLE;
+ vcpu->apic_base = 0xfee00000 | MSR_IA32_APICBASE_ENABLE;
+ if (vcpu == &vcpu->kvm->vcpus[0])
+ vcpu->apic_base |= MSR_IA32_APICBASE_BSP;
fx_init(vcpu);