These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / mm / page_isolation.c
index 303c908..4568fd5 100644 (file)
@@ -9,7 +9,8 @@
 #include <linux/hugetlb.h>
 #include "internal.h"
 
-int set_migratetype_isolate(struct page *page, bool skip_hwpoisoned_pages)
+static int set_migratetype_isolate(struct page *page,
+                               bool skip_hwpoisoned_pages)
 {
        struct zone *zone;
        unsigned long flags, pfn;
@@ -72,7 +73,7 @@ out:
        return ret;
 }
 
-void unset_migratetype_isolate(struct page *page, unsigned migratetype)
+static void unset_migratetype_isolate(struct page *page, unsigned migratetype)
 {
        struct zone *zone;
        unsigned long flags, nr_pages;
@@ -223,34 +224,16 @@ __test_page_isolated_in_pageblock(unsigned long pfn, unsigned long end_pfn,
                        continue;
                }
                page = pfn_to_page(pfn);
-               if (PageBuddy(page)) {
+               if (PageBuddy(page))
                        /*
-                        * If race between isolatation and allocation happens,
-                        * some free pages could be in MIGRATE_MOVABLE list
-                        * although pageblock's migratation type of the page
-                        * is MIGRATE_ISOLATE. Catch it and move the page into
-                        * MIGRATE_ISOLATE list.
+                        * If the page is on a free list, it has to be on
+                        * the correct MIGRATE_ISOLATE freelist. There is no
+                        * simple way to verify that as VM_BUG_ON(), though.
                         */
-                       if (get_freepage_migratetype(page) != MIGRATE_ISOLATE) {
-                               struct page *end_page;
-
-                               end_page = page + (1 << page_order(page)) - 1;
-                               move_freepages(page_zone(page), page, end_page,
-                                               MIGRATE_ISOLATE);
-                       }
                        pfn += 1 << page_order(page);
-               }
-               else if (page_count(page) == 0 &&
-                       get_freepage_migratetype(page) == MIGRATE_ISOLATE)
-                       pfn += 1;
-               else if (skip_hwpoisoned_pages && PageHWPoison(page)) {
-                       /*
-                        * The HWPoisoned page may be not in buddy
-                        * system, and page_count() is not 0.
-                        */
+               else if (skip_hwpoisoned_pages && PageHWPoison(page))
+                       /* A HWPoisoned page cannot be also PageBuddy */
                        pfn++;
-                       continue;
-               }
                else
                        break;
        }