| /linux/arch/arm64/mm/ |
| H A D | contpte.c | 24 static inline pte_t *contpte_align_down(pte_t *ptep) in contpte_align_down() argument 26 return PTR_ALIGN_DOWN(ptep, sizeof(*ptep) * CONT_PTES); in contpte_align_down() 30 pte_t *ptep, unsigned int nr) in contpte_try_unfold_partial() argument 37 if (ptep != contpte_align_down(ptep) || nr < CONT_PTES) in contpte_try_unfold_partial() 38 contpte_try_unfold(mm, addr, ptep, __ptep_get(ptep)); in contpte_try_unfold_partial() 40 if (ptep + nr != contpte_align_down(ptep + nr)) { in contpte_try_unfold_partial() 42 pte_t *last_ptep = ptep + nr - 1; in contpte_try_unfold_partial() 50 pte_t *ptep, pte_t pte) in contpte_convert() argument 57 start_ptep = ptep = contpte_align_down(ptep); in contpte_convert() 61 for (i = 0; i < CONT_PTES; i++, ptep++, addr += PAGE_SIZE) { in contpte_convert() [all …]
|
| H A D | hugetlbpage.c | 83 pte_t *ptep, size_t *pgsize) in find_num_contig() argument 94 if ((pte_t *)pmdp == ptep) { in find_num_contig() 123 pte_t huge_ptep_get(struct mm_struct *mm, unsigned long addr, pte_t *ptep) in huge_ptep_get() argument 127 pte_t orig_pte = __ptep_get(ptep); in huge_ptep_get() 132 ncontig = find_num_contig(mm, addr, ptep, &pgsize); in huge_ptep_get() 133 for (i = 0; i < ncontig; i++, ptep++) { in huge_ptep_get() 134 pte_t pte = __ptep_get(ptep); in huge_ptep_get() 155 pte_t *ptep, in get_clear_contig() argument 162 pte = __ptep_get_and_clear_anysz(mm, ptep, pgsize); in get_clear_contig() 165 ptep++; in get_clear_contig() [all …]
|
| /linux/arch/s390/mm/ |
| H A D | pgtable.c | 41 pte_t *ptep, int nodat) in ptep_ipte_local() argument 54 __ptep_ipte(addr, ptep, opt, asce, IPTE_LOCAL); in ptep_ipte_local() 56 __ptep_ipte(addr, ptep, 0, 0, IPTE_LOCAL); in ptep_ipte_local() 61 pte_t *ptep, int nodat) in ptep_ipte_global() argument 74 __ptep_ipte(addr, ptep, opt, asce, IPTE_GLOBAL); in ptep_ipte_global() 76 __ptep_ipte(addr, ptep, 0, 0, IPTE_GLOBAL); in ptep_ipte_global() 81 unsigned long addr, pte_t *ptep, in ptep_flush_direct() argument 86 old = *ptep; in ptep_flush_direct() 92 ptep_ipte_local(mm, addr, ptep, nodat); in ptep_flush_direct() 94 ptep_ipte_global(mm, addr, ptep, nodat); in ptep_flush_direct() [all …]
|
| /linux/arch/riscv/mm/ |
| H A D | hugetlbpage.c | 6 pte_t huge_ptep_get(struct mm_struct *mm, unsigned long addr, pte_t *ptep) in huge_ptep_get() argument 10 pte_t orig_pte = ptep_get(ptep); in huge_ptep_get() 17 for (i = 0; i < pte_num; i++, ptep++) { in huge_ptep_get() 18 pte_t pte = ptep_get(ptep); in huge_ptep_get() 150 pte_t *ptep, in get_clear_contig() argument 156 pte = ptep_get_and_clear(mm, addr, ptep); in get_clear_contig() 159 ptep++; in get_clear_contig() 161 tmp_pte = ptep_get_and_clear(mm, addr, ptep); in get_clear_contig() 174 pte_t *ptep, in get_clear_contig_flush() argument 177 pte_t orig_pte = get_clear_contig(mm, addr, ptep, pte_num); in get_clear_contig_flush() [all …]
|
| /linux/arch/riscv/kvm/ |
| H A D | gstage.c | 83 pte_t *ptep; in kvm_riscv_gstage_get_leaf() local 87 ptep = (pte_t *)gstage->pgd; in kvm_riscv_gstage_get_leaf() 88 ptep = &ptep[gstage_pte_index(addr, current_level)]; in kvm_riscv_gstage_get_leaf() 89 while (ptep && pte_val(ptep_get(ptep))) { in kvm_riscv_gstage_get_leaf() 90 if (gstage_pte_leaf(ptep)) { in kvm_riscv_gstage_get_leaf() 92 *ptepp = ptep; in kvm_riscv_gstage_get_leaf() 99 ptep = (pte_t *)gstage_pte_page_vaddr(ptep_get(ptep)); in kvm_riscv_gstage_get_leaf() 100 ptep = &ptep[gstage_pte_index(addr, current_level)]; in kvm_riscv_gstage_get_leaf() 102 ptep = NULL; in kvm_riscv_gstage_get_leaf() 130 pte_t *ptep = &next_ptep[gstage_pte_index(map->addr, current_level)]; in kvm_riscv_gstage_set_pte() local [all …]
|
| /linux/arch/s390/include/asm/ |
| H A D | hugetlb.h | 22 pte_t *ptep, pte_t pte, unsigned long sz); 24 pte_t *ptep, pte_t pte); 27 pte_t huge_ptep_get(struct mm_struct *mm, unsigned long addr, pte_t *ptep); 30 pte_t *ptep); 34 unsigned long addr, pte_t *ptep, in huge_ptep_get_and_clear() argument 37 return __huge_ptep_get_and_clear(mm, addr, ptep); in huge_ptep_get_and_clear() 48 pte_t *ptep, unsigned long sz) in huge_pte_clear() argument 50 if ((pte_val(*ptep) & _REGION_ENTRY_TYPE_MASK) == _REGION_ENTRY_TYPE_R3) in huge_pte_clear() 51 set_pte(ptep, __pte(_REGION3_ENTRY_EMPTY)); in huge_pte_clear() 53 set_pte(ptep, __pte(_SEGMENT_ENTRY_EMPTY)); in huge_pte_clear() [all …]
|
| /linux/drivers/iommu/ |
| H A D | io-pgtable-dart.c | 115 dart_iopte *ptep) in dart_init_pte() argument 122 if (ptep[i] & APPLE_DART_PTE_VALID) { in dart_init_pte() 124 WARN_ON(ptep[i] & APPLE_DART_PTE_VALID); in dart_init_pte() 135 ptep[i] = pte | paddr_to_iopte(paddr + i * sz, data); in dart_init_pte() 141 dart_iopte *ptep, in dart_install_table() argument 156 old = cmpxchg64_relaxed(ptep, curr, new); in dart_install_table() 176 dart_iopte pte, *ptep; in dart_get_last() local 183 ptep = data->pgd[tbl]; in dart_get_last() 184 if (!ptep) in dart_get_last() 188 ptep += dart_get_index(data, iova, level); in dart_get_last() [all …]
|
| H A D | io-pgtable-arm.c | 156 #define iopte_set_writeable_clean(ptep) \ argument 157 set_bit(ARM_LPAE_PTE_AP_RDONLY_BIT, (unsigned long *)(ptep)) 318 static void __arm_lpae_sync_pte(arm_lpae_iopte *ptep, int num_entries, in __arm_lpae_sync_pte() argument 321 dma_sync_single_for_device(cfg->iommu_dev, __arm_lpae_dma_addr(ptep), in __arm_lpae_sync_pte() 322 sizeof(*ptep) * num_entries, DMA_TO_DEVICE); in __arm_lpae_sync_pte() 325 static void __arm_lpae_clear_pte(arm_lpae_iopte *ptep, struct io_pgtable_cfg *cfg, int num_entries) in __arm_lpae_clear_pte() argument 328 ptep[i] = 0; in __arm_lpae_clear_pte() 331 __arm_lpae_sync_pte(ptep, num_entries, cfg); in __arm_lpae_clear_pte() 337 int lvl, arm_lpae_iopte *ptep); 341 int lvl, int num_entries, arm_lpae_iopte *ptep) in __arm_lpae_init_pte() argument [all …]
|
| /linux/arch/arm64/include/asm/ |
| H A D | pgtable.h | 138 #define flush_tlb_fix_spurious_fault(vma, address, ptep) do { } while (0) argument 178 #define __pte_clear(mm, addr, ptep) \ argument 179 __set_pte(ptep, __pte(0)) 397 static inline void __set_pte_nosync(pte_t *ptep, pte_t pte) in __set_pte_nosync() argument 399 WRITE_ONCE(*ptep, pte); in __set_pte_nosync() 412 static inline void __set_pte(pte_t *ptep, pte_t pte) in __set_pte() argument 414 __set_pte_nosync(ptep, pte); in __set_pte() 418 static inline pte_t __ptep_get(pte_t *ptep) in __ptep_get() argument 420 return READ_ONCE(*ptep); in __ptep_get() 442 static inline void __check_safe_pte_update(struct mm_struct *mm, pte_t *ptep, in __check_safe_pte_update() argument [all …]
|
| /linux/include/linux/ |
| H A D | pgtable.h | 255 static inline unsigned int pte_batch_hint(pte_t *ptep, pte_t pte) in pte_batch_hint() argument 290 pte_t *ptep, pte_t pte, unsigned int nr) in set_ptes() argument 292 page_table_check_ptes_set(mm, ptep, pte, nr); in set_ptes() 295 set_pte(ptep, pte); in set_ptes() 298 ptep++; in set_ptes() 303 #define set_pte_at(mm, addr, ptep, pte) set_ptes(mm, addr, ptep, pte, 1) argument 307 unsigned long address, pte_t *ptep, 338 static inline pte_t ptep_get(pte_t *ptep) in ptep_get() argument 340 return READ_ONCE(*ptep); in ptep_get() 375 pte_t *ptep) in ptep_test_and_clear_young() argument [all …]
|
| /linux/include/asm-generic/ |
| H A D | hugetlb.h | 63 pte_t *ptep, unsigned long sz) in huge_pte_clear() argument 65 pte_clear(mm, addr, ptep); in huge_pte_clear() 71 pte_t *ptep, pte_t pte, unsigned long sz) in set_huge_pte_at() argument 73 set_pte_at(mm, addr, ptep, pte); in set_huge_pte_at() 79 unsigned long addr, pte_t *ptep, unsigned long sz) in huge_ptep_get_and_clear() argument 81 return ptep_get_and_clear(mm, addr, ptep); in huge_ptep_get_and_clear() 87 unsigned long addr, pte_t *ptep) in huge_ptep_clear_flush() argument 89 return ptep_clear_flush(vma, addr, ptep); in huge_ptep_clear_flush() 110 unsigned long addr, pte_t *ptep) in huge_ptep_set_wrprotect() argument 112 ptep_set_wrprotect(mm, addr, ptep); in huge_ptep_set_wrprotect() [all …]
|
| /linux/arch/sparc/include/asm/ |
| H A D | hugetlb.h | 17 pte_t *ptep, pte_t pte, unsigned long sz); 19 pte_t *ptep, pte_t pte); 23 pte_t *ptep, unsigned long sz); 27 unsigned long addr, pte_t *ptep) in huge_ptep_clear_flush() argument 29 return *ptep; in huge_ptep_clear_flush() 34 unsigned long addr, pte_t *ptep) in huge_ptep_set_wrprotect() argument 36 pte_t old_pte = *ptep; in huge_ptep_set_wrprotect() 37 __set_huge_pte_at(mm, addr, ptep, pte_wrprotect(old_pte)); in huge_ptep_set_wrprotect() 42 unsigned long addr, pte_t *ptep, in huge_ptep_set_access_flags() argument 45 int changed = !pte_same(*ptep, pte); in huge_ptep_set_access_flags() [all …]
|
| /linux/arch/parisc/mm/ |
| H A D | hugetlbpage.c | 102 pte_t *ptep, pte_t entry) in __set_huge_pte_at() argument 111 set_pte(ptep, entry); in __set_huge_pte_at() 112 ptep++; in __set_huge_pte_at() 122 pte_t *ptep, pte_t entry, unsigned long sz) in set_huge_pte_at() argument 124 __set_huge_pte_at(mm, addr, ptep, entry); in set_huge_pte_at() 129 pte_t *ptep, unsigned long sz) in huge_ptep_get_and_clear() argument 133 entry = *ptep; in huge_ptep_get_and_clear() 134 __set_huge_pte_at(mm, addr, ptep, __pte(0)); in huge_ptep_get_and_clear() 141 unsigned long addr, pte_t *ptep) in huge_ptep_set_wrprotect() argument 145 old_pte = *ptep; in huge_ptep_set_wrprotect() [all …]
|
| /linux/tools/testing/selftests/kvm/lib/loongarch/ |
| H A D | processor.c | 37 uint64_t *ptep; in virt_set_pgtable() local 40 ptep = addr_gpa2hva(vm, table); in virt_set_pgtable() 43 WRITE_ONCE(*(ptep + i), child); in virt_set_pgtable() 67 static int virt_pte_none(uint64_t *ptep, int level) in virt_pte_none() argument 69 return *ptep == invalid_pgtable[level]; in virt_pte_none() 75 uint64_t *ptep; in virt_populate_pte() local 84 ptep = addr_gpa2hva(vm, child) + virt_pte_index(vm, gva, level) * 8; in virt_populate_pte() 85 if (virt_pte_none(ptep, level)) { in virt_populate_pte() 89 WRITE_ONCE(*ptep, child); in virt_populate_pte() 94 child = pte_addr(vm, *ptep); in virt_populate_pte() [all …]
|
| /linux/arch/powerpc/include/asm/nohash/32/ |
| H A D | hugetlb-8xx.h | 19 void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, 23 static inline pte_t huge_ptep_get(struct mm_struct *mm, unsigned long addr, pte_t *ptep) in huge_ptep_get() argument 25 if (ptep_is_8m_pmdp(mm, addr, ptep)) in huge_ptep_get() 26 ptep = pte_offset_kernel((pmd_t *)ptep, ALIGN_DOWN(addr, SZ_8M)); in huge_ptep_get() 27 return ptep_get(ptep); in huge_ptep_get() 32 pte_t *ptep, unsigned long sz) in huge_pte_clear() argument 34 pte_update(mm, addr, ptep, ~0UL, 0, 1); in huge_pte_clear() 39 unsigned long addr, pte_t *ptep) in huge_ptep_set_wrprotect() argument 44 pte_update(mm, addr, ptep, clr, set, 1); in huge_ptep_set_wrprotect()
|
| /linux/arch/xtensa/include/asm/ |
| H A D | pgalloc.h | 24 #define pmd_populate_kernel(mm, pmdp, ptep) \ argument 25 (pmd_val(*(pmdp)) = ((unsigned long)ptep)) 35 static inline void ptes_clear(pte_t *ptep) in ptes_clear() argument 40 pte_clear(NULL, 0, ptep + i); in ptes_clear() 45 pte_t *ptep; in pte_alloc_one_kernel() local 47 ptep = (pte_t *)__pte_alloc_one_kernel(mm); in pte_alloc_one_kernel() 48 if (!ptep) in pte_alloc_one_kernel() 50 ptes_clear(ptep); in pte_alloc_one_kernel() 51 return ptep; in pte_alloc_one_kernel()
|
| H A D | pgtable.h | 242 #define pte_clear(mm,addr,ptep) \ argument 243 do { update_pte(ptep, __pte(_PAGE_CA_INVALID | _PAGE_USER)); } while (0) 287 static inline void update_pte(pte_t *ptep, pte_t pteval) in update_pte() argument 289 *ptep = pteval; in update_pte() 291 __asm__ __volatile__ ("dhwb %0, 0" :: "a" (ptep)); in update_pte() 298 static inline void set_pte(pte_t *ptep, pte_t pte) in set_pte() argument 300 update_pte(ptep, pte); in set_pte() 313 pte_t *ptep) in ptep_test_and_clear_young() argument 315 pte_t pte = *ptep; in ptep_test_and_clear_young() 318 update_pte(ptep, pte_mkold(pte)); in ptep_test_and_clear_young() [all …]
|
| /linux/arch/loongarch/include/asm/ |
| H A D | hugetlb.h | 15 pte_t *ptep, unsigned long sz) in huge_pte_clear() argument 20 set_pte_at(mm, addr, ptep, clear); in huge_pte_clear() 25 unsigned long addr, pte_t *ptep, in huge_ptep_get_and_clear() argument 29 pte_t pte = ptep_get(ptep); in huge_ptep_get_and_clear() 32 set_pte_at(mm, addr, ptep, clear); in huge_ptep_get_and_clear() 38 unsigned long addr, pte_t *ptep) in huge_ptep_clear_flush() argument 43 pte = huge_ptep_get_and_clear(vma->vm_mm, addr, ptep, sz); in huge_ptep_clear_flush() 58 pte_t *ptep, pte_t pte, in huge_ptep_set_access_flags() argument 61 int changed = !pte_same(ptep_get(ptep), pte); in huge_ptep_set_access_flags() 64 set_pte_at(vma->vm_mm, addr, ptep, pte); in huge_ptep_set_access_flags()
|
| /linux/arch/powerpc/mm/ |
| H A D | pgtable.c | 192 void set_ptes(struct mm_struct *mm, unsigned long addr, pte_t *ptep, in set_ptes() argument 215 VM_WARN_ON(pte_hw_valid(*ptep) && !pte_protnone(*ptep)); in set_ptes() 218 __set_pte_at(mm, addr, ptep, pte, 0); in set_ptes() 221 ptep++; in set_ptes() 230 pte_t *ptep = pte_offset_kernel(pmdp, va); in unmap_kernel_page() local 232 pte_clear(&init_mm, va, ptep); in unmap_kernel_page() 244 pte_t *ptep, pte_t entry, int dirty) in ptep_set_access_flags() argument 248 changed = !pte_same(*(ptep), entry); in ptep_set_access_flags() 251 __ptep_set_access_flags(vma, ptep, entry, in ptep_set_access_flags() 259 unsigned long addr, pte_t *ptep, in huge_ptep_set_access_flags() argument [all …]
|
| H A D | pageattr.c | 19 static pte_basic_t pte_update_delta(pte_t *ptep, unsigned long addr, in pte_update_delta() argument 22 return pte_update(&init_mm, addr, ptep, old & ~new, new & ~old, 0); in pte_update_delta() 31 static int change_page_attr(pte_t *ptep, unsigned long addr, void *data) in change_page_attr() argument 40 pte_update_delta(ptep, addr, _PAGE_KERNEL_RW & ~_PAGE_DIRTY, _PAGE_KERNEL_RO); in change_page_attr() 44 pte_update_delta(ptep, addr, _PAGE_KERNEL_RW & ~_PAGE_DIRTY, _PAGE_KERNEL_ROX); in change_page_attr() 47 pte_update_delta(ptep, addr, _PAGE_KERNEL_RO, _PAGE_KERNEL_RW); in change_page_attr() 50 pte_update_delta(ptep, addr, _PAGE_KERNEL_ROX, _PAGE_KERNEL_RO); in change_page_attr() 53 pte_update_delta(ptep, addr, _PAGE_KERNEL_RO, _PAGE_KERNEL_ROX); in change_page_attr() 56 pte_update(&init_mm, addr, ptep, _PAGE_PRESENT, 0, 0); in change_page_attr() 59 pte_update(&init_mm, addr, ptep, 0, _PAGE_PRESENT, 0); in change_page_attr()
|
| /linux/tools/testing/selftests/kvm/lib/arm64/ |
| H A D | processor.c | 134 uint64_t *ptep; in _virt_pg_map() local 150 ptep = addr_gpa2hva(vm, vm->pgd) + pgd_index(vm, vaddr) * 8; in _virt_pg_map() 151 if (!*ptep) in _virt_pg_map() 152 *ptep = addr_pte(vm, vm_alloc_page_table(vm), in _virt_pg_map() 157 ptep = addr_gpa2hva(vm, pte_addr(vm, *ptep)) + pud_index(vm, vaddr) * 8; in _virt_pg_map() 158 if (!*ptep) in _virt_pg_map() 159 *ptep = addr_pte(vm, vm_alloc_page_table(vm), in _virt_pg_map() 163 ptep = addr_gpa2hva(vm, pte_addr(vm, *ptep)) + pmd_index(vm, vaddr) * 8; in _virt_pg_map() 164 if (!*ptep) in _virt_pg_map() 165 *ptep = addr_pte(vm, vm_alloc_page_table(vm), in _virt_pg_map() [all …]
|
| /linux/arch/powerpc/include/asm/book3s/64/ |
| H A D | hash.h | 162 pte_t *ptep, unsigned long pte, int huge); 165 static inline unsigned long hash__pte_update_one(pte_t *ptep, unsigned long clr, in hash__pte_update_one() argument 178 : "=&r" (old_be), "=&r" (tmp_be), "=m" (*ptep) in hash__pte_update_one() 179 : "r" (ptep), "r" (cpu_to_be64(clr)), "m" (*ptep), in hash__pte_update_one() 188 pte_t *ptep, unsigned long clr, in hash__pte_update() argument 194 old = hash__pte_update_one(ptep, clr, set); in hash__pte_update() 210 hash__pte_update_one(ptep + i, clr, set); in hash__pte_update() 217 hpte_need_flush(mm, addr, ptep, old, huge); in hash__pte_update() 225 static inline void hash__ptep_set_access_flags(pte_t *ptep, pte_t entry) in hash__ptep_set_access_flags() argument 241 :"=&r" (old), "=&r" (tmp), "=m" (*ptep) in hash__ptep_set_access_flags() [all …]
|
| /linux/arch/powerpc/mm/book3s64/ |
| H A D | hugetlbpage.c | 21 pte_t *ptep, unsigned long trap, unsigned long flags, in __hash_page_huge() argument 49 old_pte = pte_val(*ptep); in __hash_page_huge() 74 } while(!pte_xchg(ptep, __pte(old_pte), __pte(new_pte))); in __hash_page_huge() 85 rpte = __real_pte(__pte(old_pte), ptep, offset); in __hash_page_huge() 121 *ptep = __pte(old_pte); in __hash_page_huge() 127 new_pte |= pte_set_hidx(ptep, rpte, 0, slot, offset); in __hash_page_huge() 133 *ptep = __pte(new_pte & ~H_PAGE_BUSY); in __hash_page_huge() 139 unsigned long addr, pte_t *ptep) in huge_ptep_modify_prot_start() argument 147 pte_val = pte_update(vma->vm_mm, addr, ptep, in huge_ptep_modify_prot_start() 154 pte_t *ptep, pte_t old_pte, pte_t pte) in huge_ptep_modify_prot_commit() argument [all …]
|
| /linux/arch/mips/include/asm/ |
| H A D | hugetlb.h | 16 unsigned long addr, pte_t *ptep, in huge_ptep_get_and_clear() argument 20 pte_t pte = *ptep; in huge_ptep_get_and_clear() 23 set_pte_at(mm, addr, ptep, clear); in huge_ptep_get_and_clear() 29 unsigned long addr, pte_t *ptep) in huge_ptep_clear_flush() argument 39 pte = huge_ptep_get_and_clear(vma->vm_mm, addr, ptep, sz); in huge_ptep_clear_flush() 54 pte_t *ptep, pte_t pte, in huge_ptep_set_access_flags() argument 57 int changed = !pte_same(*ptep, pte); in huge_ptep_set_access_flags() 60 set_pte_at(vma->vm_mm, addr, ptep, pte); in huge_ptep_set_access_flags()
|
| /linux/arch/powerpc/kvm/ |
| H A D | book3s_64_mmu_radix.c | 374 static unsigned long kvmppc_radix_update_pte(struct kvm *kvm, pte_t *ptep, in kvmppc_radix_update_pte() argument 378 return __radix_pte_update(ptep, clr, set); in kvmppc_radix_update_pte() 382 pte_t *ptep, pte_t pte) in kvmppc_radix_set_pte_at() argument 384 radix__set_pte_at(kvm->mm, addr, ptep, pte, 0); in kvmppc_radix_set_pte_at() 401 static void kvmppc_pte_free(pte_t *ptep) in kvmppc_pte_free() argument 403 kmem_cache_free(kvm_pte_cache, ptep); in kvmppc_pte_free() 624 pte_t *ptep, *new_ptep = NULL; in kvmppc_create_pte() local 763 ptep = pte_offset_kernel(pmd, gpa); in kvmppc_create_pte() 764 if (pte_present(*ptep)) { in kvmppc_create_pte() 766 if (pte_raw(*ptep) == pte_raw(pte)) { in kvmppc_create_pte() [all …]
|