1 | // SPDX-License-Identifier: GPL-2.0 |
---|---|
2 | // Copyright(c) 2018 Intel Corporation. All rights reserved. |
3 | #ifndef _MM_SHUFFLE_H |
4 | #define _MM_SHUFFLE_H |
5 | #include <linux/jump_label.h> |
6 | |
7 | #define SHUFFLE_ORDER MAX_PAGE_ORDER |
8 | |
9 | #ifdef CONFIG_SHUFFLE_PAGE_ALLOCATOR |
10 | DECLARE_STATIC_KEY_FALSE(page_alloc_shuffle_key); |
11 | extern void __shuffle_free_memory(pg_data_t *pgdat); |
12 | extern bool shuffle_pick_tail(void); |
13 | static inline void __meminit shuffle_free_memory(pg_data_t *pgdat) |
14 | { |
15 | if (!static_branch_unlikely(&page_alloc_shuffle_key)) |
16 | return; |
17 | __shuffle_free_memory(pgdat); |
18 | } |
19 | |
20 | extern void __shuffle_zone(struct zone *z); |
21 | static inline void __meminit shuffle_zone(struct zone *z) |
22 | { |
23 | if (!static_branch_unlikely(&page_alloc_shuffle_key)) |
24 | return; |
25 | __shuffle_zone(z); |
26 | } |
27 | |
28 | static inline bool is_shuffle_order(int order) |
29 | { |
30 | if (!static_branch_unlikely(&page_alloc_shuffle_key)) |
31 | return false; |
32 | return order >= SHUFFLE_ORDER; |
33 | } |
34 | #else |
35 | static inline bool shuffle_pick_tail(void) |
36 | { |
37 | return false; |
38 | } |
39 | |
40 | static inline void shuffle_free_memory(pg_data_t *pgdat) |
41 | { |
42 | } |
43 | |
44 | static inline void shuffle_zone(struct zone *z) |
45 | { |
46 | } |
47 | |
48 | static inline bool is_shuffle_order(int order) |
49 | { |
50 | return false; |
51 | } |
52 | #endif |
53 | #endif /* _MM_SHUFFLE_H */ |
54 |