On Sun, 21 Nov 2010, AmÃrico Wang wrote: > >> > > > > Index: linux-hpe4/arch/x86/kernel/e820.c > >> > > > > =================================================================== > >> > > > > --- linux-hpe4.orig/arch/x86/kernel/e820.c 2010-11-15 17:13:02.483461667 +0800 > >> > > > > +++ linux-hpe4/arch/x86/kernel/e820.c 2010-11-15 17:13:07.083461581 +0800 > >> > > > > @@ -971,6 +971,7 @@ > >> > > > > } > >> > > > > > >> > > > > static int userdef __initdata; > >> > > > > +static u64 max_mem_size __initdata = ULLONG_MAX; > >> > > > > > >> > > > > /* "mem=nopentium" disables the 4MB page tables. */ > >> > > > > static int __init parse_memopt(char *p) > >> > > > > @@ -989,12 +990,28 @@ > >> > > > > > >> > > > > userdef = 1; > >> > > > > mem_size = memparse(p, &p); > >> > > > > - e820_remove_range(mem_size, ULLONG_MAX - mem_size, E820_RAM, 1); > >> > > > > + e820_remove_range(mem_size, max_mem_size - mem_size, E820_RAM, 1); > >> > > > > + max_mem_size = mem_size; > >> > > > > > >> > > > > return 0; > >> > > > > } > >> > > > > >> > > > This needs memmap= support as well, right? > >> > > we did not do the testing after combine both memmap and numa=hide paramter, > >> > > I think that the result should similar with mem=XX, they both remove a memory > >> > > region from the e820 table. > >> > > > >> > > >> > You've modified the parser for mem= but not memmap= so the change needs > >> > additional support for the latter. > >> > > >> > >> the parser for mem= is not modified, the changed parser is numa=, I add a addtional > >> option numa=hide=. > >> > > > >The above hunk is modifying the x86 parser for the mem= parameter. > > > > That is fine as long as "mem=" is parsed before "numa=". > If you'll read the discussion, I had no problem with modifying the mem parser. I merely suggested that Shaohui modify the memmap parser in the same way to save max_mem_size so users can use it as well for the hidden nodes, that are now obsolete. Apparently that was misunderstood by both of you although it looks pretty clear above, I dunno.