public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* linux-next: reservetop fix disables mem=
@ 2009-08-24 16:45 Hugh Dickins
  2009-08-24 17:38 ` Yinghai Lu
  0 siblings, 1 reply; 15+ messages in thread
From: Hugh Dickins @ 2009-08-24 16:45 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Xiao Guangrong, Andrew Morton, yinghai, linux-kernel

I find the "mem=" boot parameter disabled in today's linux-next:
reverting the tip commit below fixes that.

Hugh

From: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Date: Thu, 20 Aug 2009 12:23:11 +0000 (+0800)
Subject: x86: Fix system crash when loading with "reservetop" parameter
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fmingo%2Flinux-2.6-x86.git;a=commitdiff_plain;h=8126dec32738421afa362114337331337b4be17f

x86: Fix system crash when loading with "reservetop" parameter

The system will die if the kernel is booted with "reservetop"
parameter, in present code, parse "reservetop" parameter after
early_ioremap_init(), and some function still use
early_ioremap() after it.

The problem is, "reservetop" parameter can modify
'FIXADDR_TOP', then the virtual address got by early_ioremap()
is base on old 'FIXADDR_TOP', but the page mapping is base on
new 'FIXADDR_TOP', it will occur page fault, and the IDT is not
prepare yet, so, the system is dead.

So, put parse_early_param() in the front of
early_ioremap_init() in this patch.

Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Cc: yinghai@kernel.org
Cc: Andrew Morton <akpm@linux-foundation.org>
LKML-Reference: <4A8D402F.4080805@cn.fujitsu.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---

diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 63f32d2..02643cc 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -711,6 +711,11 @@ void __init setup_arch(char **cmdline_p)
 	printk(KERN_INFO "Command line: %s\n", boot_command_line);
 #endif
 
+	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
+	*cmdline_p = command_line;
+
+	parse_early_param();
+
 	/* VMI may relocate the fixmap; do this before touching ioremap area */
 	vmi_init();
 
@@ -793,11 +798,6 @@ void __init setup_arch(char **cmdline_p)
 #endif
 #endif
 
-	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
-	*cmdline_p = command_line;
-
-	parse_early_param();
-
 #ifdef CONFIG_X86_64
 	check_efer();
 #endif

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: linux-next: reservetop fix disables mem=
  2009-08-24 16:45 linux-next: reservetop fix disables mem= Hugh Dickins
@ 2009-08-24 17:38 ` Yinghai Lu
  2009-08-24 18:27   ` Ingo Molnar
  2009-08-26  1:13   ` linux-next: reservetop fix disables mem= Xiao Guangrong
  0 siblings, 2 replies; 15+ messages in thread
From: Yinghai Lu @ 2009-08-24 17:38 UTC (permalink / raw)
  To: Hugh Dickins, Ingo Molnar, Linus Torvalds, Zachary Amsden,
	H. Peter Anvin
  Cc: Xiao Guangrong, Andrew Morton, linux-kernel

Hugh Dickins wrote:
> I find the "mem=" boot parameter disabled in today's linux-next:
> reverting the tip commit below fixes that.
> 
> Hugh
> 
> From: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
> Date: Thu, 20 Aug 2009 12:23:11 +0000 (+0800)
> Subject: x86: Fix system crash when loading with "reservetop" parameter
> X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fmingo%2Flinux-2.6-x86.git;a=commitdiff_plain;h=8126dec32738421afa362114337331337b4be17f
> 
> x86: Fix system crash when loading with "reservetop" parameter
> 
> The system will die if the kernel is booted with "reservetop"
> parameter, in present code, parse "reservetop" parameter after
> early_ioremap_init(), and some function still use
> early_ioremap() after it.
> 
> The problem is, "reservetop" parameter can modify
> 'FIXADDR_TOP', then the virtual address got by early_ioremap()
> is base on old 'FIXADDR_TOP', but the page mapping is base on
> new 'FIXADDR_TOP', it will occur page fault, and the IDT is not
> prepare yet, so, the system is dead.
> 
> So, put parse_early_param() in the front of
> early_ioremap_init() in this patch.
> 
> Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
> Cc: yinghai@kernel.org
> Cc: Andrew Morton <akpm@linux-foundation.org>
> LKML-Reference: <4A8D402F.4080805@cn.fujitsu.com>
> Signed-off-by: Ingo Molnar <mingo@elte.hu>
> ---
> 
> diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> index 63f32d2..02643cc 100644
> --- a/arch/x86/kernel/setup.c
> +++ b/arch/x86/kernel/setup.c
> @@ -711,6 +711,11 @@ void __init setup_arch(char **cmdline_p)
>  	printk(KERN_INFO "Command line: %s\n", boot_command_line);
>  #endif
>  
> +	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
> +	*cmdline_p = command_line;
> +
> +	parse_early_param();
> +
>  	/* VMI may relocate the fixmap; do this before touching ioremap area */
>  	vmi_init();
>  
> @@ -793,11 +798,6 @@ void __init setup_arch(char **cmdline_p)
>  #endif
>  #endif
>  
> -	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
> -	*cmdline_p = command_line;
> -
> -	parse_early_param();
> -
>  #ifdef CONFIG_X86_64
>  	check_efer();
>  #endif

yes, that patch will break other built-in command too.

need drop that patch.

also the problem was caused by vmi patch, and that commit should be reverted.

commit ae8d04e2ecbb233926860e9ce145eac19c7835dc
Author: Zachary Amsden <zach@vmware.com>
Date:   Sat Dec 13 12:36:58 2008 -0800

    x86 Fix VMI crash on boot in 2.6.28-rc8
    
    VMI initialiation can relocate the fixmap, causing early_ioremap to
    malfunction if it is initialized before the relocation.  To fix this,
    VMI activation is split into two phases; the detection, which must
    happen before setting up ioremap, and the activation, which must happen
    after parsing early boot parameters.
    
    This fixes a crash on boot when VMI is enabled under VMware.
    
    Signed-off-by: Zachary Amsden <zach@vmware.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 9d5674f..bdec76e 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -794,6 +794,9 @@ void __init setup_arch(char **cmdline_p)
        printk(KERN_INFO "Command line: %s\n", boot_command_line);
 #endif
 
+       /* VMI may relocate the fixmap; do this before touching ioremap area */
+       vmi_init();
+
        early_cpu_init();
        early_ioremap_init();
 
@@ -880,13 +883,8 @@ void __init setup_arch(char **cmdline_p)
        check_efer();
 #endif
 
-#if defined(CONFIG_VMI) && defined(CONFIG_X86_32)
-       /*
-        * Must be before kernel pagetables are setup
-        * or fixmap area is touched.
-        */
-       vmi_init();
-#endif
+       /* Must be before kernel pagetables are setup */
+       vmi_activate();
 
        /* after early param, so could get panic from serial */
        reserve_early_setup_data();


and according to
http://lkml.org/lkml/2008/12/10/388
http://lkml.org/lkml/2008/12/10/456

Zachary should split reserve_top_address() to two functions... before sending that patch to Linus


YH



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: linux-next: reservetop fix disables mem=
  2009-08-24 17:38 ` Yinghai Lu
@ 2009-08-24 18:27   ` Ingo Molnar
  2009-08-28 19:28     ` Yinghai Lu
                       ` (2 more replies)
  2009-08-26  1:13   ` linux-next: reservetop fix disables mem= Xiao Guangrong
  1 sibling, 3 replies; 15+ messages in thread
From: Ingo Molnar @ 2009-08-24 18:27 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Hugh Dickins, Linus Torvalds, Zachary Amsden, H. Peter Anvin,
	Xiao Guangrong, Andrew Morton, linux-kernel


* Yinghai Lu <yinghai@kernel.org> wrote:

> Hugh Dickins wrote:
> > I find the "mem=" boot parameter disabled in today's linux-next:
> > reverting the tip commit below fixes that.
> > 
> > Hugh
> > 
> > From: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
> > Date: Thu, 20 Aug 2009 12:23:11 +0000 (+0800)
> > Subject: x86: Fix system crash when loading with "reservetop" parameter
> > X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fmingo%2Flinux-2.6-x86.git;a=commitdiff_plain;h=8126dec32738421afa362114337331337b4be17f
> > 
> > x86: Fix system crash when loading with "reservetop" parameter
> > 
> > The system will die if the kernel is booted with "reservetop"
> > parameter, in present code, parse "reservetop" parameter after
> > early_ioremap_init(), and some function still use
> > early_ioremap() after it.
> > 
> > The problem is, "reservetop" parameter can modify
> > 'FIXADDR_TOP', then the virtual address got by early_ioremap()
> > is base on old 'FIXADDR_TOP', but the page mapping is base on
> > new 'FIXADDR_TOP', it will occur page fault, and the IDT is not
> > prepare yet, so, the system is dead.
> > 
> > So, put parse_early_param() in the front of
> > early_ioremap_init() in this patch.
> > 
> > Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
> > Cc: yinghai@kernel.org
> > Cc: Andrew Morton <akpm@linux-foundation.org>
> > LKML-Reference: <4A8D402F.4080805@cn.fujitsu.com>
> > Signed-off-by: Ingo Molnar <mingo@elte.hu>
> > ---
> > 
> > diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> > index 63f32d2..02643cc 100644
> > --- a/arch/x86/kernel/setup.c
> > +++ b/arch/x86/kernel/setup.c
> > @@ -711,6 +711,11 @@ void __init setup_arch(char **cmdline_p)
> >  	printk(KERN_INFO "Command line: %s\n", boot_command_line);
> >  #endif
> >  
> > +	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
> > +	*cmdline_p = command_line;
> > +
> > +	parse_early_param();
> > +
> >  	/* VMI may relocate the fixmap; do this before touching ioremap area */
> >  	vmi_init();
> >  
> > @@ -793,11 +798,6 @@ void __init setup_arch(char **cmdline_p)
> >  #endif
> >  #endif
> >  
> > -	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
> > -	*cmdline_p = command_line;
> > -
> > -	parse_early_param();
> > -
> >  #ifdef CONFIG_X86_64
> >  	check_efer();
> >  #endif
> 
> yes, that patch will break other built-in command too.
> 
> need drop that patch.

done. Was nervous about the patch already:

  http://lkml.org/lkml/2009/8/21/127

> also the problem was caused by vmi patch, and that commit should 
> be reverted.
>
> commit ae8d04e2ecbb233926860e9ce145eac19c7835dc
> Author: Zachary Amsden <zach@vmware.com>
> Date:   Sat Dec 13 12:36:58 2008 -0800
> 
>     x86 Fix VMI crash on boot in 2.6.28-rc8
>     
>     VMI initialiation can relocate the fixmap, causing early_ioremap to
>     malfunction if it is initialized before the relocation.  To fix this,
>     VMI activation is split into two phases; the detection, which must
>     happen before setting up ioremap, and the activation, which must happen
>     after parsing early boot parameters.
>     
>     This fixes a crash on boot when VMI is enabled under VMware.
>     
>     Signed-off-by: Zachary Amsden <zach@vmware.com>
>     Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
> 
> diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> index 9d5674f..bdec76e 100644
> --- a/arch/x86/kernel/setup.c
> +++ b/arch/x86/kernel/setup.c
> @@ -794,6 +794,9 @@ void __init setup_arch(char **cmdline_p)
>         printk(KERN_INFO "Command line: %s\n", boot_command_line);
>  #endif
>  
> +       /* VMI may relocate the fixmap; do this before touching ioremap area */
> +       vmi_init();
> +
>         early_cpu_init();
>         early_ioremap_init();
>  
> @@ -880,13 +883,8 @@ void __init setup_arch(char **cmdline_p)
>         check_efer();
>  #endif
>  
> -#if defined(CONFIG_VMI) && defined(CONFIG_X86_32)
> -       /*
> -        * Must be before kernel pagetables are setup
> -        * or fixmap area is touched.
> -        */
> -       vmi_init();
> -#endif
> +       /* Must be before kernel pagetables are setup */
> +       vmi_activate();
>  
>         /* after early param, so could get panic from serial */
>         reserve_early_setup_data();
> 
> 
> and according to
> http://lkml.org/lkml/2008/12/10/388
> http://lkml.org/lkml/2008/12/10/456
> 
> Zachary should split reserve_top_address() to two functions... 
> before sending that patch to Linus

mind looking at this yourself if interested? Zachary has not been 
active for quite some time.

	Ingo

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: linux-next: reservetop fix disables mem=
  2009-08-24 17:38 ` Yinghai Lu
  2009-08-24 18:27   ` Ingo Molnar
@ 2009-08-26  1:13   ` Xiao Guangrong
  2009-09-01  7:55     ` [RFC][PATCH] x86: introduce parse_early_param_alone() to parse param early (Was Re: linux-next: reservetop fix disables mem= ) Xiao Guangrong
  1 sibling, 1 reply; 15+ messages in thread
From: Xiao Guangrong @ 2009-08-26  1:13 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Hugh Dickins, Ingo Molnar, Linus Torvalds, Zachary Amsden,
	H. Peter Anvin, Xiao Guangrong, Andrew Morton, linux-kernel



Yinghai Lu wrote:

> 
> yes, that patch will break other built-in command too.
> 
> need drop that patch.
> 

Sorry for trouble you all by my stupid patch.

The main problem is that can't parse 'reservetop' and 'mem'/'memmap'
parameters at the same time, because we should parse 'mem'/'memmap'
after e820 map detected, and it might use early_memremap() during
e820 map detecting, so we should call early_ioremap_init() before it,
'reservetop' parameter can change 'FIXADDR_TOP', so we parse
'reservetop' first,

like below sequences:
  ......
  ___parse 'reservetop'___  ->
  early_ioremap_init()	  ->
  setup_memory_map(); /* might call early_memremap()*/  ->
  parse_setup_data(); /* might call early_memremap()*/  ->
  e820_reserve_setup_data();	->
  ___parse 'mem'/'memmap' and other parameters___
  ......

(the same as 'early_ioremap_debug' parameter)

So, I'm afraid that we need separate parse 'reservetop'/
'early_ioremap_debug' parameters early

Thanks,
Xiao

> also the problem was caused by vmi patch, and that commit should be reverted.
> 
> commit ae8d04e2ecbb233926860e9ce145eac19c7835dc
> Author: Zachary Amsden <zach@vmware.com>
> Date:   Sat Dec 13 12:36:58 2008 -0800
> 
>     x86 Fix VMI crash on boot in 2.6.28-rc8
>     
>     VMI initialiation can relocate the fixmap, causing early_ioremap to
>     malfunction if it is initialized before the relocation.  To fix this,
>     VMI activation is split into two phases; the detection, which must
>     happen before setting up ioremap, and the activation, which must happen
>     after parsing early boot parameters.
>     
>     This fixes a crash on boot when VMI is enabled under VMware.
>     
>     Signed-off-by: Zachary Amsden <zach@vmware.com>
>     Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
> 
> diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> index 9d5674f..bdec76e 100644
> --- a/arch/x86/kernel/setup.c
> +++ b/arch/x86/kernel/setup.c
> @@ -794,6 +794,9 @@ void __init setup_arch(char **cmdline_p)
>         printk(KERN_INFO "Command line: %s\n", boot_command_line);
>  #endif
>  
> +       /* VMI may relocate the fixmap; do this before touching ioremap area */
> +       vmi_init();
> +
>         early_cpu_init();
>         early_ioremap_init();
>  
> @@ -880,13 +883,8 @@ void __init setup_arch(char **cmdline_p)
>         check_efer();
>  #endif
>  
> -#if defined(CONFIG_VMI) && defined(CONFIG_X86_32)
> -       /*
> -        * Must be before kernel pagetables are setup
> -        * or fixmap area is touched.
> -        */
> -       vmi_init();
> -#endif
> +       /* Must be before kernel pagetables are setup */
> +       vmi_activate();
>  
>         /* after early param, so could get panic from serial */
>         reserve_early_setup_data();
> 
> 
> and according to
> http://lkml.org/lkml/2008/12/10/388
> http://lkml.org/lkml/2008/12/10/456
> 
> Zachary should split reserve_top_address() to two functions... before sending that patch to Linus
> 
> 
> YH
> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 
> 

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: linux-next: reservetop fix disables mem=
  2009-08-24 18:27   ` Ingo Molnar
@ 2009-08-28 19:28     ` Yinghai Lu
  2009-09-06  6:56     ` Yinghai Lu
  2009-09-16  0:23     ` Hugh Dickins
  2 siblings, 0 replies; 15+ messages in thread
From: Yinghai Lu @ 2009-08-28 19:28 UTC (permalink / raw)
  To: Ingo Molnar, Rusty Russell
  Cc: Hugh Dickins, Linus Torvalds, Zachary Amsden, H. Peter Anvin,
	Xiao Guangrong, Andrew Morton, linux-kernel

Ingo Molnar wrote:
>> and according to
>> http://lkml.org/lkml/2008/12/10/388
>> http://lkml.org/lkml/2008/12/10/456
>>
>> Zachary should split reserve_top_address() to two functions... 
>> before sending that patch to Linus
> 
> mind looking at this yourself if interested? Zachary has not been 
> active for quite some time.
> 


other ways is to revive the Rusty Russell's patchset that move paramater early...

YH

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [RFC][PATCH] x86: introduce parse_early_param_alone() to parse param early (Was Re: linux-next: reservetop fix disables mem= )
  2009-08-26  1:13   ` linux-next: reservetop fix disables mem= Xiao Guangrong
@ 2009-09-01  7:55     ` Xiao Guangrong
  2009-09-01 15:17       ` Américo Wang
  0 siblings, 1 reply; 15+ messages in thread
From: Xiao Guangrong @ 2009-09-01  7:55 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Hugh Dickins, Yinghai Lu, Linus Torvalds, Zachary Amsden,
	H. Peter Anvin, Andrew Morton, linux-kernel

Hi Ingo,

I find the broken patch is still in -tip tree:

Commit-ID:  8126dec32738421afa362114337331337b4be17f
Gitweb:     http://git.kernel.org/tip/8126dec32738421afa362114337331337b4be17f
Author:     Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
AuthorDate: Thu, 20 Aug 2009 20:23:11 +0800
Committer:  Ingo Molnar <mingo@elte.hu>
CommitDate: Fri, 21 Aug 2009 16:40:30 +0200

x86: Fix system crash when loading with "reservetop" parameter

So, this patch is base on it.
---------------------------------------------
Subject: [RFC][PATCH] x86: introduce parse_early_param_alone() to parse param before parse_early_param()

Sometimes, we should parse specific boot parameter alone before
parse_early_param(), such as "reservetop" and "early_ioremap_debug",
like below:

> The main problem is that can't parse 'reservetop' and 'mem'/'memmap'
> parameters at the same time, because we should parse 'mem'/'memmap'
> after e820 map detected, and it might use early_memremap() during
> e820 map detecting, so we should call early_ioremap_init() before it,
> 'reservetop' parameter can change 'FIXADDR_TOP', so we parse
> 'reservetop' first,
> 
> like below sequences:
>   ......
>   ___parse 'reservetop'___  ->
>   early_ioremap_init()	  ->
>   setup_memory_map(); /* might call early_memremap()*/  ->
>   parse_setup_data(); /* might call early_memremap()*/  ->
>   e820_reserve_setup_data();	->
>   ___parse 'mem'/'memmap' and other parameters___
>   ......
> 
> (the same as 'early_ioremap_debug' parameter)
> 
> So, I'm afraid that we need separate parse 'reservetop'/
> 'early_ioremap_debug' parameters early
> 

This patch introduce a new api named parse_early_param_alone() to
do this.

Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
---
 arch/x86/kernel/setup.c |   33 ++++++++++++++++++------------
 include/linux/init.h    |    1 +
 init/main.c             |   50 +++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 71 insertions(+), 13 deletions(-)

diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 83ea092..f241c12 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -696,10 +696,28 @@ void __init setup_arch(char **cmdline_p)
 	printk(KERN_INFO "Command line: %s\n", boot_command_line);
 #endif
 
+#ifdef CONFIG_CMDLINE_BOOL
+#ifdef CONFIG_CMDLINE_OVERRIDE
+	strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
+#else
+	if (builtin_cmdline[0]) {
+		/* append boot loader cmdline to builtin */
+		strlcat(builtin_cmdline, " ", COMMAND_LINE_SIZE);
+		strlcat(builtin_cmdline, boot_command_line, COMMAND_LINE_SIZE);
+		strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
+	}
+#endif
+#endif
+
 	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
 	*cmdline_p = command_line;
 
-	parse_early_param();
+	/*
+	 * We should parse "reservetop" and "early_ioremap_debug" before
+	 * early_ioremap_init().
+	 */
+	parse_early_param_alone("reservetop");
+	parse_early_param_alone("early_ioremap_debug");
 
 	/* VMI may relocate the fixmap; do this before touching ioremap area */
 	vmi_init();
@@ -770,18 +788,7 @@ void __init setup_arch(char **cmdline_p)
 	bss_resource.start = virt_to_phys(&__bss_start);
 	bss_resource.end = virt_to_phys(&__bss_stop)-1;
 
-#ifdef CONFIG_CMDLINE_BOOL
-#ifdef CONFIG_CMDLINE_OVERRIDE
-	strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
-#else
-	if (builtin_cmdline[0]) {
-		/* append boot loader cmdline to builtin */
-		strlcat(builtin_cmdline, " ", COMMAND_LINE_SIZE);
-		strlcat(builtin_cmdline, boot_command_line, COMMAND_LINE_SIZE);
-		strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
-	}
-#endif
-#endif
+	parse_early_param();
 
 #ifdef CONFIG_X86_64
 	check_efer();
diff --git a/include/linux/init.h b/include/linux/init.h
index b30f694..4e0082a 100644
--- a/include/linux/init.h
+++ b/include/linux/init.h
@@ -242,6 +242,7 @@ struct obs_kernel_param {
 	__setup_param(str, fn, fn, 1)
 
 /* Relies on boot_command_line being set */
+void __init parse_early_param_alone(char * param);
 void __init parse_early_param(void);
 void __init parse_early_options(char *cmdline);
 #endif /* __ASSEMBLY__ */
diff --git a/init/main.c b/init/main.c
index 0ec75ce..d7d155b 100644
--- a/init/main.c
+++ b/init/main.c
@@ -477,6 +477,11 @@ static int __init do_early_param(char *param, char *val)
 	struct obs_kernel_param *p;
 
 	for (p = __setup_start; p < __setup_end; p++) {
+
+		/* Skip it if it has been parsed in do_early_param_alone() */
+		if (unlikely(p->early == -1))
+			continue;
+
 		if ((p->early && strcmp(param, p->str) == 0) ||
 		    (strcmp(param, "console") == 0 &&
 		     strcmp(p->str, "earlycon") == 0)
@@ -490,6 +495,51 @@ static int __init do_early_param(char *param, char *val)
 	return 0;
 }
 
+static char *alone_param __initdata;
+
+static int __init do_early_param_alone(char *param, char *val)
+{
+	struct obs_kernel_param *p;
+
+	BUG_ON(!alone_param);
+
+	if (strcmp(param, alone_param))
+		return 0;
+
+	for (p = __setup_start; p < __setup_end; p++) {
+		if (p->early && strcmp(param, p->str) == 0) {
+
+			WARN(p->early != 1, "%s is not a early param or "
+			     "it has been parsed\n", p->str);
+
+			if (p->setup_func(val) != 0)
+				printk(KERN_WARNING
+				       "Malformed early option '%s'\n", param);
+			/*
+			 * Set p->early to -1 to avoid parse_early_param()
+			 * and obsolete_checksetup() parse it again.
+			 */
+			p->early = -1;
+		}
+	}
+	/* We accept everything at this stage. */
+	return 0;
+}
+
+/*
+ * Parse specific boot parameter alone before parse_early_param().
+ * Note: only early params can do this.
+ */
+void __init parse_early_param_alone(char *param)
+{
+       static __initdata char tmp_cmdline[COMMAND_LINE_SIZE];
+
+       alone_param = param;
+       strlcpy(tmp_cmdline, boot_command_line, COMMAND_LINE_SIZE);
+       parse_args("early param alone", tmp_cmdline, NULL, 0,
+		  do_early_param_alone);
+}
+
 void __init parse_early_options(char *cmdline)
 {
 	parse_args("early options", cmdline, NULL, 0, do_early_param);
-- 
1.6.1.2



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [RFC][PATCH] x86: introduce parse_early_param_alone() to parse param early (Was Re: linux-next: reservetop fix disables mem= )
  2009-09-01  7:55     ` [RFC][PATCH] x86: introduce parse_early_param_alone() to parse param early (Was Re: linux-next: reservetop fix disables mem= ) Xiao Guangrong
@ 2009-09-01 15:17       ` Américo Wang
  2009-09-03  6:04         ` Xiao Guangrong
  0 siblings, 1 reply; 15+ messages in thread
From: Américo Wang @ 2009-09-01 15:17 UTC (permalink / raw)
  To: Xiao Guangrong
  Cc: Ingo Molnar, Hugh Dickins, Yinghai Lu, Linus Torvalds,
	Zachary Amsden, H. Peter Anvin, Andrew Morton, linux-kernel

On Tue, Sep 01, 2009 at 03:55:14PM +0800, Xiao Guangrong wrote:
>Hi Ingo,
>
>I find the broken patch is still in -tip tree:
>
>Commit-ID:  8126dec32738421afa362114337331337b4be17f
>Gitweb:     http://git.kernel.org/tip/8126dec32738421afa362114337331337b4be17f
>Author:     Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
>AuthorDate: Thu, 20 Aug 2009 20:23:11 +0800
>Committer:  Ingo Molnar <mingo@elte.hu>
>CommitDate: Fri, 21 Aug 2009 16:40:30 +0200
>
>x86: Fix system crash when loading with "reservetop" parameter
>
>So, this patch is base on it.
>---------------------------------------------
>Subject: [RFC][PATCH] x86: introduce parse_early_param_alone() to parse param before parse_early_param()
>
>Sometimes, we should parse specific boot parameter alone before
>parse_early_param(), such as "reservetop" and "early_ioremap_debug",
>like below:
>
>> The main problem is that can't parse 'reservetop' and 'mem'/'memmap'
>> parameters at the same time, because we should parse 'mem'/'memmap'
>> after e820 map detected, and it might use early_memremap() during
>> e820 map detecting, so we should call early_ioremap_init() before it,
>> 'reservetop' parameter can change 'FIXADDR_TOP', so we parse
>> 'reservetop' first,
>> 
>> like below sequences:
>>   ......
>>   ___parse 'reservetop'___  ->
>>   early_ioremap_init()	  ->
>>   setup_memory_map(); /* might call early_memremap()*/  ->
>>   parse_setup_data(); /* might call early_memremap()*/  ->
>>   e820_reserve_setup_data();	->
>>   ___parse 'mem'/'memmap' and other parameters___
>>   ......
>> 
>> (the same as 'early_ioremap_debug' parameter)
>> 
>> So, I'm afraid that we need separate parse 'reservetop'/
>> 'early_ioremap_debug' parameters early
>> 
>
>This patch introduce a new api named parse_early_param_alone() to
>do this.
>
>Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
>---
> arch/x86/kernel/setup.c |   33 ++++++++++++++++++------------
> include/linux/init.h    |    1 +
> init/main.c             |   50 +++++++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 71 insertions(+), 13 deletions(-)
>
>diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
>index 83ea092..f241c12 100644
>--- a/arch/x86/kernel/setup.c
>+++ b/arch/x86/kernel/setup.c
>@@ -696,10 +696,28 @@ void __init setup_arch(char **cmdline_p)
> 	printk(KERN_INFO "Command line: %s\n", boot_command_line);
> #endif
> 
>+#ifdef CONFIG_CMDLINE_BOOL
>+#ifdef CONFIG_CMDLINE_OVERRIDE
>+	strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
>+#else
>+	if (builtin_cmdline[0]) {
>+		/* append boot loader cmdline to builtin */
>+		strlcat(builtin_cmdline, " ", COMMAND_LINE_SIZE);
>+		strlcat(builtin_cmdline, boot_command_line, COMMAND_LINE_SIZE);
>+		strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
>+	}
>+#endif
>+#endif


This seems ugly.

CMDLINE_OVERRIDE depends on CMDLINE_BOOL, right? So the outer #ifdef
can be removed. :)


-- 
Live like a child, think like the god.
 

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [RFC][PATCH] x86: introduce parse_early_param_alone() to parse param early (Was Re: linux-next: reservetop fix disables mem= )
  2009-09-01 15:17       ` Américo Wang
@ 2009-09-03  6:04         ` Xiao Guangrong
  0 siblings, 0 replies; 15+ messages in thread
From: Xiao Guangrong @ 2009-09-03  6:04 UTC (permalink / raw)
  To: Américo Wang
  Cc: Ingo Molnar, Hugh Dickins, Yinghai Lu, Linus Torvalds,
	Zachary Amsden, H. Peter Anvin, Andrew Morton, linux-kernel



Américo Wang wrote:

>> +#ifdef CONFIG_CMDLINE_BOOL
>> +#ifdef CONFIG_CMDLINE_OVERRIDE
>> +	strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
>> +#else
>> +	if (builtin_cmdline[0]) {
>> +		/* append boot loader cmdline to builtin */
>> +		strlcat(builtin_cmdline, " ", COMMAND_LINE_SIZE);
>> +		strlcat(builtin_cmdline, boot_command_line, COMMAND_LINE_SIZE);
>> +		strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
>> +	}
>> +#endif
>> +#endif
> 
> 
> This seems ugly.
> 
> CMDLINE_OVERRIDE depends on CMDLINE_BOOL, right? So the outer #ifdef
> can be removed. :)
> 

Thanks for your review, but I think we can't do that.

Yeah, CMDLINE_OVERRIDE depends on CMDLINE_BOOL, but we don't know whether 
CONFIG_CMDLINE_BOOL is defined if CONFIG_CMDLINE_OVERRIDE is not defined,
like below:

#ifdef CONFIG_CMDLINE_OVERRIDE
	strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
#else
	/* There have two cases:
	 * 1: if CONFIG_CMDLINE_BOOL is defined, it's OK 
	 * 2: if CONFIG_CMDLINE_BOOL is not defined, builtin_cmdline
	 * is not defined, so, the compiler will complain with it
	 */
	if (builtin_cmdline[0]) {
		/* append boot loader cmdline to builtin */
		strlcat(builtin_cmdline, " ", COMMAND_LINE_SIZE);
		strlcat(builtin_cmdline, boot_command_line, COMMAND_LINE_SIZE);
		strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
	}
#endif

Thanks,
Xiao

> 

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: linux-next: reservetop fix disables mem=
  2009-08-24 18:27   ` Ingo Molnar
  2009-08-28 19:28     ` Yinghai Lu
@ 2009-09-06  6:56     ` Yinghai Lu
  2009-09-16  0:23     ` Hugh Dickins
  2 siblings, 0 replies; 15+ messages in thread
From: Yinghai Lu @ 2009-09-06  6:56 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Hugh Dickins, Linus Torvalds, Zachary Amsden, H. Peter Anvin,
	Xiao Guangrong, Andrew Morton, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 5054 bytes --]

On Mon, Aug 24, 2009 at 11:27 AM, Ingo Molnar<mingo@elte.hu> wrote:
>
> * Yinghai Lu <yinghai@kernel.org> wrote:
>
>> Hugh Dickins wrote:
>> > I find the "mem=" boot parameter disabled in today's linux-next:
>> > reverting the tip commit below fixes that.
>> >
>> > Hugh
>> >
>> > From: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
>> > Date: Thu, 20 Aug 2009 12:23:11 +0000 (+0800)
>> > Subject: x86: Fix system crash when loading with "reservetop" parameter
>> > X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fmingo%2Flinux-2.6-x86.git;a=commitdiff_plain;h=8126dec32738421afa362114337331337b4be17f
>> >
>> > x86: Fix system crash when loading with "reservetop" parameter
>> >
>> > The system will die if the kernel is booted with "reservetop"
>> > parameter, in present code, parse "reservetop" parameter after
>> > early_ioremap_init(), and some function still use
>> > early_ioremap() after it.
>> >
>> > The problem is, "reservetop" parameter can modify
>> > 'FIXADDR_TOP', then the virtual address got by early_ioremap()
>> > is base on old 'FIXADDR_TOP', but the page mapping is base on
>> > new 'FIXADDR_TOP', it will occur page fault, and the IDT is not
>> > prepare yet, so, the system is dead.
>> >
>> > So, put parse_early_param() in the front of
>> > early_ioremap_init() in this patch.
>> >
>> > Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
>> > Cc: yinghai@kernel.org
>> > Cc: Andrew Morton <akpm@linux-foundation.org>
>> > LKML-Reference: <4A8D402F.4080805@cn.fujitsu.com>
>> > Signed-off-by: Ingo Molnar <mingo@elte.hu>
>> > ---
>> >
>> > diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
>> > index 63f32d2..02643cc 100644
>> > --- a/arch/x86/kernel/setup.c
>> > +++ b/arch/x86/kernel/setup.c
>> > @@ -711,6 +711,11 @@ void __init setup_arch(char **cmdline_p)
>> >     printk(KERN_INFO "Command line: %s\n", boot_command_line);
>> >  #endif
>> >
>> > +   strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
>> > +   *cmdline_p = command_line;
>> > +
>> > +   parse_early_param();
>> > +
>> >     /* VMI may relocate the fixmap; do this before touching ioremap area */
>> >     vmi_init();
>> >
>> > @@ -793,11 +798,6 @@ void __init setup_arch(char **cmdline_p)
>> >  #endif
>> >  #endif
>> >
>> > -   strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
>> > -   *cmdline_p = command_line;
>> > -
>> > -   parse_early_param();
>> > -
>> >  #ifdef CONFIG_X86_64
>> >     check_efer();
>> >  #endif
>>
>> yes, that patch will break other built-in command too.
>>
>> need drop that patch.
>
> done. Was nervous about the patch already:
>
>  http://lkml.org/lkml/2009/8/21/127
>
>> also the problem was caused by vmi patch, and that commit should
>> be reverted.
>>
>> commit ae8d04e2ecbb233926860e9ce145eac19c7835dc
>> Author: Zachary Amsden <zach@vmware.com>
>> Date:   Sat Dec 13 12:36:58 2008 -0800
>>
>>     x86 Fix VMI crash on boot in 2.6.28-rc8
>>
>>     VMI initialiation can relocate the fixmap, causing early_ioremap to
>>     malfunction if it is initialized before the relocation.  To fix this,
>>     VMI activation is split into two phases; the detection, which must
>>     happen before setting up ioremap, and the activation, which must happen
>>     after parsing early boot parameters.
>>
>>     This fixes a crash on boot when VMI is enabled under VMware.
>>
>>     Signed-off-by: Zachary Amsden <zach@vmware.com>
>>     Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
>>
>> diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
>> index 9d5674f..bdec76e 100644
>> --- a/arch/x86/kernel/setup.c
>> +++ b/arch/x86/kernel/setup.c
>> @@ -794,6 +794,9 @@ void __init setup_arch(char **cmdline_p)
>>         printk(KERN_INFO "Command line: %s\n", boot_command_line);
>>  #endif
>>
>> +       /* VMI may relocate the fixmap; do this before touching ioremap area */
>> +       vmi_init();
>> +
>>         early_cpu_init();
>>         early_ioremap_init();
>>
>> @@ -880,13 +883,8 @@ void __init setup_arch(char **cmdline_p)
>>         check_efer();
>>  #endif
>>
>> -#if defined(CONFIG_VMI) && defined(CONFIG_X86_32)
>> -       /*
>> -        * Must be before kernel pagetables are setup
>> -        * or fixmap area is touched.
>> -        */
>> -       vmi_init();
>> -#endif
>> +       /* Must be before kernel pagetables are setup */
>> +       vmi_activate();
>>
>>         /* after early param, so could get panic from serial */
>>         reserve_early_setup_data();
>>
>>
>> and according to
>> http://lkml.org/lkml/2008/12/10/388
>> http://lkml.org/lkml/2008/12/10/456
>>
>> Zachary should split reserve_top_address() to two functions...
>> before sending that patch to Linus
>
> mind looking at this yourself if interested? Zachary has not been
> active for quite some time.
>

please check attached patch...

still need to make early_dbgp and early_console that would use early_ioremap?

YH

[-- Attachment #2: fix_early_param.patch --]
[-- Type: text/x-patch, Size: 6200 bytes --]

[PATCH] x86: fix early_param hanle moved more early

the patch the move early_param_parse early to make reservetop to work again,
it is reported to break mem=...

after close looking, it will break
1. some cpu feature  in early stage too, like cpu_has_x2apic
2. will break built-in-command line
3. will break other memmap= and mem=
4. early_dbgp and early_console that will use early_ioremap to access mmio (?)

so try to
1. move early_cpu_init early
2. move built-in-command copying early
3. add userdef_mem_size to remember mem=
.  add e820_user to remember memmap
   to use userdef_mem_size and e820_user in finalize_map
4: ?

Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 arch/x86/kernel/e820.c  |   52 ++++++++++++++++++++++++++++++++----------------
 arch/x86/kernel/setup.c |   39 ++++++++++++++++++------------------
 2 files changed, 55 insertions(+), 36 deletions(-)

Index: linux-2.6/arch/x86/kernel/e820.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/e820.c
+++ linux-2.6/arch/x86/kernel/e820.c
@@ -44,6 +44,7 @@
  */
 struct e820map e820;
 struct e820map e820_saved;
+static struct e820map e820_user __initdata;
 
 /* For PCI or other memory-mapped resources */
 unsigned long pci_mem_start = 0xaeedbabe;
@@ -1227,11 +1228,11 @@ static void early_panic(char *msg)
 }
 
 static int userdef __initdata;
+static	u64 userdef_mem_size __initdata;
 
 /* "mem=nopentium" disables the 4MB page tables. */
 static int __init parse_memopt(char *p)
 {
-	u64 mem_size;
 
 	if (!p)
 		return -EINVAL;
@@ -1244,13 +1245,13 @@ static int __init parse_memopt(char *p)
 #endif
 
 	userdef = 1;
-	mem_size = memparse(p, &p);
-	e820_remove_range(mem_size, ULLONG_MAX - mem_size, E820_RAM, 1);
+	userdef_mem_size = memparse(p, &p);
 
 	return 0;
 }
 early_param("mem", parse_memopt);
 
+static int userdef_exactmap __initdata;
 static int __init parse_memmap_opt(char *p)
 {
 	char *oldp;
@@ -1260,16 +1261,9 @@ static int __init parse_memmap_opt(char
 		return -EINVAL;
 
 	if (!strncmp(p, "exactmap", 8)) {
-#ifdef CONFIG_CRASH_DUMP
-		/*
-		 * If we are doing a crash dump, we still need to know
-		 * the real mem size before original memory map is
-		 * reset.
-		 */
-		saved_max_pfn = e820_end_of_ram_pfn();
-#endif
-		e820.nr_map = 0;
+		e820_user.nr_map = 0;
 		userdef = 1;
+		userdef_exactmap = 1;
 		return 0;
 	}
 
@@ -1281,15 +1275,16 @@ static int __init parse_memmap_opt(char
 	userdef = 1;
 	if (*p == '@') {
 		start_at = memparse(p+1, &p);
-		e820_add_region(start_at, mem_size, E820_RAM);
+		__e820_add_region(&e820_user, start_at, mem_size, E820_RAM);
 	} else if (*p == '#') {
 		start_at = memparse(p+1, &p);
-		e820_add_region(start_at, mem_size, E820_ACPI);
+		__e820_add_region(&e820_user, start_at, mem_size, E820_ACPI);
 	} else if (*p == '$') {
 		start_at = memparse(p+1, &p);
-		e820_add_region(start_at, mem_size, E820_RESERVED);
+		__e820_add_region(&e820_user, start_at, mem_size,
+			 E820_RESERVED);
 	} else
-		e820_remove_range(mem_size, ULLONG_MAX - mem_size, E820_RAM, 1);
+		userdef_mem_size = mem_size;
 
 	return *p == '\0' ? 0 : -EINVAL;
 }
@@ -1298,7 +1293,30 @@ early_param("memmap", parse_memmap_opt);
 void __init finish_e820_parsing(void)
 {
 	if (userdef) {
-		u32 nr = e820.nr_map;
+		u32 nr;
+
+		if (userdef_exactmap) {
+#ifdef CONFIG_CRASH_DUMP
+			/*
+			 * If we are doing a crash dump, we still need to know
+			 * the real mem size before original memory map is
+			 * reset.
+			 */
+			saved_max_pfn = e820_end_of_ram_pfn();
+#endif
+			/* good, just use e820_user instead */
+			memcpy(&e820, &e820_user, sizeof(struct e820map));
+		} else {
+			/* ok, need to append e820_user to e820 */
+			__append_e820_map(e820_user.map, e820_user.nr_map);
+		}
+
+		nr = e820.nr_map;
+
+		if (userdef_mem_size)
+			e820_remove_range(userdef_mem_size,
+					  ULLONG_MAX - userdef_mem_size,
+					  E820_RAM, 1);
 
 		if (sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &nr) < 0)
 			early_panic("Invalid user supplied memory map");
Index: linux-2.6/arch/x86/kernel/setup.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/setup.c
+++ linux-2.6/arch/x86/kernel/setup.c
@@ -693,13 +693,28 @@ void __init setup_arch(char **cmdline_p)
 #ifdef CONFIG_X86_32
 	memcpy(&boot_cpu_data, &new_cpu_data, sizeof(new_cpu_data));
 	visws_early_detect();
+#endif
+
+#ifdef CONFIG_CMDLINE_BOOL
+#ifdef CONFIG_CMDLINE_OVERRIDE
+	strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
 #else
-	printk(KERN_INFO "Command line: %s\n", boot_command_line);
+	if (builtin_cmdline[0]) {
+		/* append boot loader cmdline to builtin */
+		strlcat(builtin_cmdline, " ", COMMAND_LINE_SIZE);
+		strlcat(builtin_cmdline, boot_command_line, COMMAND_LINE_SIZE);
+		strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
+	}
+#endif
 #endif
 
+	printk(KERN_INFO "Command line: %s\n", boot_command_line);
+
 	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
 	*cmdline_p = command_line;
 
+	early_cpu_init();
+
 #ifdef CONFIG_X86_64
 	/*
 	 * Must call this twice: Once just to detect whether hardware doesn't
@@ -712,10 +727,13 @@ void __init setup_arch(char **cmdline_p)
 
 	parse_early_param();
 
+#ifdef CONFIG_X86_64
+	check_efer();
+#endif
+
 	/* VMI may relocate the fixmap; do this before touching ioremap area */
 	vmi_init();
 
-	early_cpu_init();
 	early_ioremap_init();
 
 	ROOT_DEV = old_decode_dev(boot_params.hdr.root_dev);
@@ -781,23 +799,6 @@ void __init setup_arch(char **cmdline_p)
 	bss_resource.start = virt_to_phys(&__bss_start);
 	bss_resource.end = virt_to_phys(&__bss_stop)-1;
 
-#ifdef CONFIG_CMDLINE_BOOL
-#ifdef CONFIG_CMDLINE_OVERRIDE
-	strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
-#else
-	if (builtin_cmdline[0]) {
-		/* append boot loader cmdline to builtin */
-		strlcat(builtin_cmdline, " ", COMMAND_LINE_SIZE);
-		strlcat(builtin_cmdline, boot_command_line, COMMAND_LINE_SIZE);
-		strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
-	}
-#endif
-#endif
-
-#ifdef CONFIG_X86_64
-	check_efer();
-#endif
-
 	/* Must be before kernel pagetables are setup */
 	vmi_activate();
 

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: linux-next: reservetop fix disables mem=
  2009-08-24 18:27   ` Ingo Molnar
  2009-08-28 19:28     ` Yinghai Lu
  2009-09-06  6:56     ` Yinghai Lu
@ 2009-09-16  0:23     ` Hugh Dickins
  2009-09-19 17:55       ` Ingo Molnar
  2 siblings, 1 reply; 15+ messages in thread
From: Hugh Dickins @ 2009-09-16  0:23 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Yinghai Lu, Hugh Dickins, Linus Torvalds, Zachary Amsden,
	H. Peter Anvin, Xiao Guangrong, Andrew Morton, linux-kernel

On Mon, 24 Aug 2009, Ingo Molnar wrote:
> * Yinghai Lu <yinghai@kernel.org> wrote:
> > Hugh Dickins wrote:
> > > I find the "mem=" boot parameter disabled in today's linux-next:
> > > reverting the tip commit below fixes that.
> > > 
> > > Hugh
> > > 
> > > From: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
> > > Date: Thu, 20 Aug 2009 12:23:11 +0000 (+0800)
> > > Subject: x86: Fix system crash when loading with "reservetop" parameter
> > > X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fmingo%2Flinux-2.6-x86.git;a=commitdiff_plain;h=8126dec32738421afa362114337331337b4be17f
> > > 
> > > x86: Fix system crash when loading with "reservetop" parameter
> > > 
> > > The system will die if the kernel is booted with "reservetop"
> > > parameter, in present code, parse "reservetop" parameter after
> > > early_ioremap_init(), and some function still use
> > > early_ioremap() after it.
> > > 
> > > The problem is, "reservetop" parameter can modify
> > > 'FIXADDR_TOP', then the virtual address got by early_ioremap()
> > > is base on old 'FIXADDR_TOP', but the page mapping is base on
> > > new 'FIXADDR_TOP', it will occur page fault, and the IDT is not
> > > prepare yet, so, the system is dead.
> > > 
> > > So, put parse_early_param() in the front of
> > > early_ioremap_init() in this patch.
> > > 
> > > Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
> > > Cc: yinghai@kernel.org
> > > Cc: Andrew Morton <akpm@linux-foundation.org>
> > > LKML-Reference: <4A8D402F.4080805@cn.fujitsu.com>
> > > Signed-off-by: Ingo Molnar <mingo@elte.hu>
> > > ---
> > > 
> > > diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> > > index 63f32d2..02643cc 100644
> > > --- a/arch/x86/kernel/setup.c
> > > +++ b/arch/x86/kernel/setup.c
> > > @@ -711,6 +711,11 @@ void __init setup_arch(char **cmdline_p)
> > >  	printk(KERN_INFO "Command line: %s\n", boot_command_line);
> > >  #endif
> > >  
> > > +	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
> > > +	*cmdline_p = command_line;
> > > +
> > > +	parse_early_param();
> > > +
> > >  	/* VMI may relocate the fixmap; do this before touching ioremap area */
> > >  	vmi_init();
> > >  
> > > @@ -793,11 +798,6 @@ void __init setup_arch(char **cmdline_p)
> > >  #endif
> > >  #endif
> > >  
> > > -	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
> > > -	*cmdline_p = command_line;
> > > -
> > > -	parse_early_param();
> > > -
> > >  #ifdef CONFIG_X86_64
> > >  	check_efer();
> > >  #endif
> > 
> > yes, that patch will break other built-in command too.
> > 
> > need drop that patch.
> 
> done. Was nervous about the patch already:

Somehow it seems to have undropped itself, so mem= stopped working
again in recent mmotm/linux-next; and it looks like today the
undropped patch has made its way to Linus - I've not built current
git to check, but I think you'll find mem= is now broken there.

Hugh

> 
>   http://lkml.org/lkml/2009/8/21/127
> 
> > also the problem was caused by vmi patch, and that commit should 
> > be reverted.
> >
> > commit ae8d04e2ecbb233926860e9ce145eac19c7835dc
> > Author: Zachary Amsden <zach@vmware.com>
> > Date:   Sat Dec 13 12:36:58 2008 -0800
> > 
> >     x86 Fix VMI crash on boot in 2.6.28-rc8
> >     
> >     VMI initialiation can relocate the fixmap, causing early_ioremap to
> >     malfunction if it is initialized before the relocation.  To fix this,
> >     VMI activation is split into two phases; the detection, which must
> >     happen before setting up ioremap, and the activation, which must happen
> >     after parsing early boot parameters.
> >     
> >     This fixes a crash on boot when VMI is enabled under VMware.
> >     
> >     Signed-off-by: Zachary Amsden <zach@vmware.com>
> >     Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
> > 
> > diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> > index 9d5674f..bdec76e 100644
> > --- a/arch/x86/kernel/setup.c
> > +++ b/arch/x86/kernel/setup.c
> > @@ -794,6 +794,9 @@ void __init setup_arch(char **cmdline_p)
> >         printk(KERN_INFO "Command line: %s\n", boot_command_line);
> >  #endif
> >  
> > +       /* VMI may relocate the fixmap; do this before touching ioremap area */
> > +       vmi_init();
> > +
> >         early_cpu_init();
> >         early_ioremap_init();
> >  
> > @@ -880,13 +883,8 @@ void __init setup_arch(char **cmdline_p)
> >         check_efer();
> >  #endif
> >  
> > -#if defined(CONFIG_VMI) && defined(CONFIG_X86_32)
> > -       /*
> > -        * Must be before kernel pagetables are setup
> > -        * or fixmap area is touched.
> > -        */
> > -       vmi_init();
> > -#endif
> > +       /* Must be before kernel pagetables are setup */
> > +       vmi_activate();
> >  
> >         /* after early param, so could get panic from serial */
> >         reserve_early_setup_data();
> > 
> > 
> > and according to
> > http://lkml.org/lkml/2008/12/10/388
> > http://lkml.org/lkml/2008/12/10/456
> > 
> > Zachary should split reserve_top_address() to two functions... 
> > before sending that patch to Linus
> 
> mind looking at this yourself if interested? Zachary has not been 
> active for quite some time.
> 
> 	Ingo

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: linux-next: reservetop fix disables mem=
  2009-09-16  0:23     ` Hugh Dickins
@ 2009-09-19 17:55       ` Ingo Molnar
  2009-09-19 18:02         ` Yinghai Lu
  0 siblings, 1 reply; 15+ messages in thread
From: Ingo Molnar @ 2009-09-19 17:55 UTC (permalink / raw)
  To: Hugh Dickins
  Cc: Yinghai Lu, Linus Torvalds, Zachary Amsden, H. Peter Anvin,
	Xiao Guangrong, Andrew Morton, linux-kernel


* Hugh Dickins <hugh.dickins@tiscali.co.uk> wrote:

> On Mon, 24 Aug 2009, Ingo Molnar wrote:
> > * Yinghai Lu <yinghai@kernel.org> wrote:
> > > Hugh Dickins wrote:
> > > > I find the "mem=" boot parameter disabled in today's linux-next:
> > > > reverting the tip commit below fixes that.
> > > > 
> > > > Hugh
> > > > 
> > > > From: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
> > > > Date: Thu, 20 Aug 2009 12:23:11 +0000 (+0800)
> > > > Subject: x86: Fix system crash when loading with "reservetop" parameter
> > > > X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fmingo%2Flinux-2.6-x86.git;a=commitdiff_plain;h=8126dec32738421afa362114337331337b4be17f
> > > > 
> > > > x86: Fix system crash when loading with "reservetop" parameter
> > > > 
> > > > The system will die if the kernel is booted with "reservetop"
> > > > parameter, in present code, parse "reservetop" parameter after
> > > > early_ioremap_init(), and some function still use
> > > > early_ioremap() after it.
> > > > 
> > > > The problem is, "reservetop" parameter can modify
> > > > 'FIXADDR_TOP', then the virtual address got by early_ioremap()
> > > > is base on old 'FIXADDR_TOP', but the page mapping is base on
> > > > new 'FIXADDR_TOP', it will occur page fault, and the IDT is not
> > > > prepare yet, so, the system is dead.
> > > > 
> > > > So, put parse_early_param() in the front of
> > > > early_ioremap_init() in this patch.
> > > > 
> > > > Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
> > > > Cc: yinghai@kernel.org
> > > > Cc: Andrew Morton <akpm@linux-foundation.org>
> > > > LKML-Reference: <4A8D402F.4080805@cn.fujitsu.com>
> > > > Signed-off-by: Ingo Molnar <mingo@elte.hu>
> > > > ---
> > > > 
> > > > diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> > > > index 63f32d2..02643cc 100644
> > > > --- a/arch/x86/kernel/setup.c
> > > > +++ b/arch/x86/kernel/setup.c
> > > > @@ -711,6 +711,11 @@ void __init setup_arch(char **cmdline_p)
> > > >  	printk(KERN_INFO "Command line: %s\n", boot_command_line);
> > > >  #endif
> > > >  
> > > > +	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
> > > > +	*cmdline_p = command_line;
> > > > +
> > > > +	parse_early_param();
> > > > +
> > > >  	/* VMI may relocate the fixmap; do this before touching ioremap area */
> > > >  	vmi_init();
> > > >  
> > > > @@ -793,11 +798,6 @@ void __init setup_arch(char **cmdline_p)
> > > >  #endif
> > > >  #endif
> > > >  
> > > > -	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
> > > > -	*cmdline_p = command_line;
> > > > -
> > > > -	parse_early_param();
> > > > -
> > > >  #ifdef CONFIG_X86_64
> > > >  	check_efer();
> > > >  #endif
> > > 
> > > yes, that patch will break other built-in command too.
> > > 
> > > need drop that patch.
> > 
> > done. Was nervous about the patch already:
> 
> Somehow it seems to have undropped itself, so mem= stopped working 
> again in recent mmotm/linux-next; and it looks like today the 
> undropped patch has made its way to Linus - I've not built current git 
> to check, but I think you'll find mem= is now broken there.

I thoroughly zapped it. Do you know about any commit ID where it snuck 
in?

	Ingo

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: linux-next: reservetop fix disables mem=
  2009-09-19 17:55       ` Ingo Molnar
@ 2009-09-19 18:02         ` Yinghai Lu
  2009-09-19 18:07           ` Yinghai Lu
  0 siblings, 1 reply; 15+ messages in thread
From: Yinghai Lu @ 2009-09-19 18:02 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Hugh Dickins, Linus Torvalds, Zachary Amsden, H. Peter Anvin,
	Xiao Guangrong, Andrew Morton, linux-kernel

Ingo Molnar wrote:
> I thoroughly zapped it. Do you know about any commit ID where it snuck 
> in?

after close looking, it will break
1. some cpu feature  in early stage too, like cpu_has_x2apic
2. will break built-in-command line
3. will break other memmap= and mem=
4. early_dbgp and early_console that will use early_ioremap to access mmio (?)

YH

commit 8126dec32738421afa362114337331337b4be17f
Author: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Date:   Thu Aug 20 20:23:11 2009 +0800

    x86: Fix system crash when loading with "reservetop" parameter
    
    The system will die if the kernel is booted with "reservetop"
    parameter, in present code, parse "reservetop" parameter after
    early_ioremap_init(), and some function still use
    early_ioremap() after it.
    
    The problem is, "reservetop" parameter can modify
    'FIXADDR_TOP', then the virtual address got by early_ioremap()
    is base on old 'FIXADDR_TOP', but the page mapping is base on
    new 'FIXADDR_TOP', it will occur page fault, and the IDT is not
    prepare yet, so, the system is dead.
    
    So, put parse_early_param() in the front of
    early_ioremap_init() in this patch.
    
    Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
    Cc: yinghai@kernel.org
    Cc: Andrew Morton <akpm@linux-foundation.org>
    LKML-Reference: <4A8D402F.4080805@cn.fujitsu.com>
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 63f32d2..02643cc 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -711,6 +711,11 @@ void __init setup_arch(char **cmdline_p)
        printk(KERN_INFO "Command line: %s\n", boot_command_line);
 #endif
 
+       strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
+       *cmdline_p = command_line;
+
+       parse_early_param();
+
        /* VMI may relocate the fixmap; do this before touching ioremap area */
        vmi_init();
 
@@ -793,11 +798,6 @@ void __init setup_arch(char **cmdline_p)
 #endif
 #endif
 
-       strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
-       *cmdline_p = command_line;
-
-       parse_early_param();
-
 #ifdef CONFIG_X86_64
        check_efer();
 #endif



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: linux-next: reservetop fix disables mem=
  2009-09-19 18:02         ` Yinghai Lu
@ 2009-09-19 18:07           ` Yinghai Lu
  2009-09-19 18:32             ` Ingo Molnar
  2009-09-19 18:33             ` [tip:x86/urgent] Revert 'x86: Fix system crash when loading with "reservetop" parameter' tip-bot for Yinghai Lu
  0 siblings, 2 replies; 15+ messages in thread
From: Yinghai Lu @ 2009-09-19 18:07 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Hugh Dickins, Linus Torvalds, H. Peter Anvin, Thomas Gleixner,
	Andrew Morton, linux-kernel

Yinghai Lu wrote:
> Ingo Molnar wrote:
>> I thoroughly zapped it. Do you know about any commit ID where it snuck 
>> in?
> 
> after close looking, it will break
> 1. some cpu feature  in early stage too, like cpu_has_x2apic
> 2. will break built-in-command line
> 3. will break other memmap= and mem=
> 4. early_dbgp and early_console that will use early_ioremap to access mmio (?)
> 
> YH
> 
> commit 8126dec32738421afa362114337331337b4be17f
> Author: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
> Date:   Thu Aug 20 20:23:11 2009 +0800
> 
>     x86: Fix system crash when loading with "reservetop" parameter
>     
>     The system will die if the kernel is booted with "reservetop"
>     parameter, in present code, parse "reservetop" parameter after
>     early_ioremap_init(), and some function still use
>     early_ioremap() after it.
>     
>     The problem is, "reservetop" parameter can modify
>     'FIXADDR_TOP', then the virtual address got by early_ioremap()
>     is base on old 'FIXADDR_TOP', but the page mapping is base on
>     new 'FIXADDR_TOP', it will occur page fault, and the IDT is not
>     prepare yet, so, the system is dead.
>     
>     So, put parse_early_param() in the front of
>     early_ioremap_init() in this patch.
>     
>     Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
>     Cc: yinghai@kernel.org
>     Cc: Andrew Morton <akpm@linux-foundation.org>
>     LKML-Reference: <4A8D402F.4080805@cn.fujitsu.com>
>     Signed-off-by: Ingo Molnar <mingo@elte.hu>
> 
after revet it, it seem mem=32g etc still broken, maybe some other commit about x86 platform support from Thomas broke it.

YH

---
 arch/x86/kernel/setup.c |   30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

Index: linux-2.6/arch/x86/kernel/setup.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/setup.c
+++ linux-2.6/arch/x86/kernel/setup.c
@@ -697,21 +697,6 @@ void __init setup_arch(char **cmdline_p)
 	printk(KERN_INFO "Command line: %s\n", boot_command_line);
 #endif
 
-	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
-	*cmdline_p = command_line;
-
-#ifdef CONFIG_X86_64
-	/*
-	 * Must call this twice: Once just to detect whether hardware doesn't
-	 * support NX (so that the early EHCI debug console setup can safely
-	 * call set_fixmap(), and then again after parsing early parameters to
-	 * honor the respective command line option.
-	 */
-	check_efer();
-#endif
-
-	parse_early_param();
-
 	/* VMI may relocate the fixmap; do this before touching ioremap area */
 	vmi_init();
 
@@ -794,6 +779,21 @@ void __init setup_arch(char **cmdline_p)
 #endif
 #endif
 
+	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
+	*cmdline_p = command_line;
+
+#ifdef CONFIG_X86_64
+	/*
+	 * Must call this twice: Once just to detect whether hardware doesn't
+	 * support NX (so that the early EHCI debug console setup can safely
+	 * call set_fixmap(), and then again after parsing early parameters to
+	 * honor the respective command line option.
+	 */
+	check_efer();
+#endif
+
+	parse_early_param();
+
 #ifdef CONFIG_X86_64
 	check_efer();
 #endif

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: linux-next: reservetop fix disables mem=
  2009-09-19 18:07           ` Yinghai Lu
@ 2009-09-19 18:32             ` Ingo Molnar
  2009-09-19 18:33             ` [tip:x86/urgent] Revert 'x86: Fix system crash when loading with "reservetop" parameter' tip-bot for Yinghai Lu
  1 sibling, 0 replies; 15+ messages in thread
From: Ingo Molnar @ 2009-09-19 18:32 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Hugh Dickins, Linus Torvalds, H. Peter Anvin, Thomas Gleixner,
	Andrew Morton, linux-kernel


* Yinghai Lu <yinghai@kernel.org> wrote:

> Yinghai Lu wrote:
> > Ingo Molnar wrote:
> >> I thoroughly zapped it. Do you know about any commit ID where it snuck 
> >> in?
> > 
> > after close looking, it will break
> > 1. some cpu feature  in early stage too, like cpu_has_x2apic
> > 2. will break built-in-command line
> > 3. will break other memmap= and mem=
> > 4. early_dbgp and early_console that will use early_ioremap to access mmio (?)

thanks Yinghai - i have queued up your revert. Thanks Hugh for noticing 
it!

> after revet it, it seem mem=32g etc still broken, maybe some other 
> commit about x86 platform support from Thomas broke it.

Thomas?

	Ingo

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [tip:x86/urgent] Revert 'x86: Fix system crash when loading with "reservetop" parameter'
  2009-09-19 18:07           ` Yinghai Lu
  2009-09-19 18:32             ` Ingo Molnar
@ 2009-09-19 18:33             ` tip-bot for Yinghai Lu
  1 sibling, 0 replies; 15+ messages in thread
From: tip-bot for Yinghai Lu @ 2009-09-19 18:33 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, yinghai, tglx, mingo

Commit-ID:  eda6da9286ad5b35b1eb70f6368958a8ee41a9dd
Gitweb:     http://git.kernel.org/tip/eda6da9286ad5b35b1eb70f6368958a8ee41a9dd
Author:     Yinghai Lu <yinghai@kernel.org>
AuthorDate: Sat, 19 Sep 2009 11:07:57 -0700
Committer:  Ingo Molnar <mingo@elte.hu>
CommitDate: Sat, 19 Sep 2009 20:31:33 +0200

Revert 'x86: Fix system crash when loading with "reservetop" parameter'

After close looking, commit 8126dec3 will break:

 1. some cpu feature  in early stage too, like cpu_has_x2apic
 2. will break built-in-command line
 3. will break other memmap= and mem=
 4. early_dbgp and early_console that will use early_ioremap to access mmio (?)

So revert it.

Reported-by: Hugh Dickins <hugh.dickins@tiscali.co.uk>,
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Cc: Andrew Morton <akpm@linux-foundation.org>,
LKML-Reference: <4AB51DFD.2000904@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>


---
 arch/x86/kernel/setup.c |   30 +++++++++++++++---------------
 1 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 19f15c4..f5baa2a 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -712,21 +712,6 @@ void __init setup_arch(char **cmdline_p)
 	printk(KERN_INFO "Command line: %s\n", boot_command_line);
 #endif
 
-	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
-	*cmdline_p = command_line;
-
-#ifdef CONFIG_X86_64
-	/*
-	 * Must call this twice: Once just to detect whether hardware doesn't
-	 * support NX (so that the early EHCI debug console setup can safely
-	 * call set_fixmap(), and then again after parsing early parameters to
-	 * honor the respective command line option.
-	 */
-	check_efer();
-#endif
-
-	parse_early_param();
-
 	/* VMI may relocate the fixmap; do this before touching ioremap area */
 	vmi_init();
 
@@ -809,6 +794,21 @@ void __init setup_arch(char **cmdline_p)
 #endif
 #endif
 
+	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
+	*cmdline_p = command_line;
+
+#ifdef CONFIG_X86_64
+	/*
+	 * Must call this twice: Once just to detect whether hardware doesn't
+	 * support NX (so that the early EHCI debug console setup can safely
+	 * call set_fixmap(), and then again after parsing early parameters to
+	 * honor the respective command line option.
+	 */
+	check_efer();
+#endif
+
+	parse_early_param();
+
 #ifdef CONFIG_X86_64
 	check_efer();
 #endif

^ permalink raw reply related	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2009-09-19 18:34 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-24 16:45 linux-next: reservetop fix disables mem= Hugh Dickins
2009-08-24 17:38 ` Yinghai Lu
2009-08-24 18:27   ` Ingo Molnar
2009-08-28 19:28     ` Yinghai Lu
2009-09-06  6:56     ` Yinghai Lu
2009-09-16  0:23     ` Hugh Dickins
2009-09-19 17:55       ` Ingo Molnar
2009-09-19 18:02         ` Yinghai Lu
2009-09-19 18:07           ` Yinghai Lu
2009-09-19 18:32             ` Ingo Molnar
2009-09-19 18:33             ` [tip:x86/urgent] Revert 'x86: Fix system crash when loading with "reservetop" parameter' tip-bot for Yinghai Lu
2009-08-26  1:13   ` linux-next: reservetop fix disables mem= Xiao Guangrong
2009-09-01  7:55     ` [RFC][PATCH] x86: introduce parse_early_param_alone() to parse param early (Was Re: linux-next: reservetop fix disables mem= ) Xiao Guangrong
2009-09-01 15:17       ` Américo Wang
2009-09-03  6:04         ` Xiao Guangrong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox