aboutsummaryrefslogtreecommitdiffstats
path: root/mm/page_alloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r--mm/page_alloc.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 6de9440e3ae2..97170131f2ab 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -2133,7 +2133,8 @@ __rmqueue_fallback(struct zone *zone, unsigned int order, int start_migratetype)
2133 2133
2134 page = list_first_entry(&area->free_list[fallback_mt], 2134 page = list_first_entry(&area->free_list[fallback_mt],
2135 struct page, lru); 2135 struct page, lru);
2136 if (can_steal) 2136 if (can_steal &&
2137 get_pageblock_migratetype(page) != MIGRATE_HIGHATOMIC)
2137 steal_suitable_fallback(zone, page, start_migratetype); 2138 steal_suitable_fallback(zone, page, start_migratetype);
2138 2139
2139 /* Remove the page from the freelists */ 2140 /* Remove the page from the freelists */
@@ -2534,7 +2535,8 @@ int __isolate_free_page(struct page *page, unsigned int order)
2534 struct page *endpage = page + (1 << order) - 1; 2535 struct page *endpage = page + (1 << order) - 1;
2535 for (; page < endpage; page += pageblock_nr_pages) { 2536 for (; page < endpage; page += pageblock_nr_pages) {
2536 int mt = get_pageblock_migratetype(page); 2537 int mt = get_pageblock_migratetype(page);
2537 if (!is_migrate_isolate(mt) && !is_migrate_cma(mt)) 2538 if (!is_migrate_isolate(mt) && !is_migrate_cma(mt)
2539 && mt != MIGRATE_HIGHATOMIC)
2538 set_pageblock_migratetype(page, 2540 set_pageblock_migratetype(page,
2539 MIGRATE_MOVABLE); 2541 MIGRATE_MOVABLE);
2540 } 2542 }