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>