On 30.10.2008, at 20:16, Anthony Liguori wrote:

Alexander Graf wrote:
Normally setting the SVME bit in EFER is not allowed, as we did
not support SVM. Not since we do, we should also allow enabling
SVM mode.

v2 comes as last patch, so we don't enable half-ready code
v4 introduces a module option to enable SVM

Signed-off-by: Alexander Graf <[EMAIL PROTECTED]>
---
arch/x86/kvm/svm.c |    6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 4582699..1e63860 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -68,6 +68,9 @@ static int npt = 1;
 module_param(npt, int, S_IRUGO);
+static int nested = 0;
+module_param(nested, int, S_IRUGO);


Instead of doing this as a module parameter, we could either avoid advertising SVM support in cpuid from userspace or we could disable SVM in the BIOS.

I really like the later approach because it gives a better error message within the guest. We could also keep the module parameter but it would be nice to support disabling SVM in userspace too.

That's a really good idea. We'd only have to check the MSR value on EFER set, to know if setting SVME is allowed. That would allow for a really easy control over the SVM feature on a per-guest basis and from userspace.

Cool,

Alex

Regards,

Anthony Liguori

static void kvm_reput_irq(struct vcpu_svm *svm);
static void svm_flush_tlb(struct kvm_vcpu *vcpu);
@@ -457,6 +460,9 @@ static __init int svm_hardware_setup(void)
        if (boot_cpu_has(X86_FEATURE_NX))
                kvm_enable_efer_bits(EFER_NX);
+       if (nested)
+               kvm_enable_efer_bits(MSR_EFER_SVME_MASK);
+
        for_each_online_cpu(cpu) {
                r = svm_cpu_init(cpu);
                if (r)



--
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

Reply via email to