| 1 | /* SPDX-License-Identifier: GPL-2.0 */ | 
|---|
| 2 | #ifndef _LINUX_SCHED_NUMA_BALANCING_H | 
|---|
| 3 | #define _LINUX_SCHED_NUMA_BALANCING_H | 
|---|
| 4 |  | 
|---|
| 5 | /* | 
|---|
| 6 | * This is the interface between the scheduler and the MM that | 
|---|
| 7 | * implements memory access pattern based NUMA-balancing: | 
|---|
| 8 | */ | 
|---|
| 9 |  | 
|---|
| 10 | #include <linux/sched.h> | 
|---|
| 11 |  | 
|---|
| 12 | #define TNF_MIGRATED	0x01 | 
|---|
| 13 | #define TNF_NO_GROUP	0x02 | 
|---|
| 14 | #define TNF_SHARED	0x04 | 
|---|
| 15 | #define TNF_FAULT_LOCAL	0x08 | 
|---|
| 16 | #define TNF_MIGRATE_FAIL 0x10 | 
|---|
| 17 |  | 
|---|
| 18 | enum numa_vmaskip_reason { | 
|---|
| 19 | NUMAB_SKIP_UNSUITABLE, | 
|---|
| 20 | NUMAB_SKIP_SHARED_RO, | 
|---|
| 21 | NUMAB_SKIP_INACCESSIBLE, | 
|---|
| 22 | NUMAB_SKIP_SCAN_DELAY, | 
|---|
| 23 | NUMAB_SKIP_PID_INACTIVE, | 
|---|
| 24 | NUMAB_SKIP_IGNORE_PID, | 
|---|
| 25 | NUMAB_SKIP_SEQ_COMPLETED, | 
|---|
| 26 | }; | 
|---|
| 27 |  | 
|---|
| 28 | #ifdef CONFIG_NUMA_BALANCING | 
|---|
| 29 | extern void task_numa_fault(int last_node, int node, int pages, int flags); | 
|---|
| 30 | extern pid_t task_numa_group_id(struct task_struct *p); | 
|---|
| 31 | extern void set_numabalancing_state(bool enabled); | 
|---|
| 32 | extern void task_numa_free(struct task_struct *p, bool final); | 
|---|
| 33 | bool should_numa_migrate_memory(struct task_struct *p, struct folio *folio, | 
|---|
| 34 | int src_nid, int dst_cpu); | 
|---|
| 35 | #else | 
|---|
| 36 | static inline void task_numa_fault(int last_node, int node, int pages, | 
|---|
| 37 | int flags) | 
|---|
| 38 | { | 
|---|
| 39 | } | 
|---|
| 40 | static inline pid_t task_numa_group_id(struct task_struct *p) | 
|---|
| 41 | { | 
|---|
| 42 | return 0; | 
|---|
| 43 | } | 
|---|
| 44 | static inline void set_numabalancing_state(bool enabled) | 
|---|
| 45 | { | 
|---|
| 46 | } | 
|---|
| 47 | static inline void task_numa_free(struct task_struct *p, bool final) | 
|---|
| 48 | { | 
|---|
| 49 | } | 
|---|
| 50 | static inline bool should_numa_migrate_memory(struct task_struct *p, | 
|---|
| 51 | struct folio *folio, int src_nid, int dst_cpu) | 
|---|
| 52 | { | 
|---|
| 53 | return true; | 
|---|
| 54 | } | 
|---|
| 55 | #endif | 
|---|
| 56 |  | 
|---|
| 57 | #endif /* _LINUX_SCHED_NUMA_BALANCING_H */ | 
|---|
| 58 |  | 
|---|