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