Defined in 1 files as a member:

Defined in 23 files as a macro:

Defined in 7 files as a function:

Referenced in 30 files:

Smatch caller information:

mm/madvise.c is_huge_zero_pmd() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/madvise.c madvise_cold_or_pageout_pte_range() -> pmd_pfn()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/huge_memory.c __discard_anon_folio_pmd_locked() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd r pmdp_huge_clear_flush
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &anon_vma->root->rwsem
HALF_LOCKED2 &folio->private->lock

mm/huge_memory.c __split_huge_pmd_locked() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd r pmdp_huge_clear_flush
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &vma->vm_private_data->rw_sema

mm/huge_memory.c __split_huge_pmd_locked() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd r pmdp_invalidate
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &vma->vm_private_data->rw_sema

mm/huge_memory.c change_huge_pmd() -> pmd_pfn()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &dst_mm->mmap_lock
HALF_LOCKED2 &mm->mmap_lock

mm/huge_memory.c copy_huge_pmd() -> pmd_pfn()

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 do_huge_pmd_wp_page() -> pmd_pfn()

Type Parameter Key Value
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &pool->lock

mm/huge_memory.c huge_pmd_needs_flush() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/huge_memory.c huge_pmd_needs_flush() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $1
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/huge_memory.c insert_pmd() -> pmd_pfn()

Type Parameter Key Value
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING

mm/huge_memory.c is_huge_zero_pmd() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &ctx->map_changing_lock
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &oldmm->mmap_lock
HALF_LOCKED2 ptl
HALF_LOCKED2 src_ptl

mm/huge_memory.c madvise_free_huge_pmd() -> pmd_pfn()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/huge_memory.c move_pages_huge_pmd() -> pmd_pfn()

Type Parameter Key Value
LOCK2 &ctx->map_changing_lock
TYPE_LOCK (struct userfaultfd_ctx)->map_changing_lock

arch/x86/mm/init_64.c free_pte_table() -> pmd_pfn()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING

arch/x86/mm/init_64.c remove_pmd_table() -> pmd_pfn()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING

arch/x86/mm/init_64.c remove_pmd_table() -> pmd_pfn()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING

mm/pagewalk.c folio_walk_start() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd r pmdp_get
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &split_debug_mutex
HALF_LOCKED2 global &ksm_thread_mutex

mm/pagewalk.c is_huge_zero_pmd() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &split_debug_mutex
HALF_LOCKED2 global &ksm_thread_mutex

mm/userfaultfd.c move_pages() -> pmd_pfn()

Type Parameter Key Value
LOCK2 &ctx->map_changing_lock
TYPE_LOCK (struct userfaultfd_ctx)->map_changing_lock

mm/kasan/init.c kasan_pte_table() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &dev->mutex

mm/ptdump.c ptdump_pmd_entry() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd r pmdp_get
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

fs/proc/task_mmu.c clear_refs_pte_range() -> pmd_pfn()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

fs/proc/task_mmu.c is_huge_zero_pmd() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

fs/proc/task_mmu.c pagemap_pmd_range_thp() -> pmd_pfn()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

fs/proc/task_mmu.c pagemap_pmd_range_thp() -> pmd_pfn()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/page_table_check.c __page_table_check_pmd_clear() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $2
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 ptl

mm/page_table_check.c __page_table_check_pmds_set() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $3
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 ptl
HALF_LOCKED2 vmf->ptl

mm/page_table_check.c page_table_check_huge_zero_pmd() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 ptl

mm/rmap.c try_to_migrate_one() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd r pmdp_get
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &anon_vma->root->rwsem
HALF_LOCKED2 &folio->private->lock
HALF_LOCKED2 &resv_map->rw_sema
HALF_LOCKED2 &vma->vm_private_data->rw_sema

mm/page_vma_mapped.c page_vma_mapped_walk() -> pmd_pfn()

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/mremap.c move_normal_pmd() -> pmd_pfn()

Type Parameter Key Value
PREEMPT_ADD <- disables preempt
LOCK2 &mm->mmap_lock
HALF_LOCKED2 &tsk->signal->exec_update_lock
HALF_LOCKED2 new_ptl
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/migrate_device.c is_huge_zero_pmd() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &drm->dmem->mutex

mm/migrate_device.c migrate_vma_collect_huge_pmd() -> pmd_pfn()

Type Parameter Key Value
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/vmscan.c get_pmd_pfn() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 ptl

mm/vmscan.c is_huge_zero_pmd() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

arch/x86/mm/mem_encrypt_amd.c pg_level_to_pfn() -> pmd_pfn()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING

mm/memory.c follow_pfnmap_start() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd r pmdp_get
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &iommu->lock
HALF_LOCKED2 &mm->mmap_lock

mm/memory.c free_pte_range() -> pmd_pfn()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &tsk->signal->exec_update_lock

mm/memory.c vm_normal_page_pmd() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $2
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/memory.c zap_pte_range() -> pmd_pfn()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/memory-failure.c check_hwpoisoned_pmd_entry() -> pmd_pfn()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

arch/x86/mm/kmmio.c pmd_mkinvalid() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 flags

mm/gup.c follow_huge_pmd() -> pmd_pfn()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/gup.c gup_fast_pmd_leaf() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 flags

mm/gup.c is_huge_zero_pmd() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/damon/ops-common.c damon_pmdp_mkold() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd r pmdp_get
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 ptl

mm/pgtable-generic.c pmd_mkinvalid() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 ptl

mm/pgtable-generic.c pte_lockptr() -> pmd_pfn()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 rcu_read
HALF_LOCKED2 &mm->mmap_lock

mm/mempolicy.c queue_folios_pmd() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd r pmdp_get
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

arch/x86/mm/pat/set_memory.c __should_split_large_page() -> pmd_pfn()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 global &cpa_lock
LOCK2 global &pgd_lock
HALF_LOCKED2 global &mem_enc_lock

arch/x86/mm/pat/set_memory.c __split_large_page() -> pmd_pfn()

Type Parameter Key Value
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 global &pgd_lock
HALF_LOCKED2 global &cpa_lock
HALF_LOCKED2 global &init_mm.mmap_lock
HALF_LOCKED2 global &mem_enc_lock

arch/x86/mm/pat/set_memory.c collapse_pmd_page() -> pmd_pfn()

Type Parameter Key Value
PREEMPT_ADD
LOCK2 global &cpa_lock
LOCK2 global &pgd_lock

arch/x86/mm/pat/set_memory.c collapse_pud_page() -> pmd_pfn()

Type Parameter Key Value
PREEMPT_ADD
LOCK2 global &cpa_lock
LOCK2 global &pgd_lock

arch/x86/mm/pat/set_memory.c collapse_pud_page() -> pmd_pfn()

Type Parameter Key Value
PREEMPT_ADD
LOCK2 global &cpa_lock
LOCK2 global &pgd_lock

arch/x86/mm/pat/set_memory.c collapse_pud_page() -> pmd_pfn()

Type Parameter Key Value
PREEMPT_ADD
LOCK2 global &cpa_lock
LOCK2 global &pgd_lock

arch/x86/mm/pat/set_memory.c slow_virt_to_phys() -> pmd_pfn()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &of->mutex
HALF_LOCKED2 flags
HALF_LOCKED2 global &efi_runtime_lock
HALF_LOCKED2 global &mem_enc_lock
HALF_LOCKED2 irq

mm/vmalloc.c vmalloc_to_page() -> pmd_pfn()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &bo->mutex
HALF_LOCKED2 &cache->writeback_lock
HALF_LOCKED2 &fbdefio_state->lock
HALF_LOCKED2 &hw->hw_info.lock
HALF_LOCKED2 &idev->info_lock
HALF_LOCKED2 &pds_vfio->state_mutex
HALF_LOCKED2 &pool->lock
HALF_LOCKED2 &rproc->lock
HALF_LOCKED2 &runtime->buffer_mutex
HALF_LOCKED2 &service->bulk_mutex
HALF_LOCKED2 _T->lock
HALF_LOCKED2 flags
HALF_LOCKED2 global &page_offline_rwsem
HALF_LOCKED2 global &pcpu_alloc_mutex
HALF_LOCKED2 global &report_lock
HALF_LOCKED2 sk

mm/debug_vm_pgtable.c init_args() -> pmd_pfn()

Type Parameter Key Value

mm/debug_vm_pgtable.c pmd_mkinvalid() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $0

mm/hugetlb_vmemmap.c vmemmap_pmd_entry() -> pmd_pfn()

Type Parameter Key Value
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 global &init_mm.page_table_lock
HALF_LOCKED2 &mm->mmap_lock
TYPE_LOCK (struct mm_struct)->page_table_lock

mm/mlock.c is_huge_zero_pmd() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/mlock.c mlock_pte_range() -> pmd_pfn()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/hmm.c hmm_vma_handle_pmd() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $4
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/khugepaged.c __collapse_huge_page_copy_failed() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $2
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &vma->anon_vma->root->rwsem
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/khugepaged.c collapse_huge_page() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd r pmdp_collapse_flush
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &mm->mmap_lock
LOCK2 &vma->anon_vma->root->rwsem
LOCK2 pmd_ptl
HALF_LOCKED2 &mm->mmap_lock
TYPE_LOCK (struct anon_vma)->rwsem
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/khugepaged.c collapse_huge_page() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd r pmdp_collapse_flush
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &mm->mmap_lock
LOCK2 pmd_ptl
HALF_LOCKED2 &mm->mmap_lock
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/khugepaged.c collapse_huge_page() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd r pmdp_collapse_flush
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &mm->mmap_lock
LOCK2 &vma->anon_vma->root->rwsem
LOCK2 pmd_ptl
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 pte_ptl
TYPE_LOCK (struct anon_vma)->rwsem
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/khugepaged.c pte_lockptr() -> pmd_pfn()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 &mapping->i_mmap_rwsem
HALF_LOCKED2 &mm->mmap_lock
TYPE_LOCK (struct address_space)->i_mmap_rwsem

mm/khugepaged.c retract_page_tables() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd r pmdp_collapse_flush
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &mapping->i_mmap_rwsem
HALF_LOCKED2 &mm->mmap_lock
TYPE_LOCK (struct address_space)->i_mmap_rwsem

mm/khugepaged.c try_collapse_pte_mapped_thp() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd r pmdp_collapse_flush
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &mm->mmap_lock

arch/x86/mm/pgtable.c pmd_free_pte_page() -> pmd_pfn()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING

arch/x86/mm/pgtable.c pmd_mkinvalid() -> pmd_pfn()

Type Parameter Key Value
DATA_SOURCE 0 pmd $0
RX_PATH
TASK_NOT_RUNNING
LOCK2 ptl
HALF_LOCKED2 &mm->mmap_lock

arch/x86/mm/pgtable.c pud_free_pmd_page() -> pmd_pfn()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING

arch/x86/xen/mmu_pv.c xen_pmd_walk() -> pmd_pfn()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 irq
HALF_LOCKED2 &mm->page_table_lock