Re: [patch] paravirt: VDSO page is essential

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Rusty Russell
Date: Monday, March 5, 2007 - 6:28 am

On Mon, 2007-03-05 at 13:06 +0100, Ingo Molnar wrote:

I agree with the criticism, dislike the snarly comments, and disagree
with this patch.

VDSO is only a problem if (1) the hypervisor wants to reserve the top
virtual address space (CONFIG_PARAVIRT=y), and (2) the glibc is old and
can't handle a VDSO mapped anywhere but 0xFFFFE000
(CONFIG_COMPAT_VDSO=y).

Now, KVM wants to use CONFIG_PARAVIRT=y but not reserve_top_address(),
so we should split the config option.  Let's not get too excited because
we kept it simple.  Patch (untested, but fairly simple) below.

BTW, I had a patch to do a runtime test (old glibc causes init to
assert, then disable vdso and try again): everyone hated it.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

diff -r f75715e64a3b arch/i386/Kconfig
--- a/arch/i386/Kconfig	Tue Mar 06 00:04:50 2007 +1100
+++ b/arch/i386/Kconfig	Tue Mar 06 00:20:44 2007 +1100
@@ -218,9 +218,18 @@ config PARAVIRT
 	  However, when run without a hypervisor the kernel is
 	  theoretically slower.  If in doubt, say N.
 
+config RESERVE_TOP
+	bool
+	help
+	  Many hypervisors want to reserve some amount of the top of
+	  virtual address space.  Unfortunately, old glibc needs the
+	  vdso page there, so we must disable vdso if COMPAT_VDSO is
+	  enabled as well as this option.
+
 config VMI
 	bool "VMI Paravirt-ops support"
 	depends on PARAVIRT && !NO_HZ
+	select RESERVE_TOP
 	default y
 	help
 	  VMI provides a paravirtualized interface to multiple hypervisors
@@ -893,9 +902,10 @@ config COMPAT_VDSO
 config COMPAT_VDSO
 	bool "Compat VDSO support"
 	default y
-	depends on !PARAVIRT
-	help
-	  Map the VDSO to the predictable old-style address too.
+	help
+	  Map the VDSO to the predictable old-style address too, or
+	  in the case of a VMI/Xen/lguest virtualized guest, don't create
+	  the VDSO at all.
 	---help---
 	  Say N here if you are running a sufficiently recent glibc
 	  version (2.3.3 or later), to remove the high-mapped
diff -r f75715e64a3b arch/i386/kernel/sysenter.c
--- a/arch/i386/kernel/sysenter.c	Tue Mar 06 00:04:50 2007 +1100
+++ b/arch/i386/kernel/sysenter.c	Tue Mar 06 00:21:42 2007 +1100
@@ -27,7 +27,7 @@
  * Should the kernel map a VDSO page into processes and pass its
  * address down to glibc upon exec()?
  */
-#ifdef CONFIG_PARAVIRT
+#if defined(CONFIG_COMPAT_VDSO) && defined(CONFIG_RESERVE_TOP)
 unsigned int __read_mostly vdso_enabled = 0;
 #else
 unsigned int __read_mostly vdso_enabled = 1;
diff -r f75715e64a3b arch/i386/mm/pgtable.c
--- a/arch/i386/mm/pgtable.c	Tue Mar 06 00:04:50 2007 +1100
+++ b/arch/i386/mm/pgtable.c	Tue Mar 06 00:06:00 2007 +1100
@@ -173,7 +173,7 @@ void reserve_top_address(unsigned long r
 	BUG_ON(fixmaps > 0);
 	printk(KERN_INFO "Reserving virtual address space above 0x%08x\n",
 	       (int)-reserve);
-#ifdef CONFIG_COMPAT_VDSO
+#ifndef CONFIG_RESERVE_TOP
 	BUG_ON(reserve != 0);
 #else
 	__FIXADDR_TOP = -reserve - PAGE_SIZE;


-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[patch] paravirt: VDSO page is essential, Ingo Molnar, (Mon Mar 5, 5:06 am)
Re: [patch] paravirt: VDSO page is essential, Avi Kivity, (Mon Mar 5, 5:36 am)
Re: [patch] paravirt: VDSO page is essential, Ingo Molnar, (Mon Mar 5, 5:40 am)
Re: [patch] paravirt: VDSO page is essential, Avi Kivity, (Mon Mar 5, 6:00 am)
Re: [patch] paravirt: VDSO page is essential, Rusty Russell, (Mon Mar 5, 6:28 am)
Re: [patch] paravirt: VDSO page is essential, Rusty Russell, (Mon Mar 5, 6:32 am)
Re: [patch] paravirt: VDSO page is essential, Ingo Molnar, (Mon Mar 5, 6:38 am)
[patch] paravirt: re-enable COMPAT_VDSO, Ingo Molnar, (Mon Mar 5, 6:46 am)
Re: [patch] paravirt: VDSO page is essential, Ingo Molnar, (Mon Mar 5, 6:48 am)
Re: [patch] paravirt: VDSO page is essential, Ingo Molnar, (Mon Mar 5, 6:48 am)
Re: [patch] paravirt: VDSO page is essential, Ingo Molnar, (Mon Mar 5, 6:59 am)
Re: [patch] paravirt: VDSO page is essential, Avi Kivity, (Mon Mar 5, 7:10 am)
Re: [patch] paravirt: VDSO page is essential, Ingo Molnar, (Mon Mar 5, 7:10 am)
Re: [patch] paravirt: VDSO page is essential, Andi Kleen, (Mon Mar 5, 7:27 am)
Re: [patch] paravirt: VDSO page is essential, Andi Kleen, (Mon Mar 5, 7:28 am)
Re: [patch] paravirt: VDSO page is essential, Andi Kleen, (Mon Mar 5, 7:34 am)
Re: [patch] paravirt: VDSO page is essential, Andi Kleen, (Mon Mar 5, 7:58 am)
Re: [patch] paravirt: VDSO page is essential, Zachary Amsden, (Mon Mar 5, 1:11 pm)
Re: [patch] paravirt: VDSO page is essential, Andi Kleen, (Mon Mar 5, 1:16 pm)
Re: [patch] paravirt: VDSO page is essential, Ingo Molnar, (Mon Mar 5, 1:19 pm)
Re: [patch] paravirt: VDSO page is essential, Zachary Amsden, (Mon Mar 5, 1:33 pm)
Re: [patch] paravirt: VDSO page is essential, Zachary Amsden, (Mon Mar 5, 1:42 pm)
Re: [patch] paravirt: VDSO page is essential, Roland McGrath, (Mon Mar 5, 2:58 pm)
Re: [patch] paravirt: VDSO page is essential, Jeremy Fitzhardinge, (Mon Mar 5, 3:01 pm)
Re: [patch] paravirt: VDSO page is essential, Roland McGrath, (Mon Mar 5, 3:58 pm)
Re: [patch] paravirt: VDSO page is essential, Jeremy Fitzhardinge, (Mon Mar 5, 4:03 pm)
Re: [patch] paravirt: VDSO page is essential, Rusty Russell, (Mon Mar 5, 5:57 pm)
Re: [patch] paravirt: VDSO page is essential, Zachary Amsden, (Mon Mar 5, 6:03 pm)
Re: [patch] paravirt: VDSO page is essential, Rusty Russell, (Mon Mar 5, 6:11 pm)
Re: [patch] paravirt: VDSO page is essential, Jeremy Fitzhardinge, (Mon Mar 5, 6:14 pm)
Re: [patch] paravirt: VDSO page is essential, Zachary Amsden, (Mon Mar 5, 6:51 pm)
Re: [patch] paravirt: VDSO page is essential, Jeremy Fitzhardinge, (Mon Mar 5, 6:53 pm)
Re: [patch] paravirt: VDSO page is essential, Ingo Molnar, (Tue Mar 6, 12:35 am)
Re: [patch] paravirt: VDSO page is essential, Zachary Amsden, (Tue Mar 6, 12:42 am)
Re: [patch] paravirt: VDSO page is essential, Ingo Molnar, (Tue Mar 6, 12:50 am)
Xen &amp; VMI?, Ingo Molnar, (Tue Mar 6, 1:19 am)
Re: [patch] paravirt: VDSO page is essential, Ingo Molnar, (Tue Mar 6, 1:34 am)
Re: Xen &amp; VMI?, Gerd Hoffmann, (Tue Mar 6, 1:37 am)
Re: Xen &amp; VMI?, Zachary Amsden, (Tue Mar 6, 1:48 am)
Re: Xen &amp; VMI?, Ingo Molnar, (Tue Mar 6, 1:52 am)
Re: Xen &amp; VMI?, Zachary Amsden, (Tue Mar 6, 2:03 am)
Re: Xen &amp; VMI?, Jeremy Fitzhardinge, (Tue Mar 6, 2:07 am)
Re: Xen &amp; VMI?, Ingo Molnar, (Tue Mar 6, 2:10 am)
Re: [patch] paravirt: VDSO page is essential, Roland McGrath, (Tue Mar 6, 2:13 am)
Re: [patch] paravirt: VDSO page is essential, Jeremy Fitzhardinge, (Tue Mar 6, 2:14 am)
Re: Xen &amp; VMI?, Gerd Hoffmann, (Tue Mar 6, 2:15 am)
Re: Xen &amp; VMI?, Ingo Molnar, (Tue Mar 6, 2:26 am)
Re: Xen &amp; VMI?, Ingo Molnar, (Tue Mar 6, 2:34 am)
Re: Xen &amp; VMI?, Avi Kivity, (Tue Mar 6, 2:55 am)
Re: Xen &amp; VMI?, Gerd Hoffmann, (Tue Mar 6, 3:15 am)
Re: Xen &amp; VMI?, Gerd Hoffmann, (Tue Mar 6, 3:23 am)
Re: Xen &amp; VMI?, Ingo Molnar, (Tue Mar 6, 3:26 am)
Re: Xen &amp; VMI?, Ingo Molnar, (Tue Mar 6, 3:31 am)
Re: Xen &amp; VMI?, Gerd Hoffmann, (Tue Mar 6, 4:04 am)
Re: Xen &amp; VMI?, Ingo Molnar, (Tue Mar 6, 4:59 am)
Re: Xen &amp; VMI?, Gerd Hoffmann, (Tue Mar 6, 5:34 am)
Re: Xen &amp; VMI?, Anthony Liguori, (Tue Mar 6, 8:03 am)
Re: Xen &amp; VMI?, Jeremy Fitzhardinge, (Tue Mar 6, 9:27 am)
Re: Xen &amp; VMI?, Jeremy Fitzhardinge, (Tue Mar 6, 9:42 am)
Re: Xen &amp; VMI?, Ingo Molnar, (Tue Mar 6, 10:11 am)
RE: Xen &amp; VMI?, Nakajima, Jun, (Tue Mar 6, 10:17 am)
Re: Xen &amp; VMI?, Ingo Molnar, (Tue Mar 6, 10:18 am)
Re: Xen &amp; VMI?, Anthony Liguori, (Tue Mar 6, 10:32 am)
Re: Xen &amp; VMI?, Jeremy Fitzhardinge, (Tue Mar 6, 11:04 am)
Re: [patch] paravirt: VDSO page is essential, Jeremy Fitzhardinge, (Tue Mar 6, 11:48 am)
Re: Xen &amp; VMI?, Chris Wright, (Tue Mar 6, 12:46 pm)
Re: Xen &amp; VMI?, Ingo Molnar, (Tue Mar 6, 1:30 pm)
Re: Xen &amp; VMI?, Ingo Molnar, (Tue Mar 6, 1:37 pm)
Re: Xen &amp; VMI?, Chris Wright, (Tue Mar 6, 1:53 pm)
Re: Xen &amp; VMI?, Jeremy Fitzhardinge, (Tue Mar 6, 2:02 pm)
Re: Xen &amp; VMI?, Ingo Molnar, (Tue Mar 6, 2:03 pm)
Re: Xen &amp; VMI?, Ingo Molnar, (Tue Mar 6, 2:11 pm)
Re: Xen &amp; VMI?, Jeremy Fitzhardinge, (Tue Mar 6, 2:13 pm)
Re: Xen &amp; VMI?, Ingo Molnar, (Tue Mar 6, 2:20 pm)
Re: Xen &amp; VMI?, Chris Wright, (Tue Mar 6, 2:28 pm)
RE: Xen &amp; VMI?, Nakajima, Jun, (Tue Mar 6, 2:35 pm)
Re: Xen &amp; VMI?, Jeremy Fitzhardinge, (Tue Mar 6, 2:46 pm)
Re: Xen &amp; VMI?, Rusty Russell, (Tue Mar 6, 5:44 pm)
Re: Xen &amp; VMI?, Anthony Liguori, (Tue Mar 6, 5:54 pm)
Re: Xen &amp; VMI?, Zachary Amsden, (Tue Mar 6, 7:16 pm)
Re: Xen &amp; VMI?, Zachary Amsden, (Tue Mar 6, 7:35 pm)
Re: Xen &amp; VMI?, Zachary Amsden, (Tue Mar 6, 8:06 pm)
Re: Xen &amp; VMI?, Ingo Molnar, (Wed Mar 7, 1:15 am)
Re: Xen &amp; VMI?, Zachary Amsden, (Wed Mar 7, 2:17 am)
Re: Xen &amp; VMI?, Thomas Gleixner, (Wed Mar 7, 4:15 am)
Re: Xen &amp; VMI?, Dan Hecht, (Wed Mar 7, 12:14 pm)