You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Generic MM expects architectures (with MMU) to provide helpers to create, access
and modify page table entries at various level for different memory functions.
These page table helpers need to conform to a common semantics across platforms.
Following tables describe the expected semantics which can also be tested during
boot via CONFIG_DEBUG_VM_PGTABLE option. All future changes in here or the debug
test need to be in sync.
PTE Page Table Helpers
pte_same
Tests whether both PTE entries are the same
pte_bad
Tests a non-table mapped PTE
pte_present
Tests a valid mapped PTE
pte_young
Tests a young PTE
pte_dirty
Tests a dirty PTE
pte_write
Tests a writable PTE
pte_special
Tests a special PTE
pte_protnone
Tests a PROT_NONE PTE
pte_devmap
Tests a ZONE_DEVICE mapped PTE
pte_soft_dirty
Tests a soft dirty PTE
pte_swp_soft_dirty
Tests a soft dirty swapped PTE
pte_mkyoung
Creates a young PTE
pte_mkold
Creates an old PTE
pte_mkdirty
Creates a dirty PTE
pte_mkclean
Creates a clean PTE
pte_mkwrite
Creates a writable PTE
pte_wrprotect
Creates a write protected PTE
pte_mkspecial
Creates a special PTE
pte_mkdevmap
Creates a ZONE_DEVICE mapped PTE
pte_mksoft_dirty
Creates a soft dirty PTE
pte_clear_soft_dirty
Clears a soft dirty PTE
pte_swp_mksoft_dirty
Creates a soft dirty swapped PTE
pte_swp_clear_soft_dirty
Clears a soft dirty swapped PTE
pte_mknotpresent
Invalidates a mapped PTE
ptep_clear
Clears a PTE
ptep_get_and_clear
Clears and returns PTE
ptep_get_and_clear_full
Clears and returns PTE (batched PTE unmap)
ptep_test_and_clear_young
Clears young from a PTE
ptep_set_wrprotect
Converts into a write protected PTE
ptep_set_access_flags
Converts into a more permissive PTE
PMD Page Table Helpers
pmd_same
Tests whether both PMD entries are the same
pmd_bad
Tests a non-table mapped PMD
pmd_leaf
Tests a leaf mapped PMD
pmd_huge
Tests a HugeTLB mapped PMD
pmd_trans_huge
Tests a Transparent Huge Page (THP) at PMD
pmd_present
Tests a valid mapped PMD
pmd_young
Tests a young PMD
pmd_dirty
Tests a dirty PMD
pmd_write
Tests a writable PMD
pmd_special
Tests a special PMD
pmd_protnone
Tests a PROT_NONE PMD
pmd_devmap
Tests a ZONE_DEVICE mapped PMD
pmd_soft_dirty
Tests a soft dirty PMD
pmd_swp_soft_dirty
Tests a soft dirty swapped PMD
pmd_mkyoung
Creates a young PMD
pmd_mkold
Creates an old PMD
pmd_mkdirty
Creates a dirty PMD
pmd_mkclean
Creates a clean PMD
pmd_mkwrite
Creates a writable PMD
pmd_wrprotect
Creates a write protected PMD
pmd_mkspecial
Creates a special PMD
pmd_mkdevmap
Creates a ZONE_DEVICE mapped PMD
pmd_mksoft_dirty
Creates a soft dirty PMD
pmd_clear_soft_dirty
Clears a soft dirty PMD
pmd_swp_mksoft_dirty
Creates a soft dirty swapped PMD
pmd_swp_clear_soft_dirty
Clears a soft dirty swapped PMD
pmd_mkinvalid
Invalidates a mapped PMD [1]
pmd_set_huge
Creates a PMD huge mapping
pmd_clear_huge
Clears a PMD huge mapping
pmdp_get_and_clear
Clears a PMD
pmdp_get_and_clear_full
Clears a PMD
pmdp_test_and_clear_young
Clears young from a PMD
pmdp_set_wrprotect
Converts into a write protected PMD
pmdp_set_access_flags
Converts into a more permissive PMD
PUD Page Table Helpers
pud_same
Tests whether both PUD entries are the same
pud_bad
Tests a non-table mapped PUD
pud_leaf
Tests a leaf mapped PUD
pud_huge
Tests a HugeTLB mapped PUD
pud_trans_huge
Tests a Transparent Huge Page (THP) at PUD
pud_present
Tests a valid mapped PUD
pud_young
Tests a young PUD
pud_dirty
Tests a dirty PUD
pud_write
Tests a writable PUD
pud_devmap
Tests a ZONE_DEVICE mapped PUD
pud_mkyoung
Creates a young PUD
pud_mkold
Creates an old PUD
pud_mkdirty
Creates a dirty PUD
pud_mkclean
Creates a clean PUD
pud_mkwrite
Creates a writable PUD
pud_wrprotect
Creates a write protected PUD
pud_mkdevmap
Creates a ZONE_DEVICE mapped PUD
pud_mkinvalid
Invalidates a mapped PUD [1]
pud_set_huge
Creates a PUD huge mapping
pud_clear_huge
Clears a PUD huge mapping
pudp_get_and_clear
Clears a PUD
pudp_get_and_clear_full
Clears a PUD
pudp_test_and_clear_young
Clears young from a PUD
pudp_set_wrprotect
Converts into a write protected PUD
pudp_set_access_flags
Converts into a more permissive PUD
HugeTLB Page Table Helpers
pte_huge
Tests a HugeTLB
pte_mkhuge
Creates a HugeTLB
huge_pte_dirty
Tests a dirty HugeTLB
huge_pte_write
Tests a writable HugeTLB
huge_pte_mkdirty
Creates a dirty HugeTLB
huge_pte_mkwrite
Creates a writable HugeTLB
huge_pte_wrprotect
Creates a write protected HugeTLB
huge_ptep_get_and_clear
Clears a HugeTLB
huge_ptep_set_wrprotect
Converts into a write protected HugeTLB
huge_ptep_set_access_flags | Converts into a more permissive HugeTLB
SWAP Page Table Helpers
__pte_to_swp_entry
Creates a swapped entry (arch) from a mapped PTE
__swp_to_pte_entry
Creates a mapped PTE from a swapped entry (arch)
__pmd_to_swp_entry
Creates a swapped entry (arch) from a mapped PMD
__swp_to_pmd_entry
Creates a mapped PMD from a swapped entry (arch)
is_migration_entry | Tests a migration (read or write) swapped entry