| /linux/mm/ |
| H A D | rmap.c | 89 static inline struct anon_vma *anon_vma_alloc(void) in anon_vma_alloc() 91 struct anon_vma *anon_vma; in anon_vma_alloc() local 93 anon_vma = kmem_cache_alloc(anon_vma_cachep, GFP_KERNEL); in anon_vma_alloc() 94 if (anon_vma) { in anon_vma_alloc() 95 atomic_set(&anon_vma->refcount, 1); in anon_vma_alloc() 96 anon_vma->num_children = 0; in anon_vma_alloc() 97 anon_vma->num_active_vmas = 0; in anon_vma_alloc() 98 anon_vma->parent = anon_vma; in anon_vma_alloc() 103 anon_vma->root = anon_vma; in anon_vma_alloc() 106 return anon_vma; in anon_vma_alloc() [all …]
|
| H A D | vma.c | 83 return vma && vma->anon_vma && !list_is_singular(&vma->anon_vma_chain); in vma_had_uncowed_parents() 107 struct anon_vma *tgt_anon = tgt->anon_vma; in is_mergeable_anon_vma() 108 struct anon_vma *src_anon = vmg->anon_vma; in is_mergeable_anon_vma() 115 VM_WARN_ON(src && src_anon != src->anon_vma); in is_mergeable_anon_vma() 143 vp->anon_vma = vma->anon_vma; in init_multi_vma_prep() 160 if (!vp->anon_vma && adjust) in init_multi_vma_prep() 161 vp->anon_vma = adjust->anon_vma; in init_multi_vma_prep() 163 VM_WARN_ON(vp->anon_vma && adjust && adjust->anon_vma && in init_multi_vma_prep() 164 vp->anon_vma != adjust->anon_vma); in init_multi_vma_prep() 264 anon_vma_interval_tree_remove(avc, &avc->anon_vma->rb_root); in anon_vma_interval_tree_pre_update_vma() [all …]
|
| H A D | migrate.c | 1142 struct anon_vma *anon_vma) in __migrate_folio_record() argument 1144 dst->private = (void *)anon_vma + old_page_state; in __migrate_folio_record() 1149 struct anon_vma **anon_vmap) in __migrate_folio_extract() 1153 *anon_vmap = (struct anon_vma *)(private & ~PAGE_OLD_STATES); in __migrate_folio_extract() 1161 struct anon_vma *anon_vma, in migrate_folio_undo_src() argument 1168 if (anon_vma) in migrate_folio_undo_src() 1169 put_anon_vma(anon_vma); in migrate_folio_undo_src() 1210 struct anon_vma *anon_vma = NULL; in migrate_folio_unmap() local 1287 anon_vma = folio_get_anon_vma(src); in migrate_folio_unmap() 1302 __migrate_folio_record(dst, old_page_state, anon_vma); in migrate_folio_unmap() [all …]
|
| H A D | vma.h | 18 struct anon_vma *anon_vma; member 103 struct anon_vma *anon_vma; member 190 .anon_vma = vma_->anon_vma, \ 385 struct anon_vma *find_mergeable_anon_vma(struct vm_area_struct *vma);
|
| H A D | ksm.c | 204 struct anon_vma *anon_vma; /* when stable */ member 771 if (!vma || !(vma->vm_flags & VM_MERGEABLE) || !vma->anon_vma) in find_mergeable_vma() 786 put_anon_vma(rmap_item->anon_vma); in break_cow() 898 put_anon_vma(rmap_item->anon_vma); in remove_node_from_stable_tree() 1051 put_anon_vma(rmap_item->anon_vma); in remove_rmap_item_from_tree() 1221 if (!(vma->vm_flags & VM_MERGEABLE) || !vma->anon_vma) in unmerge_and_remove_all_rmap_items() 1599 rmap_item->anon_vma = vma->anon_vma; in try_to_merge_with_ksm_page() 1600 get_anon_vma(vma->anon_vma); in try_to_merge_with_ksm_page() 2657 if (!vma->anon_vma) in scan_get_next_rmap_item() 2849 if (vma->anon_vma) { in __ksm_del_vma() [all …]
|
| H A D | vma_init.c | 48 dest->anon_vma = src->anon_vma; in vm_area_init_from()
|
| H A D | debug.c | 166 vma->anon_vma, vma->vm_ops, vma->vm_pgoff, in dump_vma() 260 vmg->file, vmg->anon_vma, vmg->policy, in dump_vmg()
|
| H A D | mremap.c | 147 if (vma->anon_vma) in take_rmap_locks() 148 anon_vma_lock_write(vma->anon_vma); in take_rmap_locks() 153 if (vma->anon_vma) in drop_rmap_locks() 154 anon_vma_unlock_write(vma->anon_vma); in drop_rmap_locks()
|
| H A D | huge_memory.c | 204 if (!vma->anon_vma) in __thp_vma_allowable_orders() 2067 VM_BUG_ON_VMA(!vma->anon_vma, vma); in do_huge_pmd_wp_page() 3943 struct anon_vma *anon_vma = NULL; in __folio_split() local 3979 anon_vma = folio_get_anon_vma(folio); in __folio_split() 3980 if (!anon_vma) { in __folio_split() 3984 anon_vma_lock_write(anon_vma); in __folio_split() 4014 anon_vma = NULL; in __folio_split() 4092 if (anon_vma) { in __folio_split() 4093 anon_vma_unlock_write(anon_vma); in __folio_split() 4094 put_anon_vma(anon_vma); in __folio_split()
|
| H A D | khugepaged.c | 926 if (expect_anon && (!(*vmap)->anon_vma || !vma_is_anonymous(*vmap))) in hugepage_vma_revalidate() 1163 anon_vma_lock_write(vma->anon_vma); in collapse_huge_page() 1204 anon_vma_unlock_write(vma->anon_vma); in collapse_huge_page() 1212 anon_vma_unlock_write(vma->anon_vma); in collapse_huge_page() 1720 if (READ_ONCE(vma->anon_vma)) in file_backed_vma_is_retractable()
|
| H A D | madvise.c | 1155 VM_WARN_ON_ONCE(!vma->anon_vma && in madvise_guard_install() 1619 prepares_anon_vma(madv_behavior->behavior) && !vma->anon_vma) in is_vma_lock_sufficient()
|
| H A D | mprotect.c | 752 !vma->anon_vma) { in mprotect_fixup()
|
| H A D | util.c | 671 struct anon_vma *folio_anon_vma(const struct folio *folio) in folio_anon_vma()
|
| H A D | internal.h | 961 struct anon_vma *folio_anon_vma(const struct folio *folio);
|
| H A D | mmap.c | 1789 tmp->anon_vma = NULL; in dup_mmap()
|
| H A D | userfaultfd.c | 80 if (!(vma->vm_flags & VM_SHARED) && unlikely(!vma->anon_vma)) in uffd_lock_vma()
|
| H A D | memory-failure.c | 550 struct anon_vma *av; in collect_procs_anon()
|
| /linux/include/linux/ |
| H A D | rmap.h | 32 struct anon_vma { struct 33 struct anon_vma *root; /* Root of this anon_vma tree */ argument 55 struct anon_vma *parent; /* Parent of this anon_vma */ argument 85 struct anon_vma *anon_vma; member 107 static inline void get_anon_vma(struct anon_vma *anon_vma) in get_anon_vma() argument 109 atomic_inc(&anon_vma->refcount); in get_anon_vma() 112 void __put_anon_vma(struct anon_vma *anon_vma); 114 static inline void put_anon_vma(struct anon_vma *anon_vma) in put_anon_vma() argument 116 if (atomic_dec_and_test(&anon_vma->refcount)) in put_anon_vma() 117 __put_anon_vma(anon_vma); in put_anon_vma() [all …]
|
| /linux/tools/testing/vma/ |
| H A D | vma.c | 36 static struct anon_vma dummy_anon_vma; 201 struct anon_vma *anon_vma) in vmg_set_range_anon_vma() argument 204 vmg->anon_vma = anon_vma; in vmg_set_range_anon_vma() 289 struct anon_vma *anon_vma) in __vma_set_dummy_anon_vma() argument 291 vma->anon_vma = anon_vma; in __vma_set_dummy_anon_vma() 294 avc->anon_vma = vma->anon_vma; in __vma_set_dummy_anon_vma() 457 .anon_vma = &dummy_anon_vma, in __test_merge_new() 460 .anon_vma = &dummy_anon_vma, in __test_merge_new() 463 .anon_vma = &dummy_anon_vma, in __test_merge_new() 466 .anon_vma = &dummy_anon_vma, in __test_merge_new() [all …]
|
| H A D | vma_internal.h | 472 struct anon_vma { struct 473 struct anon_vma *root; argument 482 struct anon_vma *anon_vma; argument 698 struct anon_vma *anon_vma; /* Serialized by page_table_lock */ member 1163 if (src->anon_vma != NULL) { in anon_vma_clone() 1164 dst->anon_vma = src->anon_vma; in anon_vma_clone() 1165 dst->anon_vma->was_cloned = true; in anon_vma_clone() 1246 static inline void anon_vma_lock_write(struct anon_vma *anon_vma) in anon_vma_lock_write() argument 1257 vma->anon_vma->was_unlinked = true; in unlink_anon_vmas() 1260 static inline void anon_vma_unlock_write(struct anon_vma *anon_vma) in anon_vma_unlock_write() argument [all …]
|
| /linux/Documentation/mm/ |
| H A D | process_addrs.rst | 56 :c:struct:`!struct address_space` or :c:struct:`!struct anon_vma` object 256 …mber:`!anon_vma_chain` List of pointers to both forked/CoW’d mmap read, anon_vma write. 257 :c:type:`!anon_vma` objects and 258 :c:member:`!vma->anon_vma` if it is 260 …:c:member:`!anon_vma` :c:type:`!anon_vma` object used by When :c:macro:`NULL`… 267 anon_vma write. 271 anonymous mappings, to be able to access both related :c:struct:`!struct anon_vma` objects 272 and the :c:struct:`!struct anon_vma` in which folios mapped exclusively to this VMA should 276 then it can be in both the :c:type:`!anon_vma` and :c:type:`!i_mmap` 426 anon_vma->rwsem [all …]
|
| /linux/Documentation/translations/zh_CN/admin-guide/mm/ |
| H A D | ksm.rst | 194 制,因为do_swap_page()不能做所有的锁,而需要重组一个跨anon_vma的KSM页。
|
| /linux/Documentation/translations/zh_TW/admin-guide/mm/ |
| H A D | ksm.rst | 194 制,因爲do_swap_page()不能做所有的鎖,而需要重組一個跨anon_vma的KSM頁。
|
| /linux/Documentation/admin-guide/mm/ |
| H A D | ksm.rst | 290 cannot do all the locking needed to reconstitute a cross-anon_vma KSM page.
|
| /linux/fs/ |
| H A D | coredump.c | 1636 if ((!IS_ENABLED(CONFIG_MMU) || vma->anon_vma) && FILTER(ANON_PRIVATE)) in vma_dump_size()
|