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