xref: /openbmc/linux/include/linux/migrate_mode.h (revision 8eb42bea)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
26536e312SAndrew Morton #ifndef MIGRATE_MODE_H_INCLUDED
36536e312SAndrew Morton #define MIGRATE_MODE_H_INCLUDED
46536e312SAndrew Morton /*
56536e312SAndrew Morton  * MIGRATE_ASYNC means never block
66536e312SAndrew Morton  * MIGRATE_SYNC_LIGHT in the current implementation means to allow blocking
76536e312SAndrew Morton  *	on most operations but not ->writepage as the potential stall time
86536e312SAndrew Morton  *	is too significant
96536e312SAndrew Morton  * MIGRATE_SYNC will block when migrating pages
102916ecc0SJérôme Glisse  * MIGRATE_SYNC_NO_COPY will block when migrating pages but will not copy pages
112916ecc0SJérôme Glisse  *	with the CPU. Instead, page copy happens outside the migratepage()
122916ecc0SJérôme Glisse  *	callback and is likely using a DMA engine. See migrate_vma() and HMM
132916ecc0SJérôme Glisse  *	(mm/hmm.c) for users of this mode.
146536e312SAndrew Morton  */
156536e312SAndrew Morton enum migrate_mode {
166536e312SAndrew Morton 	MIGRATE_ASYNC,
176536e312SAndrew Morton 	MIGRATE_SYNC_LIGHT,
186536e312SAndrew Morton 	MIGRATE_SYNC,
192916ecc0SJérôme Glisse 	MIGRATE_SYNC_NO_COPY,
206536e312SAndrew Morton };
216536e312SAndrew Morton 
22*8eb42beaSJohn Hubbard enum migrate_reason {
23*8eb42beaSJohn Hubbard 	MR_COMPACTION,
24*8eb42beaSJohn Hubbard 	MR_MEMORY_FAILURE,
25*8eb42beaSJohn Hubbard 	MR_MEMORY_HOTPLUG,
26*8eb42beaSJohn Hubbard 	MR_SYSCALL,		/* also applies to cpusets */
27*8eb42beaSJohn Hubbard 	MR_MEMPOLICY_MBIND,
28*8eb42beaSJohn Hubbard 	MR_NUMA_MISPLACED,
29*8eb42beaSJohn Hubbard 	MR_CONTIG_RANGE,
30*8eb42beaSJohn Hubbard 	MR_LONGTERM_PIN,
31*8eb42beaSJohn Hubbard 	MR_DEMOTION,
32*8eb42beaSJohn Hubbard 	MR_TYPES
33*8eb42beaSJohn Hubbard };
34*8eb42beaSJohn Hubbard 
356536e312SAndrew Morton #endif		/* MIGRATE_MODE_H_INCLUDED */
36