Lines Matching full:pages
18 static void *io_mem_alloc_compound(struct page **pages, int nr_pages, in io_mem_alloc_compound() argument
35 pages[i] = page + i; in io_mem_alloc_compound()
43 struct page **pages; in io_pin_pages() local
59 pages = kvmalloc_array(nr_pages, sizeof(struct page *), GFP_KERNEL); in io_pin_pages()
60 if (!pages) in io_pin_pages()
64 pages); in io_pin_pages()
65 /* success, mapped all pages */ in io_pin_pages()
68 return pages; in io_pin_pages()
73 /* if we did partial map, release any pages we did get */ in io_pin_pages()
75 unpin_user_pages(pages, ret); in io_pin_pages()
78 kvfree(pages); in io_pin_pages()
93 if (mr->pages) { in io_free_region()
100 unpin_user_pages(mr->pages, nr_refs); in io_free_region()
102 release_pages(mr->pages, nr_refs); in io_free_region()
104 kvfree(mr->pages); in io_free_region()
119 if (io_check_coalesce_buffer(mr->pages, mr->nr_pages, &ifd)) { in io_region_init_ptr()
120 if (ifd.nr_folios == 1 && !PageHighMem(mr->pages[0])) { in io_region_init_ptr()
121 mr->ptr = page_address(mr->pages[0]); in io_region_init_ptr()
125 ptr = vmap(mr->pages, mr->nr_pages, VM_MAP, PAGE_KERNEL); in io_region_init_ptr()
139 struct page **pages; in io_region_pin_pages() local
142 pages = io_pin_pages(reg->user_addr, size, &nr_pages); in io_region_pin_pages()
143 if (IS_ERR(pages)) in io_region_pin_pages()
144 return PTR_ERR(pages); in io_region_pin_pages()
148 mr->pages = pages; in io_region_pin_pages()
161 struct page **pages; in io_region_allocate_pages() local
164 pages = kvmalloc_array(mr->nr_pages, sizeof(*pages), gfp); in io_region_allocate_pages()
165 if (!pages) in io_region_allocate_pages()
168 p = io_mem_alloc_compound(pages, mr->nr_pages, size, gfp); in io_region_allocate_pages()
175 mr->nr_pages, pages); in io_region_allocate_pages()
178 release_pages(pages, nr_allocated); in io_region_allocate_pages()
179 kvfree(pages); in io_region_allocate_pages()
184 mr->pages = pages; in io_region_allocate_pages()
195 if (WARN_ON_ONCE(mr->pages || mr->ptr || mr->nr_pages)) in io_create_region()
318 return vm_insert_pages(vma, vma->vm_start, mr->pages, &nr_pages); in io_region_mmap()