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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Tang,
On Fri, Sep 06, 2013 at 09:34:16AM +0800, Tang Chen wrote:
>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.

You are right. 

I mean the change should be:

+#ifdef CONFIG_MOVABLE_NODE
+       unsigned long kernel_end;
+
+       if (movablenode_enable_srat) {

The is unnecessary to check memblock.current_order since it is always true
if movable_node is configured and movablenode_enable_srat is true.

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

Thanks for the great explanation. ;-)

>>
>......
>>
>>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 ?
>

Agreed.

Regards,
Wanpeng Li 

>Thanks.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]