[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Xen unstable fails to boot from cold on i386 core duo



On Tue, Dec 18, 2007 at 12:00:57AM +0000, Daniel P. Berrange wrote:
> Converting ff16420d / vmx_cpu_up+0x25d address into a line number with 
> eu-addr2line, it appears as if Xen is crashing & burning in the 'wrmsr' 
> call in the 2nd half of this conditional from arch/x86/hvm/vmx/vmcs.c:
> 
>     if ( eax & IA32_FEATURE_CONTROL_MSR_LOCK )
>     {
>         if ( !(eax & (IA32_FEATURE_CONTROL_MSR_ENABLE_VMXON_OUTSIDE_SMX |
>                       IA32_FEATURE_CONTROL_MSR_ENABLE_VMXON_INSIDE_SMX)) )
>         {
>             printk("CPU%d: VMX disabled by BIOS.\n", cpu);
>             return 0;
>         }
>     }
>     else
>     {
>         eax = (IA32_FEATURE_CONTROL_MSR_LOCK |
>                IA32_FEATURE_CONTROL_MSR_ENABLE_VMXON_OUTSIDE_SMX |
>                IA32_FEATURE_CONTROL_MSR_ENABLE_VMXON_INSIDE_SMX);
>         wrmsr(IA32_FEATURE_CONTROL_MSR, eax, 0);
>     }

[snip]

> Is it possible that older CPUs / BIOS don't play nice with the extra bit
> 
>    IA32_FEATURE_CONTROL_MSR_ENABLE_VMXON_INSIDE_SMX
> 
> ...if they don't have SMX support ?

I have confirmed that if I modify Xen with this patch:

--- xen-unstable-16606.orig/xen/arch/x86/hvm/vmx/vmcs.c 2007-12-13 
04:31:03.000000000 -0500
+++ xen-unstable-16606/xen/arch/x86/hvm/vmx/vmcs.c      2007-12-17 
20:21:43.000000000 -0500
@@ -265,8 +265,7 @@ int vmx_cpu_up(void)
 
     if ( eax & IA32_FEATURE_CONTROL_MSR_LOCK )
     {
-        if ( !(eax & (IA32_FEATURE_CONTROL_MSR_ENABLE_VMXON_OUTSIDE_SMX |
-                      IA32_FEATURE_CONTROL_MSR_ENABLE_VMXON_INSIDE_SMX)) )
+        if ( !(eax & (IA32_FEATURE_CONTROL_MSR_ENABLE_VMXON_OUTSIDE_SMX)))
         {
             printk("CPU%d: VMX disabled by BIOS.\n", cpu);
             return 0;
@@ -275,8 +274,7 @@ int vmx_cpu_up(void)
     else
     {
         eax = (IA32_FEATURE_CONTROL_MSR_LOCK |
-               IA32_FEATURE_CONTROL_MSR_ENABLE_VMXON_OUTSIDE_SMX |
-               IA32_FEATURE_CONTROL_MSR_ENABLE_VMXON_INSIDE_SMX);
+               IA32_FEATURE_CONTROL_MSR_ENABLE_VMXON_OUTSIDE_SMX);
         wrmsr(IA32_FEATURE_CONTROL_MSR, eax, 0);
     }
 


Everything works nicely again.   Obviously this patch will break stuff
related to SMX so a better solution is required by somebody with the
knowledge in this area....

Regards,
Dan.
-- 
|=- Red Hat, Engineering, Emerging Technologies, Boston.  +1 978 392 2496 -=|
|=-           Perl modules: http://search.cpan.org/~danberr/              -=|
|=-               Projects: http://freshmeat.net/~danielpb/               -=|
|=-  GnuPG: 7D3B9505   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505  -=| 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.