diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-02 17:50:18 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-02 17:50:18 -0500 |
commit | 7a262d2ed9fa42fad8c4f243f8025580b58cf2f6 (patch) | |
tree | 82f11a11fc0bf0a9f64cad2dddbca32b78337916 | |
parent | 06f055f394da2364b944d41b9609589763ae762a (diff) | |
parent | 29bf08f12b2fd72b882da0d85b7385e4a438a297 (diff) |
Merge git://git.kernel.org/pub/scm/virt/kvm/kvm
Pull kvm bugfixes from Marcelo Tosatti.
* git://git.kernel.org/pub/scm/virt/kvm/kvm:
KVM: nVMX: Unconditionally uninit the MMU on nested vmexit
KVM: x86: Fix APIC map calculation after re-enabling
-rw-r--r-- | arch/x86/kvm/lapic.c | 8 | ||||
-rw-r--r-- | arch/x86/kvm/vmx.c | 3 |
2 files changed, 5 insertions, 6 deletions
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index dec48bfaddb8..1673940cf9c3 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c | |||
@@ -1350,6 +1350,10 @@ void kvm_lapic_set_base(struct kvm_vcpu *vcpu, u64 value) | |||
1350 | return; | 1350 | return; |
1351 | } | 1351 | } |
1352 | 1352 | ||
1353 | if (!kvm_vcpu_is_bsp(apic->vcpu)) | ||
1354 | value &= ~MSR_IA32_APICBASE_BSP; | ||
1355 | vcpu->arch.apic_base = value; | ||
1356 | |||
1353 | /* update jump label if enable bit changes */ | 1357 | /* update jump label if enable bit changes */ |
1354 | if ((vcpu->arch.apic_base ^ value) & MSR_IA32_APICBASE_ENABLE) { | 1358 | if ((vcpu->arch.apic_base ^ value) & MSR_IA32_APICBASE_ENABLE) { |
1355 | if (value & MSR_IA32_APICBASE_ENABLE) | 1359 | if (value & MSR_IA32_APICBASE_ENABLE) |
@@ -1359,10 +1363,6 @@ void kvm_lapic_set_base(struct kvm_vcpu *vcpu, u64 value) | |||
1359 | recalculate_apic_map(vcpu->kvm); | 1363 | recalculate_apic_map(vcpu->kvm); |
1360 | } | 1364 | } |
1361 | 1365 | ||
1362 | if (!kvm_vcpu_is_bsp(apic->vcpu)) | ||
1363 | value &= ~MSR_IA32_APICBASE_BSP; | ||
1364 | |||
1365 | vcpu->arch.apic_base = value; | ||
1366 | if ((old_value ^ value) & X2APIC_ENABLE) { | 1366 | if ((old_value ^ value) & X2APIC_ENABLE) { |
1367 | if (value & X2APIC_ENABLE) { | 1367 | if (value & X2APIC_ENABLE) { |
1368 | u32 id = kvm_apic_id(apic); | 1368 | u32 id = kvm_apic_id(apic); |
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index b2fe1c252f35..da7837e1349d 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c | |||
@@ -8283,8 +8283,7 @@ static void load_vmcs12_host_state(struct kvm_vcpu *vcpu, | |||
8283 | vcpu->arch.cr4_guest_owned_bits = ~vmcs_readl(CR4_GUEST_HOST_MASK); | 8283 | vcpu->arch.cr4_guest_owned_bits = ~vmcs_readl(CR4_GUEST_HOST_MASK); |
8284 | kvm_set_cr4(vcpu, vmcs12->host_cr4); | 8284 | kvm_set_cr4(vcpu, vmcs12->host_cr4); |
8285 | 8285 | ||
8286 | if (nested_cpu_has_ept(vmcs12)) | 8286 | nested_ept_uninit_mmu_context(vcpu); |
8287 | nested_ept_uninit_mmu_context(vcpu); | ||
8288 | 8287 | ||
8289 | kvm_set_cr3(vcpu, vmcs12->host_cr3); | 8288 | kvm_set_cr3(vcpu, vmcs12->host_cr3); |
8290 | kvm_mmu_reset_context(vcpu); | 8289 | kvm_mmu_reset_context(vcpu); |