linux/include/linux/page-isolation.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef __LINUX_PAGEISOLATION_H
   3#define __LINUX_PAGEISOLATION_H
   4
   5#ifdef CONFIG_MEMORY_ISOLATION
   6static inline bool has_isolate_pageblock(struct zone *zone)
   7{
   8        return zone->nr_isolate_pageblock;
   9}
  10static inline bool is_migrate_isolate_page(struct page *page)
  11{
  12        return get_pageblock_migratetype(page) == MIGRATE_ISOLATE;
  13}
  14static inline bool is_migrate_isolate(int migratetype)
  15{
  16        return migratetype == MIGRATE_ISOLATE;
  17}
  18#else
  19static inline bool has_isolate_pageblock(struct zone *zone)
  20{
  21        return false;
  22}
  23static inline bool is_migrate_isolate_page(struct page *page)
  24{
  25        return false;
  26}
  27static inline bool is_migrate_isolate(int migratetype)
  28{
  29        return false;
  30}
  31#endif
  32
  33#define SKIP_HWPOISON   0x1
  34#define REPORT_FAILURE  0x2
  35
  36bool has_unmovable_pages(struct zone *zone, struct page *page, int count,
  37                         int migratetype, int flags);
  38void set_pageblock_migratetype(struct page *page, int migratetype);
  39int move_freepages_block(struct zone *zone, struct page *page,
  40                                int migratetype, int *num_movable);
  41
  42/*
  43 * Changes migrate type in [start_pfn, end_pfn) to be MIGRATE_ISOLATE.
  44 */
  45int
  46start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn,
  47                         unsigned migratetype, int flags);
  48
  49/*
  50 * Changes MIGRATE_ISOLATE to MIGRATE_MOVABLE.
  51 * target range is [start_pfn, end_pfn)
  52 */
  53int
  54undo_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn,
  55                        unsigned migratetype);
  56
  57/*
  58 * Test all pages in [start_pfn, end_pfn) are isolated or not.
  59 */
  60int test_pages_isolated(unsigned long start_pfn, unsigned long end_pfn,
  61                        bool skip_hwpoisoned_pages);
  62
  63struct page *alloc_migrate_target(struct page *page, unsigned long private);
  64
  65#endif
  66