162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#ifndef _LINUX_SCHED_NUMA_BALANCING_H
362306a36Sopenharmony_ci#define _LINUX_SCHED_NUMA_BALANCING_H
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci/*
662306a36Sopenharmony_ci * This is the interface between the scheduler and the MM that
762306a36Sopenharmony_ci * implements memory access pattern based NUMA-balancing:
862306a36Sopenharmony_ci */
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#include <linux/sched.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#define TNF_MIGRATED	0x01
1362306a36Sopenharmony_ci#define TNF_NO_GROUP	0x02
1462306a36Sopenharmony_ci#define TNF_SHARED	0x04
1562306a36Sopenharmony_ci#define TNF_FAULT_LOCAL	0x08
1662306a36Sopenharmony_ci#define TNF_MIGRATE_FAIL 0x10
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci#ifdef CONFIG_NUMA_BALANCING
1962306a36Sopenharmony_ciextern void task_numa_fault(int last_node, int node, int pages, int flags);
2062306a36Sopenharmony_ciextern pid_t task_numa_group_id(struct task_struct *p);
2162306a36Sopenharmony_ciextern void set_numabalancing_state(bool enabled);
2262306a36Sopenharmony_ciextern void task_numa_free(struct task_struct *p, bool final);
2362306a36Sopenharmony_ciextern bool should_numa_migrate_memory(struct task_struct *p, struct page *page,
2462306a36Sopenharmony_ci					int src_nid, int dst_cpu);
2562306a36Sopenharmony_ci#else
2662306a36Sopenharmony_cistatic inline void task_numa_fault(int last_node, int node, int pages,
2762306a36Sopenharmony_ci				   int flags)
2862306a36Sopenharmony_ci{
2962306a36Sopenharmony_ci}
3062306a36Sopenharmony_cistatic inline pid_t task_numa_group_id(struct task_struct *p)
3162306a36Sopenharmony_ci{
3262306a36Sopenharmony_ci	return 0;
3362306a36Sopenharmony_ci}
3462306a36Sopenharmony_cistatic inline void set_numabalancing_state(bool enabled)
3562306a36Sopenharmony_ci{
3662306a36Sopenharmony_ci}
3762306a36Sopenharmony_cistatic inline void task_numa_free(struct task_struct *p, bool final)
3862306a36Sopenharmony_ci{
3962306a36Sopenharmony_ci}
4062306a36Sopenharmony_cistatic inline bool should_numa_migrate_memory(struct task_struct *p,
4162306a36Sopenharmony_ci				struct page *page, int src_nid, int dst_cpu)
4262306a36Sopenharmony_ci{
4362306a36Sopenharmony_ci	return true;
4462306a36Sopenharmony_ci}
4562306a36Sopenharmony_ci#endif
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci#endif /* _LINUX_SCHED_NUMA_BALANCING_H */
48