• Home
  • Raw
  • Download

Lines Matching +full:carry +full:- +full:less

1 // SPDX-License-Identifier: GPL-2.0
12 * get_vaddr_frames() - map virtual addresses to pfns
27 * The function returns number of pages mapped which may be less than
33 * to be able to do that, but that could (racily) return non-refcounted
41 struct mm_struct *mm = current->mm; in get_vaddr_frames()
49 if (WARN_ON_ONCE(nr_frames > vec->nr_allocated)) in get_vaddr_frames()
50 nr_frames = vec->nr_allocated; in get_vaddr_frames()
58 ret = -EFAULT; in get_vaddr_frames()
67 * get_user_pages_longterm() and disallow it for filesystem-dax in get_vaddr_frames()
71 ret = -EOPNOTSUPP; in get_vaddr_frames()
75 if (!(vma->vm_flags & (VM_IO | VM_PFNMAP))) { in get_vaddr_frames()
76 vec->got_ref = true; in get_vaddr_frames()
77 vec->is_pfns = false; in get_vaddr_frames()
79 gup_flags, (struct page **)(vec->ptrs), &locked); in get_vaddr_frames()
84 vec->nr_frames = 0; in get_vaddr_frames()
90 ret = -EFAULT; in get_vaddr_frames()
92 vec->nr_frames = ret; in get_vaddr_frames()
98 * put_vaddr_frames() - drop references to pages if get_vaddr_frames() acquired
110 if (!vec->got_ref) in put_vaddr_frames()
121 unpin_user_pages(pages, vec->nr_frames); in put_vaddr_frames()
122 vec->got_ref = false; in put_vaddr_frames()
124 vec->nr_frames = 0; in put_vaddr_frames()
129 * frame_vector_to_pages - convert frame vector to contain page pointers
142 if (!vec->is_pfns) in frame_vector_to_pages()
145 for (i = 0; i < vec->nr_frames; i++) in frame_vector_to_pages()
147 return -EINVAL; in frame_vector_to_pages()
149 for (i = 0; i < vec->nr_frames; i++) in frame_vector_to_pages()
151 vec->is_pfns = false; in frame_vector_to_pages()
157 * frame_vector_to_pfns - convert frame vector to contain pfns
168 if (vec->is_pfns) in frame_vector_to_pfns()
170 pages = (struct page **)(vec->ptrs); in frame_vector_to_pfns()
172 for (i = 0; i < vec->nr_frames; i++) in frame_vector_to_pfns()
174 vec->is_pfns = true; in frame_vector_to_pfns()
179 * frame_vector_create() - allocate & initialize structure for pinned pfns
205 vec->nr_allocated = nr_frames; in frame_vector_create()
206 vec->nr_frames = 0; in frame_vector_create()
212 * frame_vector_destroy() - free memory allocated to carry frame vector
215 * Free structure allocated by frame_vector_create() to carry frames.
220 VM_BUG_ON(vec->nr_frames > 0); in frame_vector_destroy()