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