[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] xen: Try to work around a BIOS that disables SVM but does not lock it
This is for a particular system we found with this problem; a HP DL785 with BIOS dated 08/22/2008. Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxxxxx> diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -1145,7 +1145,18 @@ static int svm_cpu_up(void) rdmsrl(MSR_K8_VM_CR, msr_content); if ( msr_content & K8_VMCR_SVME_DISABLE ) { - printk("CPU%d: AMD SVM Extension is disabled in BIOS.\n", cpu); + /* Try to re-enable it if we're allowed */ + if ( !(msr_content & K8_VMCR_SVME_LOCK) ) + { + msr_content &= ~K8_VMCR_SVME_DISABLE; + wrmsrl(MSR_K8_VM_CR, msr_content); + rdmsrl(MSR_K8_VM_CR, msr_content); + } + if ( msr_content & K8_VMCR_SVME_DISABLE ) + { + printk("AMD SVM Extension is disabled in BIOS.\n"); + return 0; + } return -EINVAL; } diff --git a/xen/include/asm-x86/msr-index.h b/xen/include/asm-x86/msr-index.h --- a/xen/include/asm-x86/msr-index.h +++ b/xen/include/asm-x86/msr-index.h @@ -198,6 +198,8 @@ /* MSR_K8_VM_CR bits: */ #define _K8_VMCR_SVME_DISABLE 4 #define K8_VMCR_SVME_DISABLE (1 << _K8_VMCR_SVME_DISABLE) +#define _K8_VMCR_SVME_LOCK 3 +#define K8_VMCR_SVME_LOCK (1 << _K8_VMCR_SVME_LOCK) /* AMD64 MSRs */ #define MSR_AMD64_NB_CFG 0xc001001f _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |