Re: [PATCH 10/11] x86, mem-hotplug: Support initialize page tablesfrom low to high.

From: Tang Chen
Date: Thu Sep 05 2013 - 21:35:46 EST


Hi Wanpeng,

Thank you for reviewing. See below, please.

On 09/05/2013 09:30 PM, Wanpeng Li wrote:
......
+#ifdef CONFIG_MOVABLE_NODE
+ unsigned long kernel_end;
+
+ if (movablenode_enable_srat&&
+ memblock.current_order == MEMBLOCK_ORDER_LOW_TO_HIGH) {

I think memblock.current_order == MEMBLOCK_ORDER_LOW_TO_HIGH is always
true if config MOVABLE_NODE and movablenode_enable_srat == true if PATCH
11/11 is applied.

memblock.current_order == MEMBLOCK_ORDER_LOW_TO_HIGH is true here if MOVABLE_NODE
is configured, and it will be reset after SRAT is parsed. But movablenode_enable_srat
could only be true when users specify movablenode boot option in the kernel commandline.

Please refer to patch 9/11.


+ kernel_end = round_up(__pa_symbol(_end), PMD_SIZE);
+
+ memory_map_from_low(kernel_end, end);
+ memory_map_from_low(ISA_END_ADDRESS, kernel_end);

Why split ISA_END_ADDRESS ~ end?

The first 5 pages for the page tables are from brk, please refer to alloc_low_pages().
They are able to map about 2MB memory. And this 2MB memory will be used to store
page tables for the next mapped pages.

Here, we split [ISA_END_ADDRESS, end) into [ISA_END_ADDRESS, _end) and [_end, end),
and map [_end, end) first. This is because memory in [ISA_END_ADDRESS, _end) may be
used, then we have not enough memory for the next coming page tables. We should map
[_end, end) first because this memory is highly likely unused.


......

I think the variables sorted by address is:
ISA_END_ADDRESS -> _end -> real_end -> end

Yes.


+ memory_map_from_high(ISA_END_ADDRESS, real_end);

If this is overlap with work done between #ifdef CONFIG_MOVABLE_NODE and
#endif?


I don't think so. Seeing from my code, if work between #ifdef CONFIG_MOVABLE_NODE and
#endif is done, it will goto out, right ?

Thanks.

--
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/