Re: [PATCH v6 00/15] memory-hotplug: hot-remove physical memory
From: Simon Jeons <hidden>
Date: 2013-01-31 08:17:20
Also in:
linux-acpi, linux-mm, linux-s390, linux-sh, linuxppc-dev, lkml
Hi Tang, On Thu, 2013-01-31 at 15:10 +0800, Tang Chen wrote:
On 01/31/2013 02:19 PM, Simon Jeons wrote:quoted
Hi Tang, On Thu, 2013-01-31 at 11:31 +0800, Tang Chen wrote:quoted
Hi Simon, Please see below. :) On 01/31/2013 09:22 AM, Simon Jeons wrote:quoted
Sorry, I still confuse. :( update node_states[N_NORMAL_MEMORY] to node_states[N_MEMORY] or node_states[N_NORMAL_MEMOR] present 0...ZONE_MOVABLE? node_states is what? node_states[N_NORMAL_MEMOR] or node_states[N_MEMORY]?Are you asking what node_states[] is ? node_states[] is an array of nodemask, extern nodemask_t node_states[NR_NODE_STATES]; For example, node_states[N_NORMAL_MEMOR] represents which nodes have normal memory. If N_MEMORY = N_HIGH_MEMORY = N_NORMAL_MEMORY, node_states[N_MEMORY] is node_states[N_NORMAL_MEMOR]. So it represents which nodes have 0 ... ZONE_MOVABLE.Sorry, how can nodes_state[N_NORMAL_MEMORY] represents a node have 0 ... *ZONE_MOVABLE*, the comment of enum nodes_states said that N_NORMAL_MEMORY just means the node has regular memory.Hi Simon, Let's say it in this way. If we don't have CONFIG_HIGHMEM, N_HIGH_MEMORY = N_NORMAL_MEMORY. We don't have a separate macro to represent highmem because we don't have highmem. This is easy to understand, right ? Now, think it just like above: If we don't have CONFIG_MOVABLE_NODE, N_MEMORY = N_HIGH_MEMORY = N_NORMAL_MEMORY. This means we don't allow a node to have only movable memory, not we don't have movable memory. A node could have normal memory and movable memory. So nodes_state[N_NORMAL_MEMORY] represents a node have 0 ... *ZONE_MOVABLE*. I think the point is: CONFIG_MOVABLE_NODE means we allow a node to have only movable memory. So without CONFIG_MOVABLE_NODE, it doesn't mean a node cannot have movable memory. It means the node cannot have only movable memory. It can have normal memory and movable memory. 1) With CONFIG_MOVABLE_NODE: N_NORMAL_MEMORY: nodes who have normal memory. normal memory only normal and highmem normal and highmem and movablemem normal and movablemem N_MEMORY: nodes who has memory (any memory) normal memory only normal and highmem normal and highmem and movablemem normal and movablemem ---------------- We can have movablemem. highmem only ------------------------- highmem and movablemem --------------- movablemem only ---------------------- We can have movablemem only. *** 2) With out CONFIG_MOVABLE_NODE: N_MEMORY = N_NORMAL_MEMORY: (Here, I omit N_HIGH_MEMORY) normal memory only normal and highmem normal and highmem and movablemem normal and movablemem ---------------- We can have movablemem. No movablemem only ------------------- We cannot have movablemem only. *** The semantics is not that clear here. So we can only try to understand it from the code where we use N_MEMORY. :) That is my understanding of this.
Thanks for your clarify, very clear now. :)
Thanks. :) -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>