1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef VM_EVENT_ITEM_H_INCLUDED
3#define VM_EVENT_ITEM_H_INCLUDED
4
5#include <linux/thread_info.h>
6
7#ifdef CONFIG_ZONE_DMA
8#define DMA_ZONE(xx) xx##_DMA,
9#else
10#define DMA_ZONE(xx)
11#endif
12
13#ifdef CONFIG_ZONE_DMA32
14#define DMA32_ZONE(xx) xx##_DMA32,
15#else
16#define DMA32_ZONE(xx)
17#endif
18
19#ifdef CONFIG_HIGHMEM
20#define HIGHMEM_ZONE(xx) xx##_HIGH,
21#else
22#define HIGHMEM_ZONE(xx)
23#endif
24
25#ifdef CONFIG_ZONE_DEVICE
26#define DEVICE_ZONE(xx) xx##_DEVICE,
27#else
28#define DEVICE_ZONE(xx)
29#endif
30
31#define FOR_ALL_ZONES(xx) DMA_ZONE(xx) DMA32_ZONE(xx) xx##_NORMAL, \
32 HIGHMEM_ZONE(xx) xx##_MOVABLE, DEVICE_ZONE(xx)
33
34enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT,
35 FOR_ALL_ZONES(PGALLOC)
36 FOR_ALL_ZONES(ALLOCSTALL)
37 FOR_ALL_ZONES(PGSCAN_SKIP)
38 PGFREE, PGACTIVATE, PGDEACTIVATE, PGLAZYFREE,
39 PGFAULT, PGMAJFAULT,
40 PGLAZYFREED,
41 PGREFILL,
42 PGREUSE,
43 PGSTEAL_KSWAPD,
44 PGSTEAL_DIRECT,
45 PGSTEAL_KHUGEPAGED,
46 PGSTEAL_PROACTIVE,
47 PGSCAN_KSWAPD,
48 PGSCAN_DIRECT,
49 PGSCAN_KHUGEPAGED,
50 PGSCAN_PROACTIVE,
51 PGSCAN_DIRECT_THROTTLE,
52 PGSCAN_ANON,
53 PGSCAN_FILE,
54 PGSTEAL_ANON,
55 PGSTEAL_FILE,
56#ifdef CONFIG_NUMA
57 PGSCAN_ZONE_RECLAIM_SUCCESS,
58 PGSCAN_ZONE_RECLAIM_FAILED,
59#endif
60 PGINODESTEAL, SLABS_SCANNED, KSWAPD_INODESTEAL,
61 KSWAPD_LOW_WMARK_HIT_QUICKLY, KSWAPD_HIGH_WMARK_HIT_QUICKLY,
62 PAGEOUTRUN, PGROTATED,
63 DROP_PAGECACHE, DROP_SLAB,
64 OOM_KILL,
65#ifdef CONFIG_NUMA_BALANCING
66 NUMA_PTE_UPDATES,
67 NUMA_HUGE_PTE_UPDATES,
68 NUMA_HINT_FAULTS,
69 NUMA_HINT_FAULTS_LOCAL,
70 NUMA_PAGE_MIGRATE,
71#endif
72#ifdef CONFIG_MIGRATION
73 PGMIGRATE_SUCCESS, PGMIGRATE_FAIL,
74 THP_MIGRATION_SUCCESS,
75 THP_MIGRATION_FAIL,
76 THP_MIGRATION_SPLIT,
77#endif
78#ifdef CONFIG_COMPACTION
79 COMPACTMIGRATE_SCANNED, COMPACTFREE_SCANNED,
80 COMPACTISOLATED,
81 COMPACTSTALL, COMPACTFAIL, COMPACTSUCCESS,
82 KCOMPACTD_WAKE,
83 KCOMPACTD_MIGRATE_SCANNED, KCOMPACTD_FREE_SCANNED,
84#endif
85#ifdef CONFIG_HUGETLB_PAGE
86 HTLB_BUDDY_PGALLOC, HTLB_BUDDY_PGALLOC_FAIL,
87#endif
88#ifdef CONFIG_CMA
89 CMA_ALLOC_SUCCESS,
90 CMA_ALLOC_FAIL,
91#endif
92 UNEVICTABLE_PGCULLED, /* culled to noreclaim list */
93 UNEVICTABLE_PGSCANNED, /* scanned for reclaimability */
94 UNEVICTABLE_PGRESCUED, /* rescued from noreclaim list */
95 UNEVICTABLE_PGMLOCKED,
96 UNEVICTABLE_PGMUNLOCKED,
97 UNEVICTABLE_PGCLEARED, /* on COW, page truncate */
98 UNEVICTABLE_PGSTRANDED, /* unable to isolate on unlock */
99#ifdef CONFIG_TRANSPARENT_HUGEPAGE
100 THP_FAULT_ALLOC,
101 THP_FAULT_FALLBACK,
102 THP_FAULT_FALLBACK_CHARGE,
103 THP_COLLAPSE_ALLOC,
104 THP_COLLAPSE_ALLOC_FAILED,
105 THP_FILE_ALLOC,
106 THP_FILE_FALLBACK,
107 THP_FILE_FALLBACK_CHARGE,
108 THP_FILE_MAPPED,
109 THP_SPLIT_PAGE,
110 THP_SPLIT_PAGE_FAILED,
111 THP_DEFERRED_SPLIT_PAGE,
112 THP_UNDERUSED_SPLIT_PAGE,
113 THP_SPLIT_PMD,
114 THP_SCAN_EXCEED_NONE_PTE,
115 THP_SCAN_EXCEED_SWAP_PTE,
116 THP_SCAN_EXCEED_SHARED_PTE,
117#ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
118 THP_SPLIT_PUD,
119#endif
120 THP_ZERO_PAGE_ALLOC,
121 THP_ZERO_PAGE_ALLOC_FAILED,
122 THP_SWPOUT,
123 THP_SWPOUT_FALLBACK,
124#endif
125#ifdef CONFIG_MEMORY_BALLOON
126 BALLOON_INFLATE,
127 BALLOON_DEFLATE,
128#ifdef CONFIG_BALLOON_COMPACTION
129 BALLOON_MIGRATE,
130#endif
131#endif
132#ifdef CONFIG_DEBUG_TLBFLUSH
133 NR_TLB_REMOTE_FLUSH, /* cpu tried to flush others' tlbs */
134 NR_TLB_REMOTE_FLUSH_RECEIVED,/* cpu received ipi for flush */
135 NR_TLB_LOCAL_FLUSH_ALL,
136 NR_TLB_LOCAL_FLUSH_ONE,
137#endif /* CONFIG_DEBUG_TLBFLUSH */
138#ifdef CONFIG_SWAP
139 SWAP_RA,
140 SWAP_RA_HIT,
141 SWPIN_ZERO,
142 SWPOUT_ZERO,
143#ifdef CONFIG_KSM
144 KSM_SWPIN_COPY,
145#endif
146#endif
147#ifdef CONFIG_KSM
148 COW_KSM,
149#endif
150#ifdef CONFIG_ZSWAP
151 ZSWPIN,
152 ZSWPOUT,
153 ZSWPWB,
154#endif
155#ifdef CONFIG_X86
156 DIRECT_MAP_LEVEL2_SPLIT,
157 DIRECT_MAP_LEVEL3_SPLIT,
158 DIRECT_MAP_LEVEL2_COLLAPSE,
159 DIRECT_MAP_LEVEL3_COLLAPSE,
160#endif
161#ifdef CONFIG_PER_VMA_LOCK_STATS
162 VMA_LOCK_SUCCESS,
163 VMA_LOCK_ABORT,
164 VMA_LOCK_RETRY,
165 VMA_LOCK_MISS,
166#endif
167#ifdef CONFIG_DEBUG_STACK_USAGE
168 KSTACK_1K,
169#if THREAD_SIZE > 1024
170 KSTACK_2K,
171#endif
172#if THREAD_SIZE > 2048
173 KSTACK_4K,
174#endif
175#if THREAD_SIZE > 4096
176 KSTACK_8K,
177#endif
178#if THREAD_SIZE > 8192
179 KSTACK_16K,
180#endif
181#if THREAD_SIZE > 16384
182 KSTACK_32K,
183#endif
184#if THREAD_SIZE > 32768
185 KSTACK_64K,
186#endif
187#if THREAD_SIZE > 65536
188 KSTACK_REST,
189#endif
190#endif /* CONFIG_DEBUG_STACK_USAGE */
191 NR_VM_EVENT_ITEMS
192};
193
194#ifndef CONFIG_TRANSPARENT_HUGEPAGE
195#define THP_FILE_ALLOC ({ BUILD_BUG(); 0; })
196#define THP_FILE_FALLBACK ({ BUILD_BUG(); 0; })
197#define THP_FILE_FALLBACK_CHARGE ({ BUILD_BUG(); 0; })
198#define THP_FILE_MAPPED ({ BUILD_BUG(); 0; })
199#endif
200
201#endif /* VM_EVENT_ITEM_H_INCLUDED */
202