Branch data Line data Source code
1 : : /* SPDX-License-Identifier: GPL-2.0 */ 2 : : #ifndef __LINUX_PAGEISOLATION_H 3 : : #define __LINUX_PAGEISOLATION_H 4 : : 5 : : #ifdef CONFIG_MEMORY_ISOLATION 6 : : static inline bool has_isolate_pageblock(struct zone *zone) 7 : : { 8 : 3 : return zone->nr_isolate_pageblock; 9 : : } 10 : 3 : static inline bool is_migrate_isolate_page(struct page *page) 11 : : { 12 : 3 : return get_pageblock_migratetype(page) == MIGRATE_ISOLATE; 13 : : } 14 : : static inline bool is_migrate_isolate(int migratetype) 15 : : { 16 : 3 : return migratetype == MIGRATE_ISOLATE; 17 : : } 18 : : #else 19 : : static inline bool has_isolate_pageblock(struct zone *zone) 20 : : { 21 : : return false; 22 : : } 23 : : static inline bool is_migrate_isolate_page(struct page *page) 24 : : { 25 : : return false; 26 : : } 27 : : static 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 : : 36 : : bool has_unmovable_pages(struct zone *zone, struct page *page, int count, 37 : : int migratetype, int flags); 38 : : void set_pageblock_migratetype(struct page *page, int migratetype); 39 : : int 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 : : */ 45 : : int 46 : : start_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 : : */ 53 : : void 54 : : undo_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 : : */ 60 : : int test_pages_isolated(unsigned long start_pfn, unsigned long end_pfn, 61 : : bool skip_hwpoisoned_pages); 62 : : 63 : : struct page *alloc_migrate_target(struct page *page, unsigned long private); 64 : : 65 : : #endif