[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] xen: provide pse36 cpuid bit
# HG changeset patch # User Tim Deegan <tim@xxxxxxx> # Date 1320322763 0 # Node ID 17ee4c213438a4d35cd2e4efe494ad3321cf6c32 # Parent 54a5e994a241a506900ee0e197bb42e5f1d8e759 xen: provide pse36 cpuid bit Provide pse36 cpuid bit if guest runs in 32bit PAE or in long mode. Hyper-V refuses to start as the "cpu does not provide required hw features" if it does not find the pse36 cpuid bits. Signed-off-by: Christoph Egger <Christoph.Egger@xxxxxxx> Acked-by: Tim Deegan <tim@xxxxxxx> Committed-by: Tim Deegan <tim@xxxxxxx> --- diff -r 54a5e994a241 -r 17ee4c213438 tools/libxc/xc_cpuid_x86.c --- a/tools/libxc/xc_cpuid_x86.c Wed Nov 02 17:09:09 2011 +0000 +++ b/tools/libxc/xc_cpuid_x86.c Thu Nov 03 12:19:23 2011 +0000 @@ -98,7 +98,6 @@ if ( !is_pae ) clear_bit(X86_FEATURE_PAE, regs[3]); - clear_bit(X86_FEATURE_PSE36, regs[3]); /* Filter all other features according to a whitelist. */ regs[2] &= ((is_64bit ? bitmaskof(X86_FEATURE_LAHF_LM) : 0) | @@ -340,6 +339,7 @@ bitmaskof(X86_FEATURE_CMOV) | bitmaskof(X86_FEATURE_PAT) | bitmaskof(X86_FEATURE_CLFLSH) | + bitmaskof(X86_FEATURE_PSE36) | bitmaskof(X86_FEATURE_MMX) | bitmaskof(X86_FEATURE_FXSR) | bitmaskof(X86_FEATURE_XMM) | @@ -349,8 +349,10 @@ /* We always support MTRR MSRs. */ regs[3] |= bitmaskof(X86_FEATURE_MTRR); - if ( !is_pae ) + if ( !is_pae ) { clear_bit(X86_FEATURE_PAE, regs[3]); + clear_bit(X86_FEATURE_PSE36, regs[3]); + } break; case 0x00000007: /* Intel-defined CPU features */ @@ -372,8 +374,10 @@ break; case 0x80000001: - if ( !is_pae ) + if ( !is_pae ) { clear_bit(X86_FEATURE_NX, regs[3]); + clear_bit(X86_FEATURE_PSE36, regs[3]); + } break; case 0x80000007: diff -r 54a5e994a241 -r 17ee4c213438 xen/arch/x86/hvm/hvm.c --- a/xen/arch/x86/hvm/hvm.c Wed Nov 02 17:09:09 2011 +0000 +++ b/xen/arch/x86/hvm/hvm.c Thu Nov 03 12:19:23 2011 +0000 @@ -2409,6 +2409,10 @@ if ( xsave_enabled(v) ) *ecx |= (v->arch.hvm_vcpu.guest_cr[4] & X86_CR4_OSXSAVE) ? cpufeat_mask(X86_FEATURE_OSXSAVE) : 0; + + /* Only provide PSE36 when guest runs in 32bit PAE or in long mode */ + if ( !(hvm_pae_enabled(v) || hvm_long_mode_enabled(v)) ) + *edx &= ~cpufeat_mask(X86_FEATURE_PSE36); break; case 0x7: if ( (count == 0) && !cpu_has_smep ) @@ -2447,6 +2451,9 @@ /* Hide 1GB-superpage feature if we can't emulate it. */ if (!hvm_pse1gb_supported(d)) *edx &= ~cpufeat_mask(X86_FEATURE_PAGE1GB); + /* Only provide PSE36 when guest runs in 32bit PAE or in long mode */ + if ( !(hvm_pae_enabled(v) || hvm_long_mode_enabled(v)) ) + *edx &= ~cpufeat_mask(X86_FEATURE_PSE36); break; } } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |