Re: [Xen-devel] Re: [PATCH] xen: remove support for non-PAE 32-bit

Previous thread: Re: linux-next does not find root partition on PATA ICH5 by Sitsofe Wheeler on Friday, May 9, 2008 - 3:48 am. (1 message)

Next thread: Re: 2.6.25.2 - Jiffies/Time jumping back and forth (Regereesion from 2.6.24) by Martin Knoblauch on Friday, May 9, 2008 - 4:06 am. (1 message)
From: Jeremy Fitzhardinge
Date: Friday, May 9, 2008 - 4:05 am

Non-PAE operation has been deprecated in Xen for a while, and is
rarely tested or used.  xen-unstable has now officially dropped
non-PAE support.  Since Xen/pvops' non-PAE support has also been
broken for a while, we may as well completely drop it altogether.

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
---
 arch/x86/xen/Kconfig       |    2 -
 arch/x86/xen/enlighten.c   |   51 +++++++++++++++-----------------------------
 arch/x86/xen/mmu.c         |   19 +---------------
 arch/x86/xen/mmu.h         |   24 +++++---------------
 arch/x86/xen/xen-head.S    |    4 ---
 include/asm-x86/xen/page.h |    4 ---
 6 files changed, 27 insertions(+), 77 deletions(-)

===================================================================
--- a/arch/x86/xen/Kconfig
+++ b/arch/x86/xen/Kconfig
@@ -6,7 +6,7 @@
 	bool "Xen guest support"
 	select PARAVIRT
 	depends on X86_32
-	depends on X86_CMPXCHG && X86_TSC && !(X86_VISWS || X86_VOYAGER)
+	depends on X86_CMPXCHG && X86_TSC && X86_PAE && !(X86_VISWS || X86_VOYAGER)
 	help
 	  This is the Linux Xen port.  Enabling this will allow the
 	  kernel to boot in a paravirtualized environment under the
===================================================================
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -811,38 +811,35 @@
 static __init void xen_pagetable_setup_start(pgd_t *base)
 {
 	pgd_t *xen_pgd = (pgd_t *)xen_start_info->pt_base;
+	int i;
 
 	/* special set_pte for pagetable initialization */
 	pv_mmu_ops.set_pte = xen_set_pte_init;
 
 	init_mm.pgd = base;
 	/*
-	 * copy top-level of Xen-supplied pagetable into place.	 For
-	 * !PAE we can use this as-is, but for PAE it is a stand-in
-	 * while we copy the pmd pages.
+	 * copy top-level of Xen-supplied pagetable into place.  This
+	 * is a stand-in while we copy the pmd pages.
 	 */
 	memcpy(base, xen_pgd, PTRS_PER_PGD * sizeof(pgd_t));
 
-	if (PTRS_PER_PMD > 1) {
-		int i;
-		/*
-		 * For PAE, need to allocate new pmds, ...
From: Ingo Molnar
Date: Tuesday, May 13, 2008 - 4:08 am

applied, thanks.

	Ingo
--

From: Robert Kaiser (FH)
Date: Tuesday, May 13, 2008 - 4:32 am

Hi,


Hmm, I had to revert to non-PAE operation (using xen 3.2.1) recently in order 
to get Xen to run under qemu. Does anyone know of another work-around to run 
Xen/Linux under qemu?

Rob

-- 
Robert Kaiser                    http://wwwvs.informatik.fh-wiesbaden.de
Labor für Verteilte Systeme            kaiser@informatik.fh-wiesbaden.de
FH Wiesbaden - University of Applied Sciences     tel: (+49)611-9495-294
Kurt-Schumacher-Ring 18, 65197 Wiesbaden, Germany fax: (+49)611-9495-294
--

From: Jeremy Fitzhardinge
Date: Tuesday, May 13, 2008 - 4:48 am

In principle it should work in PAE mode; it certainly works in kvm.  
What problem are you seeing?  I think there's a bug in qemu's x86 
emulation with respect to mis-reporting the eip of an xchg which faults, 
which may be what you're seeing.

    J

--

From: Robert Kaiser (FH)
Date: Tuesday, May 13, 2008 - 6:28 am

Linux crashes just after the message "Freeing unused 
kernel memory: ..." due to dereferencing a bad address.

The following is from the top of my head (if you need more details, let me kow 
and I'll recompile everything with PAE so I can reproduce the problem again 
-- this will take some time though..):

The crash results from a call to do_munmap(). Strangely though, when setting a 
breakpoint at the faulting assembly instruction (I'm using qemu's debug stub 
facility) , the problem disappears: the address being dereferenced (contained 
in register eax) is always a valid one. However, as soon as I remove that 
breakpoint and hit "continue", it does crash again with the crash dump 
showing an eip pointing to where the breakpoint formerly was, and an invalid 

The eip that was reported was always the same, and there was no xchg 
instruction at that address. It might have been consistently wrong though 
(how would I figure this out?).


Rob

-- 
Robert Kaiser                    http://wwwvs.informatik.fh-wiesbaden.de
Labor für Verteilte Systeme            kaiser@informatik.fh-wiesbaden.de
FH Wiesbaden - University of Applied Sciences     tel: (+49)611-9495-294
Kurt-Schumacher-Ring 18, 65197 Wiesbaden, Germany fax: (+49)611-9495-294
--

From: Jeremy Fitzhardinge
Date: Tuesday, May 13, 2008 - 6:59 am

The symptom I've observed is that qemu reports the first instruction of 
the basic block rather than the exchange itself.  If you "x/10i <fault 
eip>", you should see an xchg before long.

Either way, sounds like a qemu bug which should be reported to them.

    J
--

From: Keir Fraser
Date: Tuesday, May 13, 2008 - 4:42 am

On 13/5/08 12:32, "Robert Kaiser (FH)" <kaiser@informatik.fh-wiesbaden.de>

How does it fail? The underlying issue ought to get fixed.

 -- Keir


--

Previous thread: Re: linux-next does not find root partition on PATA ICH5 by Sitsofe Wheeler on Friday, May 9, 2008 - 3:48 am. (1 message)

Next thread: Re: 2.6.25.2 - Jiffies/Time jumping back and forth (Regereesion from 2.6.24) by Martin Knoblauch on Friday, May 9, 2008 - 4:06 am. (1 message)