[RFC PATCH 11/16] mm: Sets the migrate type in gfp_t flags

From: Juan Yescas

Date: Thu Jul 23 2026 - 03:59:18 EST


This change sets the selected migrate type in gfp_t flags.

Signed-off-by: Juan Yescas <jyescas@xxxxxxxxxx>
---
mm/page_alloc_hogger.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)

diff --git a/mm/page_alloc_hogger.c b/mm/page_alloc_hogger.c
index 5c00e9134a66..d91f49880f8d 100644
--- a/mm/page_alloc_hogger.c
+++ b/mm/page_alloc_hogger.c
@@ -156,6 +156,24 @@ inline void set_zone_to_alloc_from(int zone_idx, gfp_t *flags_ptr)
}
}

+inline void set_migrate_type_to_alloc_from(int migrate_type, gfp_t *flags_ptr)
+{
+ switch (migrate_type) {
+ case MIGRATE_UNMOVABLE:
+ *flags_ptr &= ~(__GFP_RECLAIMABLE | __GFP_MOVABLE);
+ break;
+ case MIGRATE_RECLAIMABLE:
+ *flags_ptr |= __GFP_RECLAIMABLE;
+ break;
+ case MIGRATE_HIGHATOMIC:
+ *flags_ptr |= __GFP_HIGH;
+ break;
+ case MIGRATE_MOVABLE: default:
+ *flags_ptr |= __GFP_MOVABLE;
+ break;
+ }
+}
+
/**
* req_page_alloc_write() - Allocates the pages on the requested node, zone,
* order and migrate type. Once the allocation is performed, a file is created
@@ -180,6 +198,7 @@ static ssize_t req_page_alloc_write(struct file *file, const char __user *ubuf,
return -ENOMEM;

set_zone_to_alloc_from(req->zone_idx, &flags);
+ set_migrate_type_to_alloc_from(req->migrate_type, &flags);

return cnt;
}
--
2.55.0.229.g6434b31f56-goog