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_ORDER-1) 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