# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1181035739 -3600
# Node ID 0feaf2fc75d3e05f65b840f650166b54d7d5eb8e
# Parent 4f05a587cb6b146e1a24a5a672566ac35de40b71
xen: Boot on PAE systems with no EFER MSR.
Bug tracked down by Stefan Berger.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
xen/arch/x86/boot/trampoline.S | 9 ++++++---
1 files changed, 6 insertions(+), 3 deletions(-)
diff -r 4f05a587cb6b -r 0feaf2fc75d3 xen/arch/x86/boot/trampoline.S
--- a/xen/arch/x86/boot/trampoline.S Tue Jun 05 10:08:09 2007 +0100
+++ b/xen/arch/x86/boot/trampoline.S Tue Jun 05 10:28:59 2007 +0100
@@ -60,17 +60,20 @@ trampoline_protmode_entry:
#if CONFIG_PAGING_LEVELS != 2
/* Set up EFER (Extended Feature Enable Register). */
+ mov SYM_TRAMP_PHYS(cpuid_ext_features),%edi
+ test $0x20100800,%edi /* SYSCALL/SYSRET, No Execute, Long Mode? */
+ jz .Lskip_efer
movl $MSR_EFER,%ecx
rdmsr
#if CONFIG_PAGING_LEVELS == 4
btsl $_EFER_LME,%eax /* Long Mode */
btsl $_EFER_SCE,%eax /* SYSCALL/SYSRET */
#endif
- mov SYM_TRAMP_PHYS(cpuid_ext_features),%edi
- btl $20,%edi /* CPUID 0x80000001, EDX[20] */
+ btl $20,%edi /* No Execute? */
jnc 1f
- btsl $_EFER_NX,%eax /* No-Execute */
+ btsl $_EFER_NX,%eax /* No Execute */
1: wrmsr
+.Lskip_efer:
#endif
mov $0x80050033,%eax /* hi-to-lo: PG,AM,WP,NE,ET,MP,PE */
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|