]>
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 | ||
4a55c047 QC |
36 | struct page *has_unmovable_pages(struct zone *zone, struct page *page, |
37 | int migratetype, int flags); | |
ee6f509c MK |
38 | void set_pageblock_migratetype(struct page *page, int migratetype); |
39 | int move_freepages_block(struct zone *zone, struct page *page, | |
02aa0cdd | 40 | int migratetype, int *num_movable); |
435b405c | 41 | |
a5d76b54 KH |
42 | /* |
43 | * Changes migrate type in [start_pfn, end_pfn) to be MIGRATE_ISOLATE. | |
a5d76b54 | 44 | */ |
ee6f509c | 45 | int |
0815f3d8 | 46 | start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, |
d381c547 | 47 | unsigned migratetype, int flags); |
a5d76b54 KH |
48 | |
49 | /* | |
50 | * Changes MIGRATE_ISOLATE to MIGRATE_MOVABLE. | |
51 | * target range is [start_pfn, end_pfn) | |
52 | */ | |
1fcf0a56 | 53 | void |
0815f3d8 MN |
54 | undo_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, |
55 | unsigned migratetype); | |
a5d76b54 KH |
56 | |
57 | /* | |
0815f3d8 | 58 | * Test all pages in [start_pfn, end_pfn) are isolated or not. |
a5d76b54 | 59 | */ |
b023f468 | 60 | int test_pages_isolated(unsigned long start_pfn, unsigned long end_pfn, |
756d25be | 61 | int isol_flags); |
a5d76b54 | 62 | |
666feb21 | 63 | struct page *alloc_migrate_target(struct page *page, unsigned long private); |
a5d76b54 KH |
64 | |
65 | #endif |