| // SPDX-License-Identifier: GPL-2.0 | 
 | // Copyright(c) 2018 Intel Corporation. All rights reserved. | 
 | #ifndef _MM_SHUFFLE_H | 
 | #define _MM_SHUFFLE_H | 
 | #include <linux/jump_label.h> | 
 |  | 
 | /* | 
 |  * SHUFFLE_ENABLE is called from the command line enabling path, or by | 
 |  * platform-firmware enabling that indicates the presence of a | 
 |  * direct-mapped memory-side-cache. SHUFFLE_FORCE_DISABLE is called from | 
 |  * the command line path and overrides any previous or future | 
 |  * SHUFFLE_ENABLE. | 
 |  */ | 
 | enum mm_shuffle_ctl { | 
 | 	SHUFFLE_ENABLE, | 
 | 	SHUFFLE_FORCE_DISABLE, | 
 | }; | 
 |  | 
 | #define SHUFFLE_ORDER (MAX_ORDER-1) | 
 |  | 
 | #ifdef CONFIG_SHUFFLE_PAGE_ALLOCATOR | 
 | DECLARE_STATIC_KEY_FALSE(page_alloc_shuffle_key); | 
 | extern void page_alloc_shuffle(enum mm_shuffle_ctl ctl); | 
 | extern void __shuffle_free_memory(pg_data_t *pgdat); | 
 | extern bool shuffle_pick_tail(void); | 
 | static inline void shuffle_free_memory(pg_data_t *pgdat) | 
 | { | 
 | 	if (!static_branch_unlikely(&page_alloc_shuffle_key)) | 
 | 		return; | 
 | 	__shuffle_free_memory(pgdat); | 
 | } | 
 |  | 
 | extern void __shuffle_zone(struct zone *z); | 
 | static inline void shuffle_zone(struct zone *z) | 
 | { | 
 | 	if (!static_branch_unlikely(&page_alloc_shuffle_key)) | 
 | 		return; | 
 | 	__shuffle_zone(z); | 
 | } | 
 |  | 
 | static inline bool is_shuffle_order(int order) | 
 | { | 
 | 	if (!static_branch_unlikely(&page_alloc_shuffle_key)) | 
 | 		return false; | 
 | 	return order >= SHUFFLE_ORDER; | 
 | } | 
 | #else | 
 | static inline bool shuffle_pick_tail(void) | 
 | { | 
 | 	return false; | 
 | } | 
 |  | 
 | static inline void shuffle_free_memory(pg_data_t *pgdat) | 
 | { | 
 | } | 
 |  | 
 | static inline void shuffle_zone(struct zone *z) | 
 | { | 
 | } | 
 |  | 
 | static inline void page_alloc_shuffle(enum mm_shuffle_ctl ctl) | 
 | { | 
 | } | 
 |  | 
 | static inline bool is_shuffle_order(int order) | 
 | { | 
 | 	return false; | 
 | } | 
 | #endif | 
 | #endif /* _MM_SHUFFLE_H */ |