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 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); shuffle_free_memory(pg_data_t * pgdat)13static 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); shuffle_zone(struct zone * z)21static 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 is_shuffle_order(int order)28static 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 shuffle_pick_tail(void)35static inline bool shuffle_pick_tail(void) 36 { 37 return false; 38 } 39 shuffle_free_memory(pg_data_t * pgdat)40static inline void shuffle_free_memory(pg_data_t *pgdat) 41 { 42 } 43 shuffle_zone(struct zone * z)44static inline void shuffle_zone(struct zone *z) 45 { 46 } 47 is_shuffle_order(int order)48static inline bool is_shuffle_order(int order) 49 { 50 return false; 51 } 52 #endif 53 #endif /* _MM_SHUFFLE_H */ 54