Lines Matching refs:mapping
228 struct etnaviv_vram_mapping *mapping; in etnaviv_gem_get_vram_mapping() local
230 list_for_each_entry(mapping, &obj->vram_list, obj_node) { in etnaviv_gem_get_vram_mapping()
231 if (mapping->context == context) in etnaviv_gem_get_vram_mapping()
232 return mapping; in etnaviv_gem_get_vram_mapping()
238 void etnaviv_gem_mapping_unreference(struct etnaviv_vram_mapping *mapping) in etnaviv_gem_mapping_unreference() argument
240 struct etnaviv_gem_object *etnaviv_obj = mapping->object; in etnaviv_gem_mapping_unreference()
243 WARN_ON(mapping->use == 0); in etnaviv_gem_mapping_unreference()
244 mapping->use -= 1; in etnaviv_gem_mapping_unreference()
255 struct etnaviv_vram_mapping *mapping; in etnaviv_gem_mapping_get() local
260 mapping = etnaviv_gem_get_vram_mapping(etnaviv_obj, mmu_context); in etnaviv_gem_mapping_get()
261 if (mapping) { in etnaviv_gem_mapping_get()
268 if (mapping->use == 0) { in etnaviv_gem_mapping_get()
270 if (mapping->context == mmu_context) in etnaviv_gem_mapping_get()
271 mapping->use += 1; in etnaviv_gem_mapping_get()
273 mapping = NULL; in etnaviv_gem_mapping_get()
275 if (mapping) in etnaviv_gem_mapping_get()
278 mapping->use += 1; in etnaviv_gem_mapping_get()
293 mapping = etnaviv_gem_get_vram_mapping(etnaviv_obj, NULL); in etnaviv_gem_mapping_get()
294 if (!mapping) { in etnaviv_gem_mapping_get()
295 mapping = kzalloc(sizeof(*mapping), GFP_KERNEL); in etnaviv_gem_mapping_get()
296 if (!mapping) { in etnaviv_gem_mapping_get()
301 INIT_LIST_HEAD(&mapping->scan_node); in etnaviv_gem_mapping_get()
302 mapping->object = etnaviv_obj; in etnaviv_gem_mapping_get()
304 list_del(&mapping->obj_node); in etnaviv_gem_mapping_get()
308 mapping->context = mmu_context; in etnaviv_gem_mapping_get()
309 mapping->use = 1; in etnaviv_gem_mapping_get()
313 mapping, va); in etnaviv_gem_mapping_get()
316 kfree(mapping); in etnaviv_gem_mapping_get()
318 list_add_tail(&mapping->obj_node, &etnaviv_obj->vram_list); in etnaviv_gem_mapping_get()
329 return mapping; in etnaviv_gem_mapping_get()
522 struct etnaviv_vram_mapping *mapping, *tmp; in etnaviv_gem_free_object() local
531 list_for_each_entry_safe(mapping, tmp, &etnaviv_obj->vram_list, in etnaviv_gem_free_object()
533 struct etnaviv_iommu_context *context = mapping->context; in etnaviv_gem_free_object()
535 WARN_ON(mapping->use); in etnaviv_gem_free_object()
538 etnaviv_iommu_unmap_gem(context, mapping); in etnaviv_gem_free_object()
542 list_del(&mapping->obj_node); in etnaviv_gem_free_object()
543 kfree(mapping); in etnaviv_gem_free_object()