1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef MIGRATE_MODE_H_INCLUDED
3 #define MIGRATE_MODE_H_INCLUDED
4 /*
5  * MIGRATE_ASYNC means never block
6  * MIGRATE_SYNC_LIGHT in the current implementation means to allow blocking
7  *	on most operations but not ->writepage as the potential stall time
8  *	is too significant
9  * MIGRATE_SYNC will block when migrating pages
10  * MIGRATE_SYNC_NO_COPY will block when migrating pages but will not copy pages
11  *	with the CPU. Instead, page copy happens outside the migratepage()
12  *	callback and is likely using a DMA engine. See migrate_vma() and HMM
13  *	(mm/hmm.c) for users of this mode.
14  */
15 enum migrate_mode {
16 	MIGRATE_ASYNC,
17 	MIGRATE_SYNC_LIGHT,
18 	MIGRATE_SYNC,
19 	MIGRATE_SYNC_NO_COPY,
20 };
21 
22 enum migrate_reason {
23 	MR_COMPACTION,
24 	MR_MEMORY_FAILURE,
25 	MR_MEMORY_HOTPLUG,
26 	MR_SYSCALL,		/* also applies to cpusets */
27 	MR_MEMPOLICY_MBIND,
28 	MR_NUMA_MISPLACED,
29 	MR_CONTIG_RANGE,
30 	MR_LONGTERM_PIN,
31 	MR_DEMOTION,
32 	MR_TYPES
33 };
34 
35 #endif		/* MIGRATE_MODE_H_INCLUDED */
36