Lines Matching full:mapping
7 #include <linux/dma-mapping.h>
229 struct etnaviv_vram_mapping *mapping; in etnaviv_gem_get_vram_mapping() local
231 list_for_each_entry(mapping, &obj->vram_list, obj_node) { in etnaviv_gem_get_vram_mapping()
232 if (mapping->context == context) in etnaviv_gem_get_vram_mapping()
233 return mapping; in etnaviv_gem_get_vram_mapping()
239 void etnaviv_gem_mapping_unreference(struct etnaviv_vram_mapping *mapping) in etnaviv_gem_mapping_unreference() argument
241 struct etnaviv_gem_object *etnaviv_obj = mapping->object; in etnaviv_gem_mapping_unreference()
244 WARN_ON(mapping->use == 0); in etnaviv_gem_mapping_unreference()
245 mapping->use -= 1; in etnaviv_gem_mapping_unreference()
256 struct etnaviv_vram_mapping *mapping; in etnaviv_gem_mapping_get() local
261 mapping = etnaviv_gem_get_vram_mapping(etnaviv_obj, mmu_context); in etnaviv_gem_mapping_get()
262 if (mapping) { in etnaviv_gem_mapping_get()
267 * the MMU owns this mapping to close this race. in etnaviv_gem_mapping_get()
269 if (mapping->use == 0) { in etnaviv_gem_mapping_get()
271 if (mapping->context == mmu_context) in etnaviv_gem_mapping_get()
272 mapping->use += 1; in etnaviv_gem_mapping_get()
274 mapping = NULL; in etnaviv_gem_mapping_get()
276 if (mapping) in etnaviv_gem_mapping_get()
279 mapping->use += 1; in etnaviv_gem_mapping_get()
291 * See if we have a reaped vram mapping we can re-use before in etnaviv_gem_mapping_get()
292 * allocating a fresh mapping. in etnaviv_gem_mapping_get()
294 mapping = etnaviv_gem_get_vram_mapping(etnaviv_obj, NULL); in etnaviv_gem_mapping_get()
295 if (!mapping) { in etnaviv_gem_mapping_get()
296 mapping = kzalloc(sizeof(*mapping), GFP_KERNEL); in etnaviv_gem_mapping_get()
297 if (!mapping) { in etnaviv_gem_mapping_get()
302 INIT_LIST_HEAD(&mapping->scan_node); in etnaviv_gem_mapping_get()
303 mapping->object = etnaviv_obj; in etnaviv_gem_mapping_get()
305 list_del(&mapping->obj_node); in etnaviv_gem_mapping_get()
309 mapping->context = mmu_context; in etnaviv_gem_mapping_get()
310 mapping->use = 1; in etnaviv_gem_mapping_get()
314 mapping, va); in etnaviv_gem_mapping_get()
317 kfree(mapping); in etnaviv_gem_mapping_get()
319 list_add_tail(&mapping->obj_node, &etnaviv_obj->vram_list); in etnaviv_gem_mapping_get()
330 return mapping; in etnaviv_gem_mapping_get()
521 struct etnaviv_vram_mapping *mapping, *tmp; in etnaviv_gem_free_object() local
530 list_for_each_entry_safe(mapping, tmp, &etnaviv_obj->vram_list, in etnaviv_gem_free_object()
532 struct etnaviv_iommu_context *context = mapping->context; in etnaviv_gem_free_object()
534 WARN_ON(mapping->use); in etnaviv_gem_free_object()
537 etnaviv_iommu_unmap_gem(context, mapping); in etnaviv_gem_free_object()
541 list_del(&mapping->obj_node); in etnaviv_gem_free_object()
542 kfree(mapping); in etnaviv_gem_free_object()