Lines Matching full:mapped

15  * Main data structure for tracking mapped user pages of bitmap data.
89 * which u64 word of the bitmap is mapped, up to @mapped_total_index.
93 * The IOVA bitmap is usually located on what tracks DMA mapped ranges or
98 /* IOVA range representing the currently mapped bitmap data */
99 struct iova_bitmap_map mapped; member
104 /* u64 index that @mapped points to */
121 * Relative IOVA means relative to the bitmap::mapped base IOVA
122 * (stored in mapped::iova). All computations in this file are done using
123 * relative IOVAs and thus avoid an extra subtraction against mapped::iova.
129 unsigned long pgsize = 1 << bitmap->mapped.pgshift; in iova_bitmap_offset_to_index()
140 unsigned long pgshift = bitmap->mapped.pgshift; in iova_bitmap_index_to_offset()
146 * Returns the base IOVA of the mapped range.
162 struct iova_bitmap_map *mapped = &bitmap->mapped; in iova_bitmap_get() local
168 * @mapped_base_index is the index of the currently mapped u64 words in iova_bitmap_get()
170 * mapped. The range @mapped_base_index .. @mapped_total_index-1 is in iova_bitmap_get()
171 * mapped but capped at a maximum number of pages. in iova_bitmap_get()
190 FOLL_WRITE, mapped->pages); in iova_bitmap_get()
194 mapped->npages = (unsigned long)ret; in iova_bitmap_get()
196 mapped->iova = iova_bitmap_mapped_iova(bitmap); in iova_bitmap_get()
203 mapped->pgoff = offset_in_page(addr); in iova_bitmap_get()
214 struct iova_bitmap_map *mapped = &bitmap->mapped; in iova_bitmap_put() local
216 if (mapped->npages) { in iova_bitmap_put()
217 unpin_user_pages(mapped->pages, mapped->npages); in iova_bitmap_put()
218 mapped->npages = 0; in iova_bitmap_put()
239 struct iova_bitmap_map *mapped; in iova_bitmap_alloc() local
247 mapped = &bitmap->mapped; in iova_bitmap_alloc()
248 mapped->pgshift = __ffs(page_size); in iova_bitmap_alloc()
254 mapped->iova = iova; in iova_bitmap_alloc()
255 mapped->pages = (struct page **)__get_free_page(GFP_KERNEL); in iova_bitmap_alloc()
256 if (!mapped->pages) { in iova_bitmap_alloc()
280 struct iova_bitmap_map *mapped = &bitmap->mapped; in iova_bitmap_free() local
284 if (mapped->pages) { in iova_bitmap_free()
285 free_page((unsigned long)mapped->pages); in iova_bitmap_free()
286 mapped->pages = NULL; in iova_bitmap_free()
302 (bitmap->mapped.npages << PAGE_SHIFT) / sizeof(*bitmap->bitmap)); in iova_bitmap_mapped_remaining()
308 * Returns the length of the mapped IOVA range.
367 * mapped bitmap user pages into IOVA ranges to process.
402 struct iova_bitmap_map *mapped = &bitmap->mapped; in iova_bitmap_set() local
403 unsigned long offset = (iova - mapped->iova) >> mapped->pgshift; in iova_bitmap_set()
404 unsigned long nbits = max_t(unsigned long, 1, length >> mapped->pgshift); in iova_bitmap_set()
406 unsigned long page_offset = mapped->pgoff; in iova_bitmap_set()
414 kaddr = kmap_local_page(mapped->pages[page_idx]); in iova_bitmap_set()