First, thanks very much for your review, I will update codes according to your suggestion

On 2015/8/25 21:12, Yasuaki Ishimatsu wrote:
On Thu, 20 Aug 2015 03:28:05 -0400
Changsheng Liu <[email protected]> wrote:

From: Changsheng Liu <[email protected]>

When memory is hot added, should_add_memory_movable() always returns 0
because the movable zone is empty, so the memory that was hot added will
add to the normal zone even if we want to remove the memory.

So we change should_add_memory_movable(): if the user config
CONFIG_MOVABLE_NODE it will return 1 when the movable zone is empty.

Reviewed-by: Andrew Morton <[email protected]>
Signed-off-by: Changsheng Liu <[email protected]>
Tested-by: Dongdong Fan <[email protected]>
---
  mm/memory_hotplug.c |    3 +--
  1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 26fbba7..ff658f2 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -1199,8 +1199,7 @@ static int should_add_memory_movable(int nid, u64 start, 
u64 size)
        struct zone *movable_zone = pgdat->node_zones + ZONE_MOVABLE;
if (zone_is_empty(movable_zone))
-               return 0;
-
+               return IS_ENABLED(CONFIG_MOVABLE_NODE);
        if (movable_zone->zone_start_pfn <= start_pfn)
                return 1;
Currently, kernel allows to create ZONE_MOVABLE after ZONE_NORMAL as follows:
  PFN low                                 high
        ---|-------------|-------------|---
             ZONE_NORMAL   ZONE_MOVABLE

But kernel does not allow to create ZONE_MOVABLE before ZONE_NORMAL as follows:
  PFN low                                 high
        ---|-------------|-------------|---
             ZONE_MOVABLE  ZONE_NORMAL

Also, kernel does not allow to create ZONE_MOVABLE in ZOME_NORMAL as follows:
  PFN low                                              high
        ---|-------------|-------------|-------------|---
             ZONE_NORMAL   ZONE_MOVABLE  ZONE_NORMAL

So should_add_memory_movable() checks them.

Accoring to your patch, when movable_zone is empty, the hot added memory is
always managed to ZONE_MOVABLE. It means that ZONE_MOVALBE will puts before/in
ZONE_NORMAL.

You must prevent from creating ZONE_MOVABLE before/in ZONE_NORMAL.

Thanks,
Yasuaki Ishimatsu

--
1.7.1

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


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to