From: Changsheng Liu <liuchangcheng@xxxxxxxxxx>
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 <akpm@xxxxxxxxxxxxxxxxxxxx>
Signed-off-by: Changsheng Liu <liuchangcheng@xxxxxxxxxx>
Tested-by: Dongdong Fan <fandd@xxxxxxxxxx>
---
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;