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

Re: [Fedora-xen] 2.6.31-1.2.65.xendom0.fc12.x86_64 crash on boot



On 09/15/09 04:39, Pasi Kärkkäinen wrote:
> On Tue, Sep 15, 2009 at 07:29:52AM -0400, Charles Gruener wrote:
>   
>> Thanks for the help on configuring my boot options.  I apologize that  
>> I forgot to mention I'm using the latest kernel from M. Young,  
>> 2.6.31-1.2.65.xendom0.fc12.x86_64.  Here's what I get now that I've  
>> done all of what you've said:
>>
>>     
> Ok. I've CCd Jeremy and xen-devel. 
>
> Does this crash look familiar to you Jeremy? 
>   

Does this fix it?

>From 76ca2d74040210450a670df773d760867f07d519 Mon Sep 17 00:00:00 2001
From: Jeremy Fitzhardinge <jeremy fitzhardinge citrix com>
Date: Tue, 15 Sep 2009 14:18:12 -0700
Subject: [PATCH] xen: check EFER for NX before setting up GDT mapping

x86-64 assumes NX is available by default, so we need to
explicitly check for it before using NX.  Some first-generation
Intel x86-64 processors didn't support NX, and even recent systems
allow it to be disabled in BIOS.

Signed-off-by: Jeremy Fitzhardinge <jeremy fitzhardinge citrix com>

diff --git a/arch/x86/mm/Makefile b/arch/x86/mm/Makefile
index 72bb3a2..0088329 100644
--- a/arch/x86/mm/Makefile
+++ b/arch/x86/mm/Makefile
@@ -4,6 +4,7 @@ obj-y	:=  init.o init_$(BITS).o fault.o ioremap.o extable.o pageattr.o mmap.o \
 # Make sure __phys_addr has no stackprotector
 nostackp := $(call cc-option, -fno-stack-protector)
 CFLAGS_ioremap.o		:= $(nostackp)
+CFLAGS_init.o			:= $(nostackp)
 
 obj-$(CONFIG_SMP)		+= tlb.o
 
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index 03644f9..5b55c92 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -1092,6 +1092,11 @@ asmlinkage void __init xen_start_kernel(void)
 
 	__supported_pte_mask |= _PAGE_IOMAP;
 
+#ifdef CONFIG_X86_64
+	/* Work out if we support NX */
+	check_efer();
+#endif
+
 	xen_setup_features();
 
 	/* Get mfn list */
@@ -1132,11 +1137,6 @@ asmlinkage void __init xen_start_kernel(void)
 
 	pgd = (pgd_t *)xen_start_info->pt_base;
 
-#ifdef CONFIG_X86_64
-	/* Work out if we support NX */
-	check_efer();
-#endif
-
 	/* Don't do the full vcpu_info placement stuff until we have a
 	   possible map and a non-dummy shared_info. */
 	per_cpu(xen_vcpu, 0) = &HYPERVISOR_shared_info->vcpu_info[0];



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