[<prev] [next>] [day] [month] [year] [list]
Message-ID: <52293118.8080707@cn.fujitsu.com>
Date: Fri, 06 Sep 2013 09:34:16 +0800
From: Tang Chen <tangchen@...fujitsu.com>
To: Wanpeng Li <liwanp@...ux.vnet.ibm.com>
CC: rjw@...k.pl, lenb@...nel.org, tglx@...utronix.de, mingo@...e.hu,
hpa@...or.com, akpm@...ux-foundation.org, tj@...nel.org,
trenn@...e.de, yinghai@...nel.org, jiang.liu@...wei.com,
wency@...fujitsu.com, laijs@...fujitsu.com,
isimatu.yasuaki@...fujitsu.com, izumi.taku@...fujitsu.com,
mgorman@...e.de, minchan@...nel.org, mina86@...a86.com,
gong.chen@...ux.intel.com, vasilis.liaskovitis@...fitbricks.com,
lwoodman@...hat.com, riel@...hat.com, jweiner@...hat.com,
prarit@...hat.com, zhangyanfei@...fujitsu.com, x86@...nel.org,
linux-doc@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-mm@...ck.org, linux-acpi@...r.kernel.org
Subject: Re: [PATCH 10/11] x86, mem-hotplug: Support initialize page tables
from low to high.
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@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists