Lines Matching full:mapped

16  * Main data structure for tracking mapped user pages of bitmap data.
90 * which u64 word of the bitmap is mapped, up to @mapped_total_index.
94 * The IOVA bitmap is usually located on what tracks DMA mapped ranges or
99 /* IOVA range representing the currently mapped bitmap data */
100 struct iova_bitmap_map mapped; member
105 /* u64 index that @mapped points to */
125 * Relative IOVA means relative to the bitmap::mapped base IOVA
126 * (stored in mapped::iova). All computations in this file are done using
127 * relative IOVAs and thus avoid an extra subtraction against mapped::iova.
133 unsigned long pgsize = 1 << bitmap->mapped.pgshift; in iova_bitmap_offset_to_index()
144 unsigned long pgshift = bitmap->mapped.pgshift; in iova_bitmap_index_to_offset()
150 * Returns the base IOVA of the mapped range.
166 struct iova_bitmap_map *mapped = &bitmap->mapped; in iova_bitmap_get() local
172 * @mapped_base_index is the index of the currently mapped u64 words in iova_bitmap_get()
174 * mapped. The range @mapped_base_index .. @mapped_total_index-1 is in iova_bitmap_get()
175 * mapped but capped at a maximum number of pages. in iova_bitmap_get()
195 FOLL_WRITE, mapped->pages); in iova_bitmap_get()
199 mapped->npages = (unsigned long)ret; in iova_bitmap_get()
201 mapped->iova = iova_bitmap_mapped_iova(bitmap); in iova_bitmap_get()
208 mapped->pgoff = offset_in_page(addr); in iova_bitmap_get()
219 struct iova_bitmap_map *mapped = &bitmap->mapped; in iova_bitmap_put() local
221 if (mapped->npages) { in iova_bitmap_put()
222 unpin_user_pages(mapped->pages, mapped->npages); in iova_bitmap_put()
223 mapped->npages = 0; in iova_bitmap_put()
244 struct iova_bitmap_map *mapped; in iova_bitmap_alloc() local
252 mapped = &bitmap->mapped; in iova_bitmap_alloc()
253 mapped->pgshift = __ffs(page_size); in iova_bitmap_alloc()
259 mapped->iova = iova; in iova_bitmap_alloc()
260 mapped->pages = (struct page **)__get_free_page(GFP_KERNEL); in iova_bitmap_alloc()
261 if (!mapped->pages) { in iova_bitmap_alloc()
286 struct iova_bitmap_map *mapped = &bitmap->mapped; in iova_bitmap_free() local
290 if (mapped->pages) { in iova_bitmap_free()
291 free_page((unsigned long)mapped->pages); in iova_bitmap_free()
292 mapped->pages = NULL; in iova_bitmap_free()
307 bytes = (bitmap->mapped.npages << PAGE_SHIFT) - bitmap->mapped.pgoff; in iova_bitmap_mapped_remaining()
317 * Returns the length of the mapped IOVA range.
411 * mapped bitmap user pages into IOVA ranges to process.
446 struct iova_bitmap_map *mapped = &bitmap->mapped; in iova_bitmap_set() local
447 unsigned long cur_bit = ((iova - mapped->iova) >> in iova_bitmap_set()
448 mapped->pgshift) + mapped->pgoff * BITS_PER_BYTE; in iova_bitmap_set()
449 unsigned long last_bit = (((iova + length - 1) - mapped->iova) >> in iova_bitmap_set()
450 mapped->pgshift) + mapped->pgoff * BITS_PER_BYTE; in iova_bitmap_set()
451 unsigned long last_page_idx = mapped->npages - 1; in iova_bitmap_set()
463 kaddr = kmap_local_page(mapped->pages[page_idx]); in iova_bitmap_set()
471 ((last_bit - cur_bit + 1) << bitmap->mapped.pgshift); in iova_bitmap_set()