Lines Matching refs:addr
103 static int find_num_contig(struct mm_struct *mm, unsigned long addr,
106 pgd_t *pgdp = pgd_offset(mm, addr);
112 p4dp = p4d_offset(pgdp, addr);
113 pudp = pud_offset(p4dp, addr);
114 pmdp = pmd_offset(pudp, addr);
182 unsigned long addr,
190 for (i = 0; i < ncontig; i++, addr += pgsize, ptep++) {
191 pte_t pte = ptep_get_and_clear(mm, addr, ptep);
208 unsigned long addr,
213 pte_t orig_pte = get_clear_contig(mm, addr, ptep, pgsize, ncontig);
216 flush_tlb_range(&vma, addr, addr + (pgsize * ncontig));
230 unsigned long addr,
236 unsigned long i, saddr = addr;
238 for (i = 0; i < ncontig; i++, addr += pgsize, ptep++)
239 ptep_clear(mm, addr, ptep);
241 flush_tlb_range(&vma, saddr, addr);
244 void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
256 for (i = 0; i < ncontig; i++, ptep++, addr += pgsize)
257 set_pte_at(mm, addr, ptep, pte);
262 set_pte_at(mm, addr, ptep, pte);
270 clear_flush(mm, addr, ptep, pgsize, ncontig);
272 for (i = 0; i < ncontig; i++, ptep++, addr += pgsize, pfn += dpfn)
273 set_pte_at(mm, addr, ptep, pfn_pte(pfn, hugeprot));
277 unsigned long addr, unsigned long sz)
285 pgdp = pgd_offset(mm, addr);
286 p4dp = p4d_offset(pgdp, addr);
287 pudp = pud_alloc(mm, p4dp, addr);
294 pmdp = pmd_alloc(mm, pudp, addr);
298 WARN_ON(addr & (sz - 1));
299 ptep = pte_alloc_huge(mm, pmdp, addr);
301 if (want_pmd_share(vma, addr) && pud_none(READ_ONCE(*pudp)))
302 ptep = huge_pmd_share(mm, vma, addr, pudp);
304 ptep = (pte_t *)pmd_alloc(mm, pudp, addr);
306 pmdp = pmd_alloc(mm, pudp, addr);
307 WARN_ON(addr & (sz - 1));
315 unsigned long addr, unsigned long sz)
322 pgdp = pgd_offset(mm, addr);
326 p4dp = p4d_offset(pgdp, addr);
330 pudp = pud_offset(p4dp, addr);
340 addr &= CONT_PMD_MASK;
342 pmdp = pmd_offset(pudp, addr);
351 return pte_offset_huge(pmdp, (addr & CONT_PTE_MASK));
394 void huge_pte_clear(struct mm_struct *mm, unsigned long addr,
402 for (i = 0; i < ncontig; i++, addr += pgsize, ptep++)
403 pte_clear(mm, addr, ptep);
407 unsigned long addr, pte_t *ptep)
414 return ptep_get_and_clear(mm, addr, ptep);
416 ncontig = find_num_contig(mm, addr, ptep, &pgsize);
418 return get_clear_contig(mm, addr, ptep, pgsize, ncontig);
451 unsigned long addr, pte_t *ptep,
462 return ptep_set_access_flags(vma, addr, ptep, pte, dirty);
464 ncontig = find_num_contig(mm, addr, ptep, &pgsize);
470 orig_pte = get_clear_contig_flush(mm, addr, ptep, pgsize, ncontig);
480 for (i = 0; i < ncontig; i++, ptep++, addr += pgsize, pfn += dpfn)
481 set_pte_at(mm, addr, ptep, pfn_pte(pfn, hugeprot));
487 unsigned long addr, pte_t *ptep)
496 ptep_set_wrprotect(mm, addr, ptep);
500 ncontig = find_num_contig(mm, addr, ptep, &pgsize);
503 pte = get_clear_contig_flush(mm, addr, ptep, pgsize, ncontig);
509 for (i = 0; i < ncontig; i++, ptep++, addr += pgsize, pfn += dpfn)
510 set_pte_at(mm, addr, ptep, pfn_pte(pfn, hugeprot));
514 unsigned long addr, pte_t *ptep)
521 return ptep_clear_flush(vma, addr, ptep);
523 ncontig = find_num_contig(mm, addr, ptep, &pgsize);
524 return get_clear_contig_flush(mm, addr, ptep, pgsize, ncontig);
545 pte_t huge_ptep_modify_prot_start(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep)
555 return huge_ptep_clear_flush(vma, addr, ptep);
557 return huge_ptep_get_and_clear(vma->vm_mm, addr, ptep);
560 void huge_ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep,
565 set_huge_pte_at(vma->vm_mm, addr, ptep, pte, psize);