Lines Matching defs:pages
18 static bool io_mem_alloc_compound(struct page **pages, int nr_pages,
35 pages[i] = page + i;
43 struct page **pages;
59 pages = kvmalloc_objs(struct page *, nr_pages, GFP_KERNEL_ACCOUNT);
60 if (!pages)
64 pages);
65 /* success, mapped all pages */
68 return pages;
73 /* if we did partial map, release any pages we did get */
75 unpin_user_pages(pages, ret);
78 kvfree(pages);
93 if (mr->pages) {
100 unpin_user_pages(mr->pages, nr_refs);
102 release_pages(mr->pages, nr_refs);
104 kvfree(mr->pages);
119 if (io_check_coalesce_buffer(mr->pages, mr->nr_pages, &ifd)) {
120 if (ifd.nr_folios == 1 && !PageHighMem(mr->pages[0])) {
121 mr->ptr = page_address(mr->pages[0]);
125 ptr = vmap(mr->pages, mr->nr_pages, VM_MAP, PAGE_KERNEL);
138 struct page **pages;
141 pages = io_pin_pages(reg->user_addr, size, &nr_pages);
142 if (IS_ERR(pages))
143 return PTR_ERR(pages);
147 mr->pages = pages;
159 struct page **pages;
161 pages = kvmalloc_objs(*pages, mr->nr_pages, gfp);
162 if (!pages)
165 if (io_mem_alloc_compound(pages, mr->nr_pages, size, gfp)) {
171 mr->nr_pages, pages);
174 release_pages(pages, nr_allocated);
175 kvfree(pages);
180 mr->pages = pages;
191 if (WARN_ON_ONCE(mr->pages || mr->ptr || mr->nr_pages))
292 return vm_insert_pages(vma, vma->vm_start, mr->pages, &nr_pages);
370 * Drop the pages that were initially referenced and added in
407 * Pin the pages so io_free_region()'s release_pages() does not
412 get_page(region->pages[i]);