Re: [v2,1/8] NUMA Hotplug emulator

From: Paul Mundt
Date: Mon Nov 15 2010 - 01:37:55 EST


On Sat, Nov 13, 2010 at 02:14:16PM +0800, Shaohui Zheng wrote:
> diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c
> index 7bca3c6..1993275 100644
> --- a/arch/x86/kernel/e820.c
> +++ b/arch/x86/kernel/e820.c
> @@ -971,6 +971,7 @@ static void early_panic(char *msg)
> }
>
> 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 @@ static int __init parse_memopt(char *p)
>
> 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;
> }
> early_param("mem", parse_memopt);
>
> +#ifdef CONFIG_NODE_HOTPLUG_EMU
> +u64 __init e820_hide_mem(u64 mem_size)
> +{
> + u64 start, end_pfn;
> +
> + userdef = 1;
> + end_pfn = e820_end_of_ram_pfn();
> + start = (end_pfn << PAGE_SHIFT) - mem_size;
> + e820_remove_range(start, max_mem_size - start, E820_RAM, 1);
> + max_mem_size = start;
> +
> + return start;
> +}
> +#endif
> +

All of this could be done with the memblock API, it would be nice if
people would start building on top of that rather than constantly adding
pointless e820 wrappers.

As I also noted in my review of the first iteration of this patch series,
almost everything you have here is completely generic, please do not go
out of your way to create architectural dependence where none exists.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/