Defined in 1 files as a function:

Referenced in 14 files:

Smatch caller information:

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

Type Parameter Key Value
PARAM_VALUE 0 folio 1-u64max
DATA_SOURCE 0 folio r vm_normal_folio
RX_PATH
TASK_NOT_RUNNING
LOCK2 ptl
HALF_LOCKED2 &mm->mmap_lock

mm/madvise.c madvise_free_pte_range() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 1-u64max
DATA_SOURCE 0 folio r vm_normal_folio
RX_PATH
TASK_NOT_RUNNING
LOCK2 ptl
HALF_LOCKED2 &mm->mmap_lock

mm/huge_memory.c folio_is_device_private() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 1-u64max
BUF_SIZE 0 folio (-1)-s32max
BUF_SIZE 0 folio (-1)-s32max
CAPPED_DATA 0 folio 1
DATA_SOURCE 0 folio $0
NOSPEC 0 folio->mapping->writeback_index
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 folio->mapping->writeback_index 0-524287[c]
NO_OVERFLOW_SIMPLE 0 folio->index
NO_OVERFLOW_SIMPLE 0 folio->mapping->host->i_size
HALF_LOCKED2 &anon_vma->root->rwsem
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &oldmm->mmap_lock
HALF_LOCKED2 dst_ptl
HALF_LOCKED2 irq
HALF_LOCKED2 ptl
HALF_LOCKED2 rcu_read
HALF_LOCKED2 src_ptl
HALF_LOCKED2 0 &folio->private->lock

mm/gup_test.c folio_is_device_coherent() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
DATA_SOURCE 0 folio $0

mm/gup_test.c folio_is_fsdax() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
DATA_SOURCE 0 folio $0

lib/test_hmm.c folio_is_device_coherent() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &dmirror->mutex

lib/test_hmm.c folio_is_device_private() -> folio_is_zone_device()

Type Parameter Key Value
BUF_SIZE 0 folio s32min-(-1),1-s32max
BUF_SIZE 0 folio s32min-(-1),1-s32max
DATA_SOURCE 0 folio $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
UNITS 0 folio unit_page

fs/proc/task_mmu.c smaps_pmd_entry() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
DATA_SOURCE 0 folio r _compound_head
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/rmap.c folio_is_device_coherent() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
DATA_SOURCE 0 folio $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING

mm/rmap.c folio_is_device_private() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
BUF_SIZE 0 folio (-1)-s32max
BUF_SIZE 0 folio (-1)-s32max
CAPPED_DATA 0 folio 1
DATA_SOURCE 0 folio $0
NOSPEC 0 folio->mapping->writeback_index
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 folio->mapping->writeback_index 0-524287[c]
NO_OVERFLOW_SIMPLE 0 folio->index
NO_OVERFLOW_SIMPLE 0 folio->mapping->host->i_size
UNITS 0 folio unit_page
HALF_LOCKED2 0 &folio->private->lock

mm/rmap.c folio_referenced() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
DATA_SOURCE 0 folio $0
RX_PATH
TASK_NOT_RUNNING

mm/rmap.c try_to_migrate() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
CAPPED_DATA 0 folio 1
DATA_SOURCE 0 folio $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING

drivers/gpu/drm/drm_gpusvm.c folio_is_device_coherent() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio $0
RX_PATH
TASK_NOT_RUNNING
LOCK2 &vm->lock
HALF_LOCKED2 &(range->gpusvm)->notifier_lock
HALF_LOCKED2 &gpusvm->notifier_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct xe_vm)->lock

drivers/gpu/drm/drm_gpusvm.c folio_is_device_private() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio $0
RX_PATH
TASK_NOT_RUNNING
LOCK2 &vm->lock
HALF_LOCKED2 &gpusvm->notifier_lock
TYPE_LOCK (struct xe_vm)->lock

drivers/iommu/dma-iommu.c folio_is_pci_p2pdma() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING

mm/hugetlb.c folio_is_device_coherent() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
DATA_SOURCE 0 folio $0
RX_PATH
TASK_NOT_RUNNING
LOCK2 global &hugetlb_lock
LOCK2 irq

mm/hugetlb.c folio_is_fsdax() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
DATA_SOURCE 0 folio $0
RX_PATH
TASK_NOT_RUNNING
LOCK2 global &hugetlb_lock
LOCK2 irq

drivers/gpu/drm/drm_pagemap.c folio_is_device_private() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio $0
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 folio->index
UNITS 0 folio unit_page

mm/ksm.c folio_is_device_private() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
CAPPED_DATA 0 folio 1
DATA_SOURCE 0 folio $0
LOCK2 &mm->mmap_lock
LOCK2 global &ksm_thread_mutex
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/ksm.c get_mergeable_page() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 1-u64max
DATA_SOURCE 0 folio r folio_walk_start
LOCK2 &mm->mmap_lock
LOCK2 global &ksm_thread_mutex
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/ksm.c ksm_next_page_pmd_entry() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio r _compound_head
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/ksm.c ksm_next_page_pmd_entry() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio r _compound_head
RX_PATH
TASK_NOT_RUNNING
LOCK2 ptl
HALF_LOCKED2 &mm->mmap_lock

mm/folio.c __folio_put() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio $0

mm/folio.c folios_put_refs() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 1-u64max
CAPPED_DATA 0 folio 1
RX_PATH
TASK_NOT_RUNNING

block/bio-integrity.c folio_is_pci_p2pdma() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 folio unit_page

mm/migrate_device.c __migrate_device_finalize() -> folio_is_zone_device()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
UNITS 0 folio unit_page

mm/migrate_device.c __migrate_device_pages() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
DATA_SOURCE 0 folio r _compound_head
RX_PATH
TASK_NOT_RUNNING

mm/migrate_device.c folio_is_device_coherent() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 ptl

mm/migrate_device.c folio_is_device_private() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 folio unit_page
HALF_LOCKED2 ptl

mm/migrate_device.c migrate_device_unmap() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
DATA_SOURCE 0 folio r _compound_head
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING

mm/migrate_device.c migrate_device_unmap() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
CAPPED_DATA 0 folio 1
DATA_SOURCE 0 folio r _compound_head
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING

mm/migrate_device.c migrate_vma_check_page() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio r _compound_head
RX_PATH
TASK_NOT_RUNNING

mm/migrate_device.c migrate_vma_insert_huge_pmd_page() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
DATA_SOURCE 0 folio r _compound_head
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &drm->dmem->mutex

mm/migrate_device.c migrate_vma_insert_huge_pmd_page() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
DATA_SOURCE 0 folio r _compound_head
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &drm->dmem->mutex

mm/migrate_device.c migrate_vma_insert_page() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
DATA_SOURCE 0 folio r _compound_head
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &drm->dmem->mutex

mm/migrate_device.c migrate_vma_insert_page() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
DATA_SOURCE 0 folio r _compound_head
RX_PATH
TASK_NOT_RUNNING
LOCK2 ptl
HALF_LOCKED2 &drm->dmem->mutex

block/blk-mq-dma.c folio_is_pci_p2pdma() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 __tag_set->srcu
HALF_LOCKED2 rcu_read

drivers/nvme/host/pci.c folio_is_pci_p2pdma() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 folio unit_page
HALF_LOCKED2 __tag_set->srcu
HALF_LOCKED2 rcu_read

mm/memory.c do_numa_page() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 1-u64max
DATA_SOURCE 0 folio r vm_normal_folio
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 rcu_read
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &pool->lock

mm/memory.c folio_is_device_private() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
CAPPED_DATA 0 folio 1
DATA_SOURCE 0 folio $0
RX_PATH
TASK_NOT_RUNNING
LOCK2 &mm->mmap_lock
LOCK2 &oldmm->mmap_lock
LOCK2 dst_ptl
LOCK2 rcu_read
LOCK2 src_ptl
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/memory.c folio_is_fsdax() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
UNITS 0 folio unit_page
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 rcu_read

block/bio.c folio_is_pci_p2pdma() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 folio unit_page

drivers/gpu/drm/nouveau/nouveau_dmem.c folio_is_device_private() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
DATA_SOURCE 0 folio $0
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 folio->index
UNITS 0 folio unit_page
HALF_LOCKED2 irq

mm/gup.c folio_is_device_coherent() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING

mm/gup.c folio_is_fsdax() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
CAPPED_DATA 0 folio 1
DATA_SOURCE 0 folio $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 flags

mm/gup.c folio_is_pci_p2pdma() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
UNITS 0 folio unit_page
HALF_LOCKED2 flags
HALF_LOCKED2 rcu_read

mm/memremap.c zone_device_page_init() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
LOCK2 &mm->mmap_lock
HALF_LOCKED2 &driver_migrate_lock
HALF_LOCKED2 &prange->migrate_mutex
HALF_LOCKED2 &svms->lock
HALF_LOCKED2 &vm->lock
HALF_LOCKED2 global &drm_unplug_srcu
TYPE_LOCK (struct mm_struct)->mmap_lock

drivers/gpu/drm/nouveau/nouveau_svm.c folio_is_device_private() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio $0
LOCK2 &pool->lock
LOCK2 &svmm->mutex
TYPE_LOCK (struct nouveau_svmm)->mutex

mm/mempolicy.c folio_can_map_prot_numa() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 1-u64max
DATA_SOURCE 0 folio $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 ptl

mm/mempolicy.c queue_folios_pte_range() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 1-u64max
DATA_SOURCE 0 folio r vm_normal_folio
RX_PATH
TASK_NOT_RUNNING
LOCK2 ptl
HALF_LOCKED2 &mm->mmap_lock

kernel/events/uprobes.c uprobe_write() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
DATA_SOURCE 0 folio r _compound_head
RX_PATH
TASK_NOT_RUNNING
UNITS 0 folio unit_page
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &uprobe->register_rwsem

mm/migrate.c __add_folio_for_migration() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 1-u64max
CAPPED_DATA 0 folio 1
DATA_SOURCE 0 folio $0
LOCK2 &mm->mmap_lock
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/migrate.c do_pages_stat_array() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 1-u64max
CAPPED_DATA 0 folio 1
DATA_SOURCE 0 folio r folio_walk_start
LOCK2 &mm->mmap_lock
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/migrate.c folio_is_device_private() -> folio_is_zone_device()

Type Parameter Key Value
BUF_SIZE 0 folio (-1)-s32max
BUF_SIZE 0 folio (-1)-s32max
DATA_SOURCE 0 folio $0
NOSPEC 0 folio->mapping->writeback_index
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 folio->mapping->writeback_index 0-524287[c]
NO_OVERFLOW_SIMPLE 0 folio->index
NO_OVERFLOW_SIMPLE 0 folio->mapping->host->i_size
UNITS 0 folio unit_page
HALF_LOCKED2 &anon_vma->root->rwsem
HALF_LOCKED2 0 &folio->private->lock

mm/migrate.c move_to_new_folio() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
CAPPED_DATA 0 folio 1
DATA_SOURCE 0 folio $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING

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

Type Parameter Key Value
DATA_SOURCE 0 folio r _compound_head
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

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

Type Parameter Key Value
PARAM_VALUE 0 folio 1-u64max
DATA_SOURCE 0 folio r vm_normal_folio
RX_PATH
TASK_NOT_RUNNING
LOCK2 ptl
HALF_LOCKED2 &mm->mmap_lock

mm/hmm.c folio_is_pci_p2pdma() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &odp_imr->umem_mutex
HALF_LOCKED2 &pool->lock
HALF_LOCKED2 &umem_odp->umem_mutex

mm/khugepaged.c collapse_check_pte() -> folio_is_zone_device()

Type Parameter Key Value
PARAM_VALUE 0 folio 1-u64max
DATA_SOURCE 0 folio r vm_normal_folio
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &vma->anon_vma->root->rwsem
HALF_LOCKED2 pte_ptl
HALF_LOCKED2 ptl

drivers/nvme/target/io-cmd-bdev.c folio_is_pci_p2pdma() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &pool->lock

kernel/dma/direct.c folio_is_pci_p2pdma() -> folio_is_zone_device()

Type Parameter Key Value
DATA_SOURCE 0 folio $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING