Yang, Sheng wrote:
On Tuesday 15 July 2008 02:36:36 Joerg Roedel wrote:
If NPT is enabled after loading both KVM modules on AMD and it
should be disabled, both KVM modules must be reloaded. If only the
architecture module is reloaded the behavior is undefined. With
this patch it is possible to disable NPT only by reloading the
kvm_amd module.
Signed-off-by: Joerg Roedel <[EMAIL PROTECTED]>
---
From 3dd7fa4abb1cfc702b3fbd7038d585b541f981a4 Mon Sep 17 00:00:00 2001
From: Sheng Yang <[EMAIL PROTECTED]>
Date: Tue, 15 Jul 2008 14:18:29 +0800
Subject: [PATCH] KVM: VMX: Fix undefined beaviour of EPT after reload
kvm-intel.ko
Based on Joerg Roedel's fix for NPT.
Thanks Joerg!
Signed-off-by: Sheng Yang <[EMAIL PROTECTED]>
---
arch/x86/kvm/vmx.c | 15 +++++++++------
1 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 5f807e3..374e1ca 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -3108,14 +3108,17 @@ static struct kvm_vcpu *vmx_create_vcpu(struct
kvm *kvm, unsigned int id)
return ERR_PTR(-ENOMEM);
allocate_vpid(vmx);
- if (id == 0 && vm_need_ept()) {
- kvm_mmu_set_base_ptes(VMX_EPT_READABLE_MASK |
- VMX_EPT_WRITABLE_MASK |
- VMX_EPT_DEFAULT_MT << VMX_EPT_MT_EPTE_SHIFT);
- kvm_mmu_set_mask_ptes(0ull, VMX_EPT_FAKE_ACCESSED_MASK,
+ if (id == 0) {
+ if (vm_need_ept()) {
+ kvm_mmu_set_base_ptes(VMX_EPT_READABLE_MASK |
+ VMX_EPT_WRITABLE_MASK |
+ VMX_EPT_DEFAULT_MT << VMX_EPT_MT_EPTE_SHIFT);
+ kvm_mmu_set_mask_ptes(0ull, VMX_EPT_FAKE_ACCESSED_MASK,
VMX_EPT_FAKE_DIRTY_MASK, 0ull,
VMX_EPT_EXECUTABLE_MASK);
- kvm_enable_tdp();
+ kvm_enable_tdp();
+ } else
+ kvm_disable_tdp();
}
hmm, what is this code doing in vmx_create_vcpu()? surely vmx_init() is
a better place?
--
Do not meddle in the internals of kernels, for they are subtle and quick to
panic.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html