Lines Matching refs:dst_mm
22 struct vm_area_struct *find_dst_vma(struct mm_struct *dst_mm, in find_dst_vma() argument
32 dst_vma = find_vma(dst_mm, dst_start); in find_dst_vma()
57 int mfill_atomic_install_pte(struct mm_struct *dst_mm, pmd_t *dst_pmd, in mfill_atomic_install_pte() argument
83 dst_pte = pte_offset_map_lock(dst_mm, dst_pmd, dst_addr, &ptl); in mfill_atomic_install_pte()
108 inc_mm_counter(dst_mm, mm_counter(page)); in mfill_atomic_install_pte()
113 set_pte_at(dst_mm, dst_addr, dst_pte, _dst_pte); in mfill_atomic_install_pte()
123 static int mcopy_atomic_pte(struct mm_struct *dst_mm, in mcopy_atomic_pte() argument
167 if (mem_cgroup_charge(page, dst_mm, GFP_KERNEL)) in mcopy_atomic_pte()
170 ret = mfill_atomic_install_pte(dst_mm, dst_pmd, dst_vma, dst_addr, in mcopy_atomic_pte()
181 static int mfill_zeropage_pte(struct mm_struct *dst_mm, in mfill_zeropage_pte() argument
194 dst_pte = pte_offset_map_lock(dst_mm, dst_pmd, dst_addr, &ptl); in mfill_zeropage_pte()
207 set_pte_at(dst_mm, dst_addr, dst_pte, _dst_pte); in mfill_zeropage_pte()
217 static int mcontinue_atomic_pte(struct mm_struct *dst_mm, in mcontinue_atomic_pte() argument
236 ret = mfill_atomic_install_pte(dst_mm, dst_pmd, dst_vma, dst_addr, in mcontinue_atomic_pte()
277 static __always_inline ssize_t __mcopy_atomic_hugetlb(struct mm_struct *dst_mm, in __mcopy_atomic_hugetlb() argument
302 mmap_read_unlock(dst_mm); in __mcopy_atomic_hugetlb()
326 dst_vma = find_dst_vma(dst_mm, dst_start, len); in __mcopy_atomic_hugetlb()
362 dst_pte = huge_pte_alloc(dst_mm, dst_vma, dst_addr, vma_hpagesize); in __mcopy_atomic_hugetlb()
377 err = hugetlb_mcopy_atomic_pte(dst_mm, dst_pte, dst_vma, in __mcopy_atomic_hugetlb()
386 mmap_read_unlock(dst_mm); in __mcopy_atomic_hugetlb()
397 mmap_read_lock(dst_mm); in __mcopy_atomic_hugetlb()
417 mmap_read_unlock(dst_mm); in __mcopy_atomic_hugetlb()
428 extern ssize_t __mcopy_atomic_hugetlb(struct mm_struct *dst_mm,
436 static __always_inline ssize_t mfill_atomic_pte(struct mm_struct *dst_mm, in mfill_atomic_pte() argument
448 return mcontinue_atomic_pte(dst_mm, dst_pmd, dst_vma, dst_addr, in mfill_atomic_pte()
464 err = mcopy_atomic_pte(dst_mm, dst_pmd, dst_vma, in mfill_atomic_pte()
468 err = mfill_zeropage_pte(dst_mm, dst_pmd, in mfill_atomic_pte()
472 err = shmem_mfill_atomic_pte(dst_mm, dst_pmd, dst_vma, in mfill_atomic_pte()
481 static __always_inline ssize_t __mcopy_atomic(struct mm_struct *dst_mm, in __mcopy_atomic() argument
512 mmap_read_lock(dst_mm); in __mcopy_atomic()
528 dst_vma = find_dst_vma(dst_mm, dst_start, len); in __mcopy_atomic()
553 return __mcopy_atomic_hugetlb(dst_mm, dst_vma, dst_start, in __mcopy_atomic()
576 dst_pmd = mm_alloc_pmd(dst_mm, dst_addr); in __mcopy_atomic()
592 unlikely(__pte_alloc(dst_mm, dst_pmd))) { in __mcopy_atomic()
605 err = mfill_atomic_pte(dst_mm, dst_pmd, dst_vma, dst_addr, in __mcopy_atomic()
612 mmap_read_unlock(dst_mm); in __mcopy_atomic()
641 mmap_read_unlock(dst_mm); in __mcopy_atomic()
651 ssize_t mcopy_atomic(struct mm_struct *dst_mm, unsigned long dst_start, in mcopy_atomic() argument
655 return __mcopy_atomic(dst_mm, dst_start, src_start, len, in mcopy_atomic()
659 ssize_t mfill_zeropage(struct mm_struct *dst_mm, unsigned long start, in mfill_zeropage() argument
662 return __mcopy_atomic(dst_mm, start, 0, len, MCOPY_ATOMIC_ZEROPAGE, in mfill_zeropage()
666 ssize_t mcopy_continue(struct mm_struct *dst_mm, unsigned long start, in mcopy_continue() argument
669 return __mcopy_atomic(dst_mm, start, 0, len, MCOPY_ATOMIC_CONTINUE, in mcopy_continue()
673 int mwriteprotect_range(struct mm_struct *dst_mm, unsigned long start, in mwriteprotect_range() argument
690 mmap_read_lock(dst_mm); in mwriteprotect_range()
702 dst_vma = find_dst_vma(dst_mm, start, len); in mwriteprotect_range()
724 mmap_read_unlock(dst_mm); in mwriteprotect_range()