Defined in 2 files as a macro:
- arch/arc/include/asm/hugepage.h, line 43 (as a macro)
- arch/arm/include/asm/pgtable-3level.h, line 195 (as a macro)
Defined in 9 files as a function:
- arch/arm64/include/asm/pgtable.h, line 795 (as a function)
- arch/loongarch/include/asm/pgtable.h, line 510 (as a function)
- arch/mips/include/asm/pgtable.h, line 621 (as a function)
- arch/powerpc/include/asm/book3s/64/pgtable.h, line 1213 (as a function)
- arch/riscv/include/asm/pgtable.h, line 1013 (as a function)
- arch/s390/include/asm/pgtable.h, line 1824 (as a function)
- arch/sparc/include/asm/pgtable_64.h, line 720 (as a function)
- arch/x86/include/asm/pgtable.h, line 297 (as a function)
- include/linux/pgtable.h, line 2068 (as a function)
Referenced in 26 files:
- arch/loongarch/include/asm/pgtable.h, line 586
- arch/powerpc/mm/book3s64/hash_pgtable.c, line 251
- arch/powerpc/mm/book3s64/pgtable.c
- arch/powerpc/mm/pgtable.c, line 524
- arch/riscv/mm/pgtable.c, line 144
- arch/sparc/mm/tlb.c, line 218
- fs/dax.c
- include/linux/huge_mm.h, line 449
- mm/debug_vm_pgtable.c
- mm/filemap.c, line 3722
- mm/gup.c
- mm/hmm.c
- mm/huge_memory.c
- mm/khugepaged.c, line 1207
- mm/ksm.c, line 1421
- mm/madvise.c
- mm/mapping_dirty_helpers.c, line 132
- mm/memory-failure.c, line 363
- mm/memory.c
- mm/migrate_device.c
- mm/mremap.c, line 138
- mm/page_vma_mapped.c
- mm/pagewalk.c, line 164
- mm/pgtable-generic.c
- mm/userfaultfd.c
- mm/vmscan.c
Smatch caller information:
mm/madvise.c guard_install_pmd_entry() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | r pmdp_get |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/madvise.c guard_remove_pmd_entry() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | r pmdp_get |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/madvise.c madvise_cold_or_pageout_pte_range() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/madvise.c madvise_free_pte_range() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/madvise.c pmd_is_huge() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | $0 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/huge_memory.c __split_huge_pmd_locked() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &vma->vm_private_data->rw_sema |
mm/huge_memory.c copy_huge_pmd() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | <- disables preempt | ||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | &mm->mmap_lock | ||
| LOCK2 | &oldmm->mmap_lock | ||
| LOCK2 | src_ptl | ||
| TYPE_LOCK | (struct mm_struct)->mmap_lock |
mm/huge_memory.c move_huge_pmd() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| LOCK2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &tsk->signal->exec_update_lock | ||
| TYPE_LOCK | (struct mm_struct)->mmap_lock |
mm/huge_memory.c move_pages_huge_pmd() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| LOCK2 | &ctx->map_changing_lock | ||
| TYPE_LOCK | (struct userfaultfd_ctx)->map_changing_lock |
mm/huge_memory.c pmd_is_huge() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | $0 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/huge_memory.c split_huge_pmd_locked() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING |
mm/pagewalk.c pmd_is_huge() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | $0 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/pagewalk.c walk_pmd_range() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
fs/dax.c dax_iomap_pmd_fault() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &inode->i_mapping->invalidate_lock | ||
| HALF_LOCKED2 | &mapping->invalidate_lock |
fs/dax.c dax_iomap_pte_fault() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &inode->i_mapping->invalidate_lock | ||
| HALF_LOCKED2 | &mapping->invalidate_lock |
fs/dax.c pmd_is_huge() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | $0 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &inode->i_mapping->invalidate_lock | ||
| HALF_LOCKED2 | &mapping->invalidate_lock |
mm/userfaultfd.c move_pages() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | r pmdp_get_lockless |
| LOCK2 | &ctx->map_changing_lock | ||
| TYPE_LOCK | (struct userfaultfd_ctx)->map_changing_lock |
mm/userfaultfd.c move_pages_ptes() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| LOCK2 | &ctx->map_changing_lock | ||
| LOCK2 | rcu_read | ||
| TYPE_LOCK | (struct userfaultfd_ctx)->map_changing_lock |
mm/userfaultfd.c move_pages_ptes() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| LOCK2 | &ctx->map_changing_lock | ||
| LOCK2 | rcu_read | ||
| TYPE_LOCK | (struct userfaultfd_ctx)->map_changing_lock |
mm/userfaultfd.c pmd_is_huge() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | $0 |
| LOCK2 | &ctx->map_changing_lock | ||
| TYPE_LOCK | (struct userfaultfd_ctx)->map_changing_lock |
mm/userfaultfd.c userfaultfd_must_wait() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | r pmdp_get_lockless |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING |
mm/damon/vaddr.c pmd_is_huge() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | $0 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
fs/proc/task_mmu.c pmd_is_huge() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | $0 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/page_vma_mapped.c page_vma_mapped_walk() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | r pmdp_get_lockless |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | global &ksm_thread_mutex | ||
| HALF_LOCKED2 | global &mf_mutex | ||
| HALF_LOCKED2 | rcu_read |
mm/page_vma_mapped.c page_vma_mapped_walk() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | <- disables preempt | ||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | global &ksm_thread_mutex | ||
| HALF_LOCKED2 | global &mf_mutex | ||
| HALF_LOCKED2 | rcu_read |
mm/mprotect.c pmd_is_huge() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | $0 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &dst_mm->mmap_lock | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/mremap.c alloc_new_pmd() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| LOCK2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &tsk->signal->exec_update_lock | ||
| TYPE_LOCK | (struct mm_struct)->mmap_lock |
mm/mremap.c pmd_is_huge() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | $0 |
| LOCK2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &tsk->signal->exec_update_lock | ||
| TYPE_LOCK | (struct mm_struct)->mmap_lock |
mm/ksm.c replace_page() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | r pmdp_get_lockless |
| LOCK2 | &mm->mmap_lock | ||
| LOCK2 | global &ksm_thread_mutex | ||
| TYPE_LOCK | (struct mm_struct)->mmap_lock |
mm/filemap.c filemap_map_pmd() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | rcu_read | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/migrate_device.c migrate_vma_collect_huge_pmd() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | <- disables preempt | ||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/migrate_device.c migrate_vma_collect_pmd() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/migrate_device.c migrate_vma_insert_page() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &drm->dmem->mutex |
mm/migrate_device.c pmd_is_huge() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | $0 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &drm->dmem->mutex |
mm/vmscan.c walk_pmd_range() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | r pmdp_get_lockless |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/vmscan.c walk_pmd_range_locked() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/memory.c __handle_mm_fault() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | r pmdp_get_lockless |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/memory.c pmd_is_huge() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | $0 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &oldmm->mmap_lock |
mm/memory.c remap_pmd_range() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING |
mm/memory.c walk_to_pmd() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING |
mm/mincore.c pmd_is_huge() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | $0 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/memory-failure.c dev_pagemap_mapping_shift() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | rcu_read | ||
| HALF_LOCKED2 | &av->root->rwsem | ||
| HALF_LOCKED2 | &mapping->i_mmap_rwsem | ||
| HALF_LOCKED2 | global &mf_mutex |
mm/memory-failure.c pmd_is_huge() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | $0 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/gup.c follow_huge_pmd() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/gup.c follow_pmd_mask() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | <- disables preempt | ||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/gup.c pmd_is_huge() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | $0 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/pgtable-generic.c __pte_offset_map() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | r pmdp_get_lockless |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | rcu_read | ||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | flags |
mm/pgtable-generic.c pmdp_collapse_flush() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mapping->i_mmap_rwsem | ||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &vma->anon_vma->root->rwsem | ||
| HALF_LOCKED2 | rcu_read |
mm/pgtable-generic.c pmdp_huge_clear_flush() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &ctx->map_changing_lock |
mm/mempolicy.c pmd_is_huge() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | $0 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/debug_vm_pgtable.c pmd_is_huge() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | $0 |
mm/debug_vm_pgtable.c pmd_thp_tests() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|
mm/debug_vm_pgtable.c pmd_thp_tests() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|
mm/mapping_dirty_helpers.c wp_clean_pmd_entry() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | r pmdp_get_lockless |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/mlock.c pmd_is_huge() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | $0 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/hmm.c hmm_vma_walk_pmd() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | r pmdp_get_lockless |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/hmm.c hmm_vma_walk_pmd() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | r pmdp_get_lockless |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/khugepaged.c check_pmd_state() -> pmd_trans_huge()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmd | r pmdp_get_lockless |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mapping->i_mmap_rwsem | ||
| HALF_LOCKED2 | &mm->mmap_lock |