|
@@ -2411,7 +2411,7 @@ static int vmx_vcpu_reset(struct kvm_vcpu *vcpu)
|
|
vmx->vcpu.arch.regs[VCPU_REGS_RDX] = get_rdx_init_val();
|
|
vmx->vcpu.arch.regs[VCPU_REGS_RDX] = get_rdx_init_val();
|
|
kvm_set_cr8(&vmx->vcpu, 0);
|
|
kvm_set_cr8(&vmx->vcpu, 0);
|
|
msr = 0xfee00000 | MSR_IA32_APICBASE_ENABLE;
|
|
msr = 0xfee00000 | MSR_IA32_APICBASE_ENABLE;
|
|
- if (vmx->vcpu.vcpu_id == 0)
|
|
|
|
|
|
+ if (kvm_vcpu_is_bsp(&vmx->vcpu))
|
|
msr |= MSR_IA32_APICBASE_BSP;
|
|
msr |= MSR_IA32_APICBASE_BSP;
|
|
kvm_set_apic_base(&vmx->vcpu, msr);
|
|
kvm_set_apic_base(&vmx->vcpu, msr);
|
|
|
|
|
|
@@ -2422,7 +2422,7 @@ static int vmx_vcpu_reset(struct kvm_vcpu *vcpu)
|
|
* GUEST_CS_BASE should really be 0xffff0000, but VT vm86 mode
|
|
* GUEST_CS_BASE should really be 0xffff0000, but VT vm86 mode
|
|
* insists on having GUEST_CS_BASE == GUEST_CS_SELECTOR << 4. Sigh.
|
|
* insists on having GUEST_CS_BASE == GUEST_CS_SELECTOR << 4. Sigh.
|
|
*/
|
|
*/
|
|
- if (vmx->vcpu.vcpu_id == 0) {
|
|
|
|
|
|
+ if (kvm_vcpu_is_bsp(&vmx->vcpu)) {
|
|
vmcs_write16(GUEST_CS_SELECTOR, 0xf000);
|
|
vmcs_write16(GUEST_CS_SELECTOR, 0xf000);
|
|
vmcs_writel(GUEST_CS_BASE, 0x000f0000);
|
|
vmcs_writel(GUEST_CS_BASE, 0x000f0000);
|
|
} else {
|
|
} else {
|
|
@@ -2451,7 +2451,7 @@ static int vmx_vcpu_reset(struct kvm_vcpu *vcpu)
|
|
vmcs_writel(GUEST_SYSENTER_EIP, 0);
|
|
vmcs_writel(GUEST_SYSENTER_EIP, 0);
|
|
|
|
|
|
vmcs_writel(GUEST_RFLAGS, 0x02);
|
|
vmcs_writel(GUEST_RFLAGS, 0x02);
|
|
- if (vmx->vcpu.vcpu_id == 0)
|
|
|
|
|
|
+ if (kvm_vcpu_is_bsp(&vmx->vcpu))
|
|
kvm_rip_write(vcpu, 0xfff0);
|
|
kvm_rip_write(vcpu, 0xfff0);
|
|
else
|
|
else
|
|
kvm_rip_write(vcpu, 0);
|
|
kvm_rip_write(vcpu, 0);
|