Lines Matching refs:mapping
7 #include <linux/dma-mapping.h>
219 struct etnaviv_vram_mapping *mapping;
221 list_for_each_entry(mapping, &obj->vram_list, obj_node) {
222 if (mapping->context == context)
223 return mapping;
229 void etnaviv_gem_mapping_unreference(struct etnaviv_vram_mapping *mapping)
231 struct etnaviv_gem_object *etnaviv_obj = mapping->object;
234 WARN_ON(mapping->use == 0);
235 mapping->use -= 1;
246 struct etnaviv_vram_mapping *mapping;
251 mapping = etnaviv_gem_get_vram_mapping(etnaviv_obj, mmu_context);
252 if (mapping) {
257 * the MMU owns this mapping to close this race.
259 if (mapping->use == 0) {
261 if (mapping->context == mmu_context)
262 if (va && mapping->iova != va) {
263 etnaviv_iommu_reap_mapping(mapping);
264 mapping = NULL;
266 mapping->use += 1;
269 mapping = NULL;
271 if (mapping)
274 mapping->use += 1;
286 * See if we have a reaped vram mapping we can re-use before
287 * allocating a fresh mapping.
289 mapping = etnaviv_gem_get_vram_mapping(etnaviv_obj, NULL);
290 if (!mapping) {
291 mapping = kzalloc(sizeof(*mapping), GFP_KERNEL);
292 if (!mapping) {
297 INIT_LIST_HEAD(&mapping->scan_node);
298 mapping->object = etnaviv_obj;
300 list_del(&mapping->obj_node);
303 mapping->use = 1;
307 mapping, va);
309 kfree(mapping);
311 list_add_tail(&mapping->obj_node, &etnaviv_obj->vram_list);
321 return mapping;
491 struct etnaviv_vram_mapping *mapping, *tmp;
500 list_for_each_entry_safe(mapping, tmp, &etnaviv_obj->vram_list,
502 struct etnaviv_iommu_context *context = mapping->context;
504 WARN_ON(mapping->use);
507 etnaviv_iommu_unmap_gem(context, mapping);
509 list_del(&mapping->obj_node);
510 kfree(mapping);