Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
a5d76b54 KH |
2 | #ifndef __LINUX_PAGEISOLATION_H |
3 | #define __LINUX_PAGEISOLATION_H | |
4 | ||
194159fb | 5 | #ifdef CONFIG_MEMORY_ISOLATION |
ad53f92e JK |
6 | static inline bool has_isolate_pageblock(struct zone *zone) |
7 | { | |
8 | return zone->nr_isolate_pageblock; | |
9 | } | |
194159fb MK |
10 | static inline bool is_migrate_isolate_page(struct page *page) |
11 | { | |
12 | return get_pageblock_migratetype(page) == MIGRATE_ISOLATE; | |
13 | } | |
14 | static inline bool is_migrate_isolate(int migratetype) | |
15 | { | |
16 | return migratetype == MIGRATE_ISOLATE; | |
17 | } | |
18 | #else | |
ad53f92e JK |
19 | static inline bool has_isolate_pageblock(struct zone *zone) |
20 | { | |
21 | return false; | |
22 | } | |
194159fb MK |
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 | |
ee6f509c | 32 | |
756d25be | 33 | #define MEMORY_OFFLINE 0x1 |
d381c547 MH |
34 | #define REPORT_FAILURE 0x2 |
35 | ||
ee6f509c MK |
36 | void set_pageblock_migratetype(struct page *page, int migratetype); |
37 | int move_freepages_block(struct zone *zone, struct page *page, | |
02aa0cdd | 38 | int migratetype, int *num_movable); |
435b405c | 39 | |
a5d76b54 KH |
40 | /* |
41 | * Changes migrate type in [start_pfn, end_pfn) to be MIGRATE_ISOLATE. | |
a5d76b54 | 42 | */ |
ee6f509c | 43 | int |
0815f3d8 | 44 | start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, |
b2c9e2fb | 45 | int migratetype, int flags, gfp_t gfp_flags); |
a5d76b54 KH |
46 | |
47 | /* | |
48 | * Changes MIGRATE_ISOLATE to MIGRATE_MOVABLE. | |
49 | * target range is [start_pfn, end_pfn) | |
50 | */ | |
1fcf0a56 | 51 | void |
0815f3d8 | 52 | undo_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, |
b2c9e2fb | 53 | int migratetype); |
a5d76b54 KH |
54 | |
55 | /* | |
0815f3d8 | 56 | * Test all pages in [start_pfn, end_pfn) are isolated or not. |
a5d76b54 | 57 | */ |
b023f468 | 58 | int test_pages_isolated(unsigned long start_pfn, unsigned long end_pfn, |
756d25be | 59 | int isol_flags); |
a5d76b54 | 60 | |
666feb21 | 61 | struct page *alloc_migrate_target(struct page *page, unsigned long private); |
a5d76b54 KH |
62 | |
63 | #endif |