• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #undef TRACE_SYSTEM
3 #define TRACE_SYSTEM mm
4 
5 #ifdef CREATE_TRACE_POINTS
6 #define TRACE_INCLUDE_PATH trace/hooks
7 #endif
8 
9 #if !defined(_TRACE_HOOK_MM_H) || defined(TRACE_HEADER_MULTI_READ)
10 #define _TRACE_HOOK_MM_H
11 
12 #include <trace/hooks/vendor_hooks.h>
13 
14 struct shmem_inode_info;
15 struct folio;
16 struct folio_batch;
17 struct track;
18 struct compact_control;
19 
20 DECLARE_RESTRICTED_HOOK(android_rvh_shmem_get_folio,
21 			TP_PROTO(struct shmem_inode_info *info, struct folio **folio, int order),
22 			TP_ARGS(info, folio, order), 3);
23 DECLARE_HOOK(android_vh_shmem_mod_shmem,
24 	TP_PROTO(struct address_space *mapping, long nr_pages),
25 	TP_ARGS(mapping, nr_pages));
26 DECLARE_HOOK(android_vh_shmem_mod_swapped,
27 	TP_PROTO(struct address_space *mapping, long nr_pages),
28 	TP_ARGS(mapping, nr_pages));
29 DECLARE_RESTRICTED_HOOK(android_rvh_try_alloc_pages_gfp,
30 			TP_PROTO(struct page **page, unsigned int order,
31 				gfp_t gfp, enum zone_type highest_zoneidx),
32 			TP_ARGS(page, order, gfp, highest_zoneidx), 1);
33 DECLARE_RESTRICTED_HOOK(android_rvh_shmem_suitable_orders,
34 			TP_PROTO(struct inode *inode, pgoff_t index,
35 				unsigned long orders, unsigned long *suitable_orders),
36 			TP_ARGS(inode, index, orders, suitable_orders), 4);
37 DECLARE_RESTRICTED_HOOK(android_rvh_shmem_allowable_huge_orders,
38 			TP_PROTO(struct inode *inode, pgoff_t index,
39 				struct vm_area_struct *vma, unsigned long *orders),
40 			TP_ARGS(inode, index, vma, orders), 4);
41 DECLARE_RESTRICTED_HOOK(android_rvh_bitmap_find_best_next_area,
42 			TP_PROTO(unsigned long *bitmap,
43 				unsigned long bitmap_maxno,
44 				unsigned long start,
45 				unsigned int bitmap_count,
46 				unsigned long mask,
47 				unsigned long offset,
48 				unsigned long *bitmap_no,
49 				bool status),
50 			TP_ARGS(bitmap, bitmap_maxno, start, bitmap_count, mask,
51 				offset, bitmap_no, status), 1);
52 DECLARE_HOOK(android_vh_madvise_cold_pageout_skip,
53 	     TP_PROTO(struct vm_area_struct *vma, struct folio *folio, bool pageout, bool *need_skip),
54 	     TP_ARGS(vma, folio, pageout, need_skip));
55 
56 DECLARE_RESTRICTED_HOOK(android_rvh_set_gfp_zone_flags,
57 			TP_PROTO(unsigned int *flags),	/* gfp_t *flags */
58 			TP_ARGS(flags), 1);
59 DECLARE_RESTRICTED_HOOK(android_rvh_set_readahead_gfp_mask,
60 			TP_PROTO(unsigned int *flags),	/* gfp_t *flags */
61 			TP_ARGS(flags), 1);
62 struct mem_cgroup;
63 DECLARE_HOOK(android_vh_mem_cgroup_alloc,
64 	TP_PROTO(struct mem_cgroup *memcg),
65 	TP_ARGS(memcg));
66 DECLARE_HOOK(android_vh_mem_cgroup_free,
67 	TP_PROTO(struct mem_cgroup *memcg),
68 	TP_ARGS(memcg));
69 DECLARE_HOOK(android_vh_mem_cgroup_id_remove,
70 	TP_PROTO(struct mem_cgroup *memcg),
71 	TP_ARGS(memcg));
72 struct cgroup_subsys_state;
73 DECLARE_HOOK(android_vh_mem_cgroup_css_online,
74 	TP_PROTO(struct cgroup_subsys_state *css, struct mem_cgroup *memcg),
75 	TP_ARGS(css, memcg));
76 DECLARE_HOOK(android_vh_mem_cgroup_css_offline,
77 	TP_PROTO(struct cgroup_subsys_state *css, struct mem_cgroup *memcg),
78 	TP_ARGS(css, memcg));
79 DECLARE_HOOK(android_vh_io_statistics,
80 	TP_PROTO(struct address_space *mapping, unsigned int index,
81 		unsigned int nr_page, bool read, bool direct),
82 	TP_ARGS(mapping, index, nr_page, read, direct));
83 DECLARE_HOOK(android_vh_pagetypeinfo_show,
84 	TP_PROTO(struct seq_file *m),
85 	TP_ARGS(m));
86 
87 struct cma;
88 DECLARE_HOOK(android_vh_cma_alloc_bypass,
89 	TP_PROTO(struct cma *cma, unsigned long count, unsigned int align,
90 		gfp_t gfp_mask, struct page **page, bool *bypass),
91 	TP_ARGS(cma, count, align, gfp_mask, page, bypass));
92 
93 DECLARE_HOOK(android_vh_cma_alloc_start,
94 	TP_PROTO(struct cma *cma),
95 	TP_ARGS(cma));
96 
97 DECLARE_HOOK(android_vh_cma_alloc_finish,
98 	TP_PROTO(struct cma *cma),
99 	TP_ARGS(cma));
100 
101 DECLARE_HOOK(android_vh_cma_alloc_busy_info,
102 	TP_PROTO(unsigned long *failed_pfn),
103 	TP_ARGS(failed_pfn));
104 
105 struct compact_control;
106 DECLARE_HOOK(android_vh_isolate_freepages,
107 	TP_PROTO(struct compact_control *cc, struct page *page, bool *bypass),
108 	TP_ARGS(cc, page, bypass));
109 
110 struct oom_control;
111 DECLARE_HOOK(android_vh_oom_check_panic,
112 	TP_PROTO(struct oom_control *oc, int *ret),
113 	TP_ARGS(oc, ret));
114 
115 DECLARE_HOOK(android_vh_rmqueue_smallest_bypass,
116 	TP_PROTO(struct page **page, struct zone *zone, int order, int migratetype),
117 	TP_ARGS(page, zone, order, migratetype));
118 DECLARE_HOOK(android_vh_free_one_page_bypass,
119 	TP_PROTO(struct page *page, struct zone *zone, int order, int migratetype,
120 		int fpi_flags, bool *bypass),
121 	TP_ARGS(page, zone, order, migratetype, fpi_flags, bypass));
122 DECLARE_HOOK(android_vh_migration_target_bypass,
123 	TP_PROTO(struct page *page, bool *bypass),
124 	TP_ARGS(page, bypass));
125 
126 struct page_vma_mapped_walk;
127 DECLARE_HOOK(android_vh_slab_alloc_node,
128 	TP_PROTO(void *object, unsigned long addr, struct kmem_cache *s),
129 	TP_ARGS(object, addr, s));
130 DECLARE_HOOK(android_vh_slab_free,
131 	TP_PROTO(unsigned long addr, struct kmem_cache *s),
132 	TP_ARGS(addr, s));
133 DECLARE_HOOK(android_vh_process_madvise_begin,
134 	TP_PROTO(struct task_struct *task, int behavior),
135 	TP_ARGS(task, behavior));
136 DECLARE_HOOK(android_vh_process_madvise_iter,
137 	TP_PROTO(struct task_struct *task, int behavior, ssize_t *ret),
138 	TP_ARGS(task, behavior, ret));
139 DECLARE_RESTRICTED_HOOK(android_rvh_do_read_fault,
140 	TP_PROTO(struct vm_fault *vmf, unsigned long *fault_around_pages),
141 	TP_ARGS(vmf, fault_around_pages), 1);
142 DECLARE_HOOK(android_vh_rmqueue,
143 	TP_PROTO(struct zone *preferred_zone, struct zone *zone,
144 		unsigned int order, gfp_t gfp_flags,
145 		unsigned int alloc_flags, int migratetype),
146 	TP_ARGS(preferred_zone, zone, order,
147 		gfp_flags, alloc_flags, migratetype));
148 DECLARE_HOOK(android_vh_filemap_get_folio,
149 	TP_PROTO(struct address_space *mapping, pgoff_t index,
150 		int fgp_flags, gfp_t gfp_mask, struct folio *folio),
151 	TP_ARGS(mapping, index, fgp_flags, gfp_mask, folio));
152 DECLARE_HOOK(android_vh_filemap_get_folio_gfp,
153 	TP_PROTO(struct address_space *mapping, int fgp_flags, gfp_t *gfp_mask),
154 	TP_ARGS(mapping, fgp_flags, gfp_mask));
155 DECLARE_RESTRICTED_HOOK(android_rvh_madvise_pageout_begin,
156 			TP_PROTO(void **private),
157 			TP_ARGS(private), 1);
158 DECLARE_RESTRICTED_HOOK(android_rvh_madvise_pageout_end,
159 			TP_PROTO(void *private, struct list_head *folio_list),
160 			TP_ARGS(private, folio_list), 1);
161 DECLARE_RESTRICTED_HOOK(android_rvh_reclaim_folio_list,
162 			TP_PROTO(struct list_head *folio_list, void *private),
163 			TP_ARGS(folio_list, private), 1);
164 DECLARE_RESTRICTED_HOOK(android_rvh_mapping_shrinkable,
165 			TP_PROTO(bool *shrinkable),
166 			TP_ARGS(shrinkable), 1);
167 DECLARE_HOOK(android_vh_meminfo_cache_adjust,
168 	TP_PROTO(unsigned long *cached),
169 	TP_ARGS(cached));
170 DECLARE_HOOK(android_vh_si_mem_available_adjust,
171 	TP_PROTO(unsigned long *available),
172 	TP_ARGS(available));
173 DECLARE_HOOK(android_vh_si_meminfo_adjust,
174 	TP_PROTO(unsigned long *totalram, unsigned long *freeram),
175 	TP_ARGS(totalram, freeram));
176 DECLARE_HOOK(android_vh_si_meminfo_adjust_shmem,
177 	TP_PROTO(unsigned long *sharedram),
178 	TP_ARGS(sharedram));
179 DECLARE_HOOK(android_vh_test_clear_look_around_ref,
180 	TP_PROTO(struct page *page),
181 	TP_ARGS(page));
182 DECLARE_HOOK(android_vh_look_around_migrate_folio,
183 	TP_PROTO(struct folio *old_folio, struct folio *new_folio),
184 	TP_ARGS(old_folio, new_folio));
185 DECLARE_HOOK(android_vh_look_around,
186 	TP_PROTO(struct page_vma_mapped_walk *pvmw, struct folio *folio,
187 		struct vm_area_struct *vma, int *referenced),
188 	TP_ARGS(pvmw, folio, vma, referenced));
189 DECLARE_HOOK(android_vh_meminfo_proc_show,
190 	TP_PROTO(struct seq_file *m),
191 	TP_ARGS(m));
192 DECLARE_RESTRICTED_HOOK(android_rvh_meminfo_proc_show,
193 	TP_PROTO(struct seq_file *m),
194 	TP_ARGS(m), 1);
195 DECLARE_HOOK(android_vh_exit_mm,
196 	TP_PROTO(struct mm_struct *mm),
197 	TP_ARGS(mm));
198 DECLARE_HOOK(android_vh_show_mem,
199 	TP_PROTO(unsigned int filter, nodemask_t *nodemask),
200 	TP_ARGS(filter, nodemask));
201 DECLARE_HOOK(android_vh_print_slabinfo_header,
202 	TP_PROTO(struct seq_file *m),
203 	TP_ARGS(m));
204 struct slabinfo;
205 DECLARE_HOOK(android_vh_cache_show,
206 	TP_PROTO(struct seq_file *m, struct slabinfo *sinfo, struct kmem_cache *s),
207 	TP_ARGS(m, sinfo, s));
208 DECLARE_HOOK(android_vh_free_unref_page_bypass,
209 	TP_PROTO(struct page *page, int order, int migratetype, bool *bypass),
210 	TP_ARGS(page, order, migratetype, bypass));
211 DECLARE_HOOK(android_vh_kvmalloc_node_use_vmalloc,
212 	TP_PROTO(size_t size, gfp_t *kmalloc_flags, bool *use_vmalloc),
213 	TP_ARGS(size, kmalloc_flags, use_vmalloc));
214 DECLARE_HOOK(android_vh_should_alloc_pages_retry,
215 	TP_PROTO(gfp_t gfp_mask, int order, int *alloc_flags,
216 	int migratetype, struct zone *preferred_zone, struct page **page, bool *should_alloc_retry),
217 	TP_ARGS(gfp_mask, order, alloc_flags,
218 		migratetype, preferred_zone, page, should_alloc_retry));
219 DECLARE_HOOK(android_vh_unreserve_highatomic_bypass,
220 	TP_PROTO(bool force, struct zone *zone, bool *skip_unreserve_highatomic),
221 	TP_ARGS(force, zone, skip_unreserve_highatomic));
222 DECLARE_HOOK(android_vh_rmqueue_bulk_bypass,
223 	TP_PROTO(unsigned int order, struct per_cpu_pages *pcp, int migratetype,
224 		struct list_head *list),
225 	TP_ARGS(order, pcp, migratetype, list));
226 DECLARE_HOOK(android_vh_madvise_swapin_walk_pmd_entry,
227 	TP_PROTO(swp_entry_t entry),
228 	TP_ARGS(entry));
229 DECLARE_HOOK(android_vh_process_madvise,
230 	TP_PROTO(int behavior, ssize_t *ret, void *priv),
231 	TP_ARGS(behavior, ret, priv));
232 
233 DECLARE_HOOK(android_vh_count_workingset_refault,
234 	TP_PROTO(struct folio *folio),
235 	TP_ARGS(folio));
236 DECLARE_HOOK(android_vh_ra_tuning_max_page,
237 	TP_PROTO(struct readahead_control *ractl, unsigned long *max_page),
238 	TP_ARGS(ractl, max_page));
239 DECLARE_HOOK(android_vh_calc_alloc_flags,
240 	TP_PROTO(gfp_t gfp_mask, unsigned int *alloc_flags,
241 		bool *bypass),
242 	TP_ARGS(gfp_mask, alloc_flags, bypass));
243 
244 DECLARE_HOOK(android_vh_should_fault_around,
245 	TP_PROTO(struct vm_fault *vmf, bool *should_around),
246 	TP_ARGS(vmf, should_around));
247 DECLARE_HOOK(android_vh_slab_folio_alloced,
248 	TP_PROTO(unsigned int order, gfp_t flags),
249 	TP_ARGS(order, flags));
250 DECLARE_HOOK(android_vh_kmalloc_large_alloced,
251 	TP_PROTO(struct folio *folio, unsigned int order, gfp_t flags),
252 	TP_ARGS(folio, order, flags));
253 DECLARE_RESTRICTED_HOOK(android_rvh_ctl_dirty_rate,
254 	TP_PROTO(struct inode *inode),
255 	TP_ARGS(inode), 1);
256 
257 DECLARE_HOOK(android_vh_reserve_highatomic_bypass,
258 	TP_PROTO(struct page *page, bool *bypass),
259 	TP_ARGS(page, bypass));
260 
261 DECLARE_HOOK(android_vh_alloc_pages_entry,
262 	TP_PROTO(gfp_t *gfp, unsigned int order, int preferred_nid,
263 		nodemask_t *nodemask),
264 	TP_ARGS(gfp, order, preferred_nid, nodemask));
265 
266 DECLARE_HOOK(android_vh_watermark_fast_ok,
267 	TP_PROTO(unsigned int order, gfp_t gfp_mask, bool *is_watermark_ok),
268 	TP_ARGS(order, gfp_mask, is_watermark_ok));
269 
270 DECLARE_HOOK(android_vh_free_unref_folios_to_pcp_bypass,
271 	TP_PROTO(struct folio_batch *folios, bool *bypass),
272 	TP_ARGS(folios, bypass));
273 DECLARE_HOOK(android_vh_cma_alloc_fail,
274 	TP_PROTO(char *name, unsigned long count, unsigned long req_count),
275 	TP_ARGS(name, count, req_count));
276 DECLARE_RESTRICTED_HOOK(android_rvh_vmalloc_node_bypass,
277 	TP_PROTO(unsigned long size, gfp_t gfp_mask, void **addr),
278 	TP_ARGS(size, gfp_mask, addr), 1);
279 DECLARE_RESTRICTED_HOOK(android_rvh_vfree_bypass,
280 	TP_PROTO(const void *addr, bool *bypass),
281 	TP_ARGS(addr, bypass), 1);
282 DECLARE_HOOK(android_vh_cma_alloc_retry,
283 	TP_PROTO(char *name, int *retry),
284 	TP_ARGS(name, retry));
285 DECLARE_HOOK(android_vh_tune_mmap_readaround,
286 	TP_PROTO(unsigned int ra_pages, pgoff_t pgoff,
287 		pgoff_t *start, unsigned int *size, unsigned int *async_size),
288 	TP_ARGS(ra_pages, pgoff, start, size, async_size));
289 DECLARE_HOOK(android_vh_smaps_pte_entry,
290 	TP_PROTO(swp_entry_t entry, int mapcount,
291 		unsigned long *swap_shared, unsigned long *writeback,
292 		unsigned long *same, unsigned long *huge),
293 	TP_ARGS(entry, mapcount, swap_shared, writeback, same, huge));
294 DECLARE_HOOK(android_vh_show_smap,
295 	TP_PROTO(struct seq_file *m,
296 		unsigned long swap_shared, unsigned long writeback,
297 		unsigned long same, unsigned long huge),
298 	TP_ARGS(m, swap_shared, writeback, same, huge));
299 DECLARE_HOOK(android_vh_get_page_wmark,
300 	TP_PROTO(unsigned int alloc_flags, unsigned long *page_wmark),
301 	TP_ARGS(alloc_flags, page_wmark));
302 DECLARE_HOOK(android_vh_page_add_new_anon_rmap,
303 	TP_PROTO(struct page *page, struct vm_area_struct *vma,
304 		unsigned long address),
305 	TP_ARGS(page, vma, address));
306 DECLARE_HOOK(android_vh_mm_compaction_begin,
307 	TP_PROTO(struct compact_control *cc, long *vendor_ret),
308 	TP_ARGS(cc, vendor_ret));
309 DECLARE_HOOK(android_vh_mm_compaction_end,
310 	TP_PROTO(struct compact_control *cc, long vendor_ret),
311 	TP_ARGS(cc, vendor_ret));
312 DECLARE_HOOK(android_vh_alloc_pages_slowpath_start,
313 	TP_PROTO(u64 *stime),
314 	TP_ARGS(stime));
315 DECLARE_HOOK(android_vh_alloc_pages_slowpath_end,
316 	TP_PROTO(gfp_t *gfp_mask, unsigned int order, unsigned long alloc_start,
317 		u64 stime, unsigned long did_some_progress,
318 		unsigned long pages_reclaimed, int retry_loop_count),
319 	TP_ARGS(gfp_mask, order, alloc_start, stime, did_some_progress,
320 		pages_reclaimed, retry_loop_count));
321 DECLARE_HOOK(android_vh_add_lazyfree_bypass,
322 	TP_PROTO(struct lruvec *lruvec, struct folio *folio, bool *bypass),
323 	TP_ARGS(lruvec, folio, bypass));
324 
325 DECLARE_HOOK(android_vh_do_async_mmap_readahead,
326 	TP_PROTO(struct vm_fault *vmf, struct folio *folio, bool *skip),
327 	TP_ARGS(vmf, folio, skip));
328 DECLARE_HOOK(android_vh_mm_free_page,
329 	TP_PROTO(struct page *page),
330 	TP_ARGS(page));
331 
332 DECLARE_HOOK(android_vh_alloc_contig_range_not_isolated,
333 	TP_PROTO(unsigned long start, unsigned end),
334 	TP_ARGS(start, end));
335 DECLARE_HOOK(android_vh_warn_alloc_tune_ratelimit,
336 	TP_PROTO(struct ratelimit_state *rs),
337 	TP_ARGS(rs));
338 DECLARE_HOOK(android_vh_warn_alloc_show_mem_bypass,
339 	TP_PROTO(bool *bypass),
340 	TP_ARGS(bypass));
341 DECLARE_HOOK(android_vh_free_pages_prepare_bypass,
342 	TP_PROTO(struct page *page, unsigned int order,
343 		int __bitwise flags, bool *skip_free_pages_prepare),
344 	TP_ARGS(page, order, flags, skip_free_pages_prepare));
345 DECLARE_HOOK(android_vh_free_pages_ok_bypass,
346 	TP_PROTO(struct page *page, unsigned int order,
347 		int __bitwise flags, bool *skip_free_pages_ok),
348 	TP_ARGS(page, order, flags, skip_free_pages_ok));
349 DECLARE_HOOK(android_vh_free_page_bypass,
350 	TP_PROTO(struct page *page, unsigned int order, bool *skip_free_page),
351 	TP_ARGS(page, order, skip_free_page));
352 DECLARE_HOOK(android_vh_free_folio_bypass,
353 	TP_PROTO(struct folio *folio, unsigned int order, bool *skip_free_folio),
354 	TP_ARGS(folio, order, skip_free_folio));
355 DECLARE_HOOK(android_vh_free_pages_prepare_init,
356 	TP_PROTO(struct page *page, int nr_pages, bool *init),
357 	TP_ARGS(page, nr_pages, init));
358 DECLARE_HOOK(android_vh_free_one_page_flag_check,
359 	TP_PROTO(unsigned long *flags),
360 	TP_ARGS(flags));
361 DECLARE_HOOK(android_vh_post_alloc_hook,
362 	TP_PROTO(struct page *page, unsigned int order, bool *init),
363 	TP_ARGS(page, order, init));
364 DECLARE_HOOK(android_vh_check_new_page,
365 	TP_PROTO(unsigned long *flags),
366 	TP_ARGS(flags));
367 DECLARE_HOOK(android_vh_split_large_folio_bypass,
368 	TP_PROTO(bool *bypass),
369 	TP_ARGS(bypass));
370 DECLARE_HOOK(android_vh_page_should_be_protected,
371 	TP_PROTO(struct folio *folio, unsigned long nr_scanned,
372 	s8 priority, u64 *ext, int *should_protect),
373 	TP_ARGS(folio, nr_scanned, priority, ext, should_protect));
374 DECLARE_HOOK(android_vh_do_read_fault,
375 	TP_PROTO(struct vm_fault *vmf, unsigned long fault_around_bytes),
376 	TP_ARGS(vmf, fault_around_bytes));
377 DECLARE_HOOK(android_vh_wp_page_reuse,
378 	TP_PROTO(struct vm_fault *vmf, struct folio *folio),
379 	TP_ARGS(vmf, folio));
380 DECLARE_HOOK(android_vh_filemap_read,
381 	TP_PROTO(struct file *file, loff_t pos, size_t size),
382 	TP_ARGS(file, pos, size));
383 DECLARE_HOOK(android_vh_filemap_map_pages,
384 	TP_PROTO(struct file *file, pgoff_t orig_start_pgoff, pgoff_t first_pgoff,
385 		pgoff_t last_pgoff, vm_fault_t ret),
386 	TP_ARGS(file, orig_start_pgoff, first_pgoff, last_pgoff, ret));
387 DECLARE_HOOK(android_vh_page_cache_readahead_start,
388 	TP_PROTO(struct file *file, pgoff_t pgoff,
389 		unsigned int size, bool sync),
390 	TP_ARGS(file, pgoff, size, sync));
391 DECLARE_HOOK(android_vh_page_cache_readahead_end,
392 	TP_PROTO(struct file *file, pgoff_t pgoff),
393 	TP_ARGS(file, pgoff));
394 DECLARE_HOOK(android_vh_page_cache_ra_order_bypass,
395 	TP_PROTO(struct readahead_control *ractl, struct file_ra_state *ra,
396 		 int new_order, gfp_t *gfp, bool *bypass),
397 	TP_ARGS(ractl, ra, new_order, gfp, bypass));
398 DECLARE_HOOK(android_vh_filemap_fault_start,
399 	TP_PROTO(struct file *file, pgoff_t pgoff),
400 	TP_ARGS(file, pgoff));
401 DECLARE_HOOK(android_vh_filemap_fault_end,
402 	TP_PROTO(struct file *file, pgoff_t pgoff),
403 	TP_ARGS(file, pgoff));
404 DECLARE_HOOK(android_vh_zs_shrinker_adjust,
405 	TP_PROTO(unsigned long *pages_to_free),
406 	TP_ARGS(pages_to_free));
407 DECLARE_HOOK(android_vh_zs_shrinker_bypass,
408 	TP_PROTO(bool *bypass),
409 	TP_ARGS(bypass));
410 DECLARE_HOOK(android_vh_drain_all_pages_bypass,
411 	TP_PROTO(gfp_t gfp_mask, unsigned int order, unsigned long alloc_flags,
412 		int migratetype, unsigned long did_some_progress,
413 		bool *bypass),
414 	TP_ARGS(gfp_mask, order, alloc_flags, migratetype, did_some_progress, bypass));
415 DECLARE_HOOK(android_vh_alloc_pages_reclaim_bypass,
416     TP_PROTO(gfp_t gfp_mask, int order, int alloc_flags,
417 	int migratetype, struct page **page),
418 	TP_ARGS(gfp_mask, order, alloc_flags, migratetype, page));
419 DECLARE_HOOK(android_vh_alloc_pages_failure_bypass,
420 	TP_PROTO(gfp_t gfp_mask, int order, int alloc_flags,
421 	int migratetype, struct page **page),
422 	TP_ARGS(gfp_mask, order, alloc_flags, migratetype, page));
423 DECLARE_HOOK(android_vh_save_vmalloc_stack,
424 	TP_PROTO(unsigned long flags, struct vm_struct *vm),
425 	TP_ARGS(flags, vm));
426 DECLARE_HOOK(android_vh_show_stack_hash,
427 	TP_PROTO(struct seq_file *m, struct vm_struct *v),
428 	TP_ARGS(m, v));
429 DECLARE_HOOK(android_vh_save_track_hash,
430 	TP_PROTO(bool alloc, struct track *p),
431 	TP_ARGS(alloc, p));
432 DECLARE_HOOK(android_vh_adjust_kvmalloc_flags,
433 	TP_PROTO(unsigned int order, gfp_t *alloc_flags),
434 	TP_ARGS(order, alloc_flags));
435 DECLARE_HOOK(android_vh_customize_alloc_gfp,
436 	TP_PROTO(gfp_t *alloc_gfp, unsigned int order),
437 	TP_ARGS(alloc_gfp, order));
438 DECLARE_HOOK(android_vh_mm_kcompactd_cpu_online,
439 	TP_PROTO(int cpu),
440 	TP_ARGS(cpu));
441 DECLARE_HOOK(android_vh_adjust_swap_info_flags,
442 	TP_PROTO(unsigned long *flags),
443 	TP_ARGS(flags));
444 DECLARE_RESTRICTED_HOOK(android_rvh_alloc_pages_reclaim_start,
445 	TP_PROTO(gfp_t gfp_mask, int order, int *alloc_flags),
446 	TP_ARGS(gfp_mask, order, alloc_flags), 3);
447 DECLARE_RESTRICTED_HOOK(android_rvh_alloc_pages_reclaim_cycle_end,
448 	TP_PROTO(gfp_t gfp_mask, int order, int *alloc_flags,
449 	unsigned long *did_some_progress, int *no_progress_loops,
450 	unsigned long direct_reclaim_retries),
451 	TP_ARGS(gfp_mask, order, alloc_flags, did_some_progress,
452 	no_progress_loops, direct_reclaim_retries), 6);
453 DECLARE_HOOK(android_vh_kmalloc_slab,
454 	TP_PROTO(unsigned int index, gfp_t flags, struct kmem_cache **s),
455 	TP_ARGS(index, flags, s));
456 DECLARE_HOOK(android_vh_init_adjust_zone_wmark,
457 	TP_PROTO(struct zone *zone, u64 interval),
458 	TP_ARGS(zone, interval));
459 
460 DECLARE_HOOK(android_vh_lock_folio_drop_mmap_start,
461 	TP_PROTO(struct task_struct **tsk, struct vm_fault *vmf,
462 		struct folio *folio, struct file *file),
463 	TP_ARGS(tsk, vmf, folio, file));
464 
465 DECLARE_HOOK(android_vh_lock_folio_drop_mmap_end,
466 	TP_PROTO(bool success, struct task_struct **tsk, struct vm_fault *vmf,
467 		struct folio *folio, struct file *file),
468 	TP_ARGS(success, tsk, vmf, folio, file));
469 
470 DECLARE_HOOK(android_vh_filemap_update_page,
471 	TP_PROTO(struct address_space *mapping, struct folio *folio,
472 		struct file *file),
473 	TP_ARGS(mapping, folio, file));
474 DECLARE_HOOK(android_vh_mm_direct_reclaim_enter,
475 	TP_PROTO(unsigned int order),
476 	TP_ARGS(order));
477 DECLARE_HOOK(android_vh_mm_direct_reclaim_exit,
478 	TP_PROTO(unsigned long did_some_progress, int retry_times),
479 	TP_ARGS(did_some_progress, retry_times));
480 struct oom_control;
481 DECLARE_HOOK(android_vh_mm_may_oom_exit,
482 	TP_PROTO(struct oom_control *oc, unsigned long did_some_progress),
483 	TP_ARGS(oc, did_some_progress));
484 DECLARE_HOOK(android_vh_calculate_totalreserve_pages,
485 	TP_PROTO(bool *skip),
486 	TP_ARGS(skip));
487 DECLARE_HOOK(android_vh_compact_finished,
488 	TP_PROTO(bool *abort_compact),
489 	TP_ARGS(abort_compact));
490 DECLARE_HOOK(android_vh_madvise_cold_or_pageout_abort,
491 	TP_PROTO(struct vm_area_struct *vma, bool *abort_madvise),
492 	TP_ARGS(vma, abort_madvise));
493 DECLARE_HOOK(android_vh_lruvec_add_folio,
494 	TP_PROTO(struct lruvec *lruvec, struct folio *folio, enum lru_list lru,
495 		bool tail, bool *skip),
496 	TP_ARGS(lruvec, folio, lru, tail, skip));
497 DECLARE_HOOK(android_vh_lruvec_del_folio,
498 	TP_PROTO(struct lruvec *lruvec, struct folio *folio, enum lru_list lru,
499 		bool *skip),
500 	TP_ARGS(lruvec, folio, lru, skip));
501 DECLARE_HOOK(android_vh_rmqueue_pcplist_override_batch,
502 	TP_PROTO(int *batch),
503 	TP_ARGS(batch));
504 DECLARE_HOOK(android_vh_do_group_exit,
505 	TP_PROTO(struct task_struct *tsk),
506 	TP_ARGS(tsk));
507 DECLARE_HOOK(android_vh_swapmem_gather_init,
508 	TP_PROTO(struct mm_struct *mm),
509 	TP_ARGS(mm));
510 DECLARE_HOOK(android_vh_swapmem_gather_add_bypass,
511 	TP_PROTO(struct mm_struct *mm, swp_entry_t entry, int nr, bool *bypass),
512 	TP_ARGS(mm, entry, nr, bypass));
513 DECLARE_HOOK(android_vh_swapmem_gather_finish,
514 	TP_PROTO(struct mm_struct *mm),
515 	TP_ARGS(mm));
516 DECLARE_HOOK(android_vh_oom_swapmem_gather_init,
517 	TP_PROTO(struct mm_struct *mm),
518 	TP_ARGS(mm));
519 DECLARE_HOOK(android_vh_oom_swapmem_gather_finish,
520 	TP_PROTO(struct mm_struct *mm),
521 	TP_ARGS(mm));
522 DECLARE_HOOK(android_vh_do_anonymous_page,
523 	TP_PROTO(struct vm_area_struct *vma, struct folio *folio),
524 	TP_ARGS(vma, folio));
525 DECLARE_HOOK(android_vh_do_swap_page,
526 	TP_PROTO(struct folio *folio, pte_t *pte, struct vm_fault *vmf,
527 		swp_entry_t entry),
528 	TP_ARGS(folio, pte, vmf, entry));
529 DECLARE_HOOK(android_vh_do_wp_page,
530 	TP_PROTO(struct folio *folio),
531 	TP_ARGS(folio));
532 DECLARE_HOOK(android_vh_uprobes_replace_page,
533 	TP_PROTO(struct folio *new_folio, struct folio *old_folio),
534 	TP_ARGS(new_folio, old_folio));
535 DECLARE_HOOK(android_vh_shmem_swapin_folio,
536 	TP_PROTO(struct folio *folio),
537 	TP_ARGS(folio));
538 DECLARE_HOOK(android_vh_swap_writepage,
539 	TP_PROTO(unsigned long *sis_flags, struct page *page),
540 	TP_ARGS(sis_flags, page));
541 DECLARE_RESTRICTED_HOOK(android_rvh_swap_read_folio_bdev_sync,
542 	TP_PROTO(struct block_device *bdev, sector_t sector,
543 		struct page *page, bool *read),
544 	TP_ARGS(bdev, sector, page, read), 4);
545 DECLARE_HOOK(android_vh_mmap_region,
546 	TP_PROTO(struct vm_area_struct *vma, unsigned long addr),
547 	TP_ARGS(vma, addr));
548 DECLARE_HOOK(android_vh_try_to_unmap_one,
549 	TP_PROTO(struct folio *folio, struct vm_area_struct *vma,
550 		unsigned long addr, void *arg, bool ret),
551 	TP_ARGS(folio, vma, addr, arg, ret));
552 DECLARE_HOOK(android_vh_mem_cgroup_charge,
553 	TP_PROTO(struct folio *folio, struct mem_cgroup **memcg),
554 	TP_ARGS(folio, memcg));
555 DECLARE_HOOK(android_vh_filemap_add_folio,
556 	TP_PROTO(struct address_space *mapping, struct folio *folio,
557 		pgoff_t index),
558 	TP_ARGS(mapping, folio, index));
559 DECLARE_HOOK(android_vh_gcma_cc_allow_nonworkingset,
560 	TP_PROTO(bool *allow_nonworkingset),
561 	TP_ARGS(allow_nonworkingset));
562 DECLARE_HOOK(android_vh_gcma_cc_store_page_bypass,
563 	TP_PROTO(bool *bypass),
564 	TP_ARGS(bypass));
565 DECLARE_HOOK(android_vh_swap_bio_charge,
566 	TP_PROTO(struct bio *bio),
567 	TP_ARGS(bio));
568 DECLARE_HOOK(android_vh_mm_customize_alloc_anon_thp,
569 	TP_PROTO(gfp_t *gfp_mask, unsigned long *orders, int *order, struct folio **folio),
570 	TP_ARGS(gfp_mask, orders, order, folio));
571 DECLARE_HOOK(android_vh_mm_customize_ac,
572 	TP_PROTO(gfp_t gfp, unsigned int order, struct zonelist **zonelist,
573 		 struct zoneref **preferred_zoneref, enum zone_type *highest_zoneidx,
574 		 unsigned int *alloc_flags),
575 	TP_ARGS(gfp, order, zonelist, preferred_zoneref, highest_zoneidx, alloc_flags));
576 DECLARE_HOOK(android_vh_mm_customize_rmqueue,
577 	TP_PROTO(struct zone *zone, unsigned int order, unsigned int *alloc_flags,
578 		 int *migratetype),
579 	TP_ARGS(zone, order, alloc_flags, migratetype));
580 DECLARE_HOOK(android_vh_mm_customize_suitable_zone,
581 	TP_PROTO(struct zone *zone, gfp_t gfp, int order, enum zone_type highest_zoneidx,
582 		 bool *use_this_zone, bool *suitable),
583 	TP_ARGS(zone, gfp, order, highest_zoneidx, use_this_zone, suitable));
584 DECLARE_HOOK(android_vh_mm_customize_wmark_ok,
585 	TP_PROTO(struct zone *zone, unsigned int order, enum zone_type highest_zoneidx,
586 		 bool *wmark_ok, bool *customized),
587 	TP_ARGS(zone, order, highest_zoneidx, wmark_ok, customized));
588 DECLARE_HOOK(android_vh_mm_customize_zone_max_order,
589 	TP_PROTO(struct zone *zone, int *max_order),
590 	TP_ARGS(zone, max_order));
591 DECLARE_HOOK(android_vh_mm_customize_zone_pageset,
592 	TP_PROTO(struct zone *zone, int *new_high_min, int *new_high_max, int *new_batch),
593 	TP_ARGS(zone, new_high_min, new_high_max, new_batch));
594 DECLARE_HOOK(android_vh_mm_customize_longterm_pinnable,
595 	TP_PROTO(struct folio *folio, bool *is_longterm_pinnable),
596 	TP_ARGS(folio, is_longterm_pinnable));
597 DECLARE_HOOK(android_vh_mm_migrate_one_page,
598 	TP_PROTO(struct page *page, const vm_flags_t vm_flags),
599 	TP_ARGS(page, vm_flags));
600 DECLARE_HOOK(android_vh_mm_remove_migration_pte_bypass,
601 	TP_PROTO(struct folio *dst, struct vm_area_struct *vma, unsigned long addr,
602 		 struct folio *src, bool *bypass),
603 	TP_ARGS(dst, vma, addr, src, bypass));
604 DECLARE_HOOK(android_vh_mm_split_huge_page_bypass,
605 	TP_PROTO(struct page *page, struct list_head *list, int *ret, bool *bypass),
606 	TP_ARGS(page, list, ret, bypass));
607 DECLARE_HOOK(android_vh_mm_try_split_folio_bypass,
608 	TP_PROTO(struct folio *folio, bool *bypass),
609 	TP_ARGS(folio, bypass));
610 DECLARE_HOOK(android_vh_customize_thp_gfp_orders,
611 	TP_PROTO(gfp_t *gfp_mask, unsigned long *orders, int *order),
612 	TP_ARGS(gfp_mask, orders, order));
613 DECLARE_HOOK(android_vh_customize_pmd_gfp_bypass,
614 	TP_PROTO(gfp_t *gfp_mask, bool *bypass),
615 	TP_ARGS(gfp_mask, bypass));
616 DECLARE_HOOK(android_vh_thp_vma_allowable_orders,
617 	TP_PROTO(struct vm_area_struct *vma, unsigned long *orders),
618 	TP_ARGS(vma, orders));
619 DECLARE_HOOK(android_vh_ksize,
620 	TP_PROTO(struct folio *folio, size_t *up_size),
621 	TP_ARGS(folio, up_size));
622 DECLARE_HOOK(android_vh_kmalloc_large_node_bypass,
623 	TP_PROTO(size_t size, gfp_t flags, int node, void **ptr, bool *bypass),
624 	TP_ARGS(size, flags, node, ptr, bypass));
625 DECLARE_HOOK(android_vh_kfree_bypass,
626 	TP_PROTO(struct folio *folio, const void *object, bool *bypass),
627 	TP_ARGS(folio, object, bypass));
628 DECLARE_HOOK(android_vh_check_heap_object_bypass,
629 	TP_PROTO(struct folio *folio, bool *bypass),
630 	TP_ARGS(folio, bypass));
631 DECLARE_HOOK(android_vh_oom_reaper_delay_bypass,
632 	TP_PROTO(struct task_struct *tsk, bool *bypass),
633 	TP_ARGS(tsk, bypass));
634 #endif /* _TRACE_HOOK_MM_H */
635 
636 /* This part must be outside protection */
637 #include <trace/define_trace.h>
638