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
|