cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

shuffle.h (1184B)


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