mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-09 23:00:21 +00:00
839195352d
Commit e900a918b098 ("mm: shuffle initial free memory to improve memory-side-cache utilization") promised "autodetection of a memory-side-cache (to be added in a follow-on patch)" over a year ago. The original series included patches [1], however, they were dropped during review [2] to be followed-up later. Due to lack of platforms that publish an HMAT, autodetection is currently not implemented. However, manual activation is actively used [3]. Let's simplify for now and re-add when really (ever?) needed. [1] https://lkml.kernel.org/r/154510700291.1941238.817190985966612531.stgit@dwillia2-desk3.amr.corp.intel.com [2] https://lkml.kernel.org/r/154690326478.676627.103843791978176914.stgit@dwillia2-desk3.amr.corp.intel.com [3] https://lkml.kernel.org/r/CAPcyv4irwGUU2x+c6b4L=KbB1dnasNKaaZd6oSpYjL9kfsnROQ@mail.gmail.com Signed-off-by: David Hildenbrand <david@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Reviewed-by: Wei Yang <richard.weiyang@linux.alibaba.com> Acked-by: Dan Williams <dan.j.williams@intel.com> Acked-by: Michal Hocko <mhocko@suse.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Michal Hocko <mhocko@suse.com> Cc: Minchan Kim <minchan@kernel.org> Cc: Huang Ying <ying.huang@intel.com> Cc: Wei Yang <richard.weiyang@gmail.com> Cc: Mel Gorman <mgorman@techsingularity.net> Cc: Dan Williams <dan.j.williams@intel.com> Link: http://lkml.kernel.org/r/20200624094741.9918-4-david@redhat.com Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
54 lines
1.1 KiB
C
54 lines
1.1 KiB
C
// 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>
|
|
|
|
#define SHUFFLE_ORDER (MAX_ORDER-1)
|
|
|
|
#ifdef CONFIG_SHUFFLE_PAGE_ALLOCATOR
|
|
DECLARE_STATIC_KEY_FALSE(page_alloc_shuffle_key);
|
|
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 bool is_shuffle_order(int order)
|
|
{
|
|
return false;
|
|
}
|
|
#endif
|
|
#endif /* _MM_SHUFFLE_H */
|