Lines Matching refs:eb

297 static inline bool eb_use_cmdparser(const struct i915_execbuffer *eb)  in eb_use_cmdparser()  argument
299 return intel_engine_requires_cmd_parser(eb->engine) || in eb_use_cmdparser()
300 (intel_engine_using_cmd_parser(eb->engine) && in eb_use_cmdparser()
301 eb->args->batch_len); in eb_use_cmdparser()
304 static int eb_create(struct i915_execbuffer *eb) in eb_create() argument
306 if (!(eb->args->flags & I915_EXEC_HANDLE_LUT)) { in eb_create()
307 unsigned int size = 1 + ilog2(eb->buffer_count); in eb_create()
333 eb->buckets = kzalloc(sizeof(struct hlist_head) << size, in eb_create()
335 if (eb->buckets) in eb_create()
342 eb->lut_size = size; in eb_create()
344 eb->lut_size = -eb->buffer_count; in eb_create()
381 eb_pin_vma(struct i915_execbuffer *eb, in eb_pin_vma() argument
435 eb_validate_vma(struct i915_execbuffer *eb, in eb_validate_vma() argument
439 if (unlikely(entry->flags & eb->invalid_flags)) in eb_validate_vma()
463 entry->handle, (int)(entry - eb->exec)); in eb_validate_vma()
474 if (!eb->reloc_cache.has_fence) { in eb_validate_vma()
478 eb->reloc_cache.needs_unfenced) && in eb_validate_vma()
484 entry->flags |= eb->context_flags; in eb_validate_vma()
490 eb_add_vma(struct i915_execbuffer *eb, in eb_add_vma() argument
494 struct drm_i915_gem_exec_object2 *entry = &eb->exec[i]; in eb_add_vma()
499 if (!(eb->args->flags & __EXEC_VALIDATED)) { in eb_add_vma()
500 err = eb_validate_vma(eb, entry, vma); in eb_add_vma()
505 if (eb->lut_size > 0) { in eb_add_vma()
508 &eb->buckets[hash_32(entry->handle, in eb_add_vma()
509 eb->lut_size)]); in eb_add_vma()
513 list_add_tail(&vma->reloc_link, &eb->relocs); in eb_add_vma()
521 eb->vma[i] = vma; in eb_add_vma()
522 eb->flags[i] = entry->flags; in eb_add_vma()
523 vma->exec_flags = &eb->flags[i]; in eb_add_vma()
536 !(eb->flags[i] & EXEC_OBJECT_PINNED)) in eb_add_vma()
537 eb->flags[i] |= __EXEC_OBJECT_NEEDS_BIAS; in eb_add_vma()
538 if (eb->reloc_cache.has_fence) in eb_add_vma()
539 eb->flags[i] |= EXEC_OBJECT_NEEDS_FENCE; in eb_add_vma()
541 eb->batch = vma; in eb_add_vma()
545 if (eb_pin_vma(eb, entry, vma)) { in eb_add_vma()
548 eb->args->flags |= __EXEC_HAS_RELOC; in eb_add_vma()
553 list_add_tail(&vma->exec_link, &eb->unbound); in eb_add_vma()
579 static int eb_reserve_vma(const struct i915_execbuffer *eb, in eb_reserve_vma() argument
582 struct drm_i915_gem_exec_object2 *entry = exec_entry(eb, vma); in eb_reserve_vma()
616 eb->args->flags |= __EXEC_HAS_RELOC; in eb_reserve_vma()
636 static int eb_reserve(struct i915_execbuffer *eb) in eb_reserve() argument
638 const unsigned int count = eb->buffer_count; in eb_reserve()
661 list_for_each_entry(vma, &eb->unbound, exec_link) { in eb_reserve()
662 err = eb_reserve_vma(eb, vma); in eb_reserve()
670 INIT_LIST_HEAD(&eb->unbound); in eb_reserve()
673 unsigned int flags = eb->flags[i]; in eb_reserve()
674 struct i915_vma *vma = eb->vma[i]; in eb_reserve()
680 eb_unreserve_vma(vma, &eb->flags[i]); in eb_reserve()
684 list_add(&vma->exec_link, &eb->unbound); in eb_reserve()
687 list_add_tail(&vma->exec_link, &eb->unbound); in eb_reserve()
694 list_splice_tail(&last, &eb->unbound); in eb_reserve()
702 err = i915_gem_evict_vm(eb->context->vm); in eb_reserve()
713 static unsigned int eb_batch_index(const struct i915_execbuffer *eb) in eb_batch_index() argument
715 if (eb->args->flags & I915_EXEC_BATCH_FIRST) in eb_batch_index()
718 return eb->buffer_count - 1; in eb_batch_index()
721 static int eb_select_context(struct i915_execbuffer *eb) in eb_select_context() argument
725 ctx = i915_gem_context_lookup(eb->file->driver_priv, eb->args->rsvd1); in eb_select_context()
729 eb->gem_context = ctx; in eb_select_context()
731 eb->invalid_flags |= EXEC_OBJECT_NEEDS_GTT; in eb_select_context()
733 eb->context_flags = 0; in eb_select_context()
735 eb->context_flags |= __EXEC_OBJECT_NEEDS_BIAS; in eb_select_context()
740 static int eb_lookup_vmas(struct i915_execbuffer *eb) in eb_lookup_vmas() argument
742 struct radix_tree_root *handles_vma = &eb->gem_context->handles_vma; in eb_lookup_vmas()
747 if (unlikely(i915_gem_context_is_banned(eb->gem_context))) in eb_lookup_vmas()
750 INIT_LIST_HEAD(&eb->relocs); in eb_lookup_vmas()
751 INIT_LIST_HEAD(&eb->unbound); in eb_lookup_vmas()
753 batch = eb_batch_index(eb); in eb_lookup_vmas()
755 mutex_lock(&eb->gem_context->mutex); in eb_lookup_vmas()
756 if (unlikely(i915_gem_context_is_closed(eb->gem_context))) { in eb_lookup_vmas()
761 for (i = 0; i < eb->buffer_count; i++) { in eb_lookup_vmas()
762 u32 handle = eb->exec[i].handle; in eb_lookup_vmas()
770 obj = i915_gem_object_lookup(eb->file, handle); in eb_lookup_vmas()
776 vma = i915_vma_instance(obj, eb->context->vm, NULL); in eb_lookup_vmas()
798 lut->ctx = eb->gem_context; in eb_lookup_vmas()
805 err = eb_add_vma(eb, i, batch, vma); in eb_lookup_vmas()
809 GEM_BUG_ON(vma != eb->vma[i]); in eb_lookup_vmas()
810 GEM_BUG_ON(vma->exec_flags != &eb->flags[i]); in eb_lookup_vmas()
812 eb_vma_misplaced(&eb->exec[i], vma, eb->flags[i])); in eb_lookup_vmas()
815 mutex_unlock(&eb->gem_context->mutex); in eb_lookup_vmas()
817 eb->args->flags |= __EXEC_VALIDATED; in eb_lookup_vmas()
818 return eb_reserve(eb); in eb_lookup_vmas()
823 eb->vma[i] = NULL; in eb_lookup_vmas()
825 mutex_unlock(&eb->gem_context->mutex); in eb_lookup_vmas()
830 eb_get_vma(const struct i915_execbuffer *eb, unsigned long handle) in eb_get_vma() argument
832 if (eb->lut_size < 0) { in eb_get_vma()
833 if (handle >= -eb->lut_size) in eb_get_vma()
835 return eb->vma[handle]; in eb_get_vma()
840 head = &eb->buckets[hash_32(handle, eb->lut_size)]; in eb_get_vma()
849 static void eb_release_vmas(const struct i915_execbuffer *eb) in eb_release_vmas() argument
851 const unsigned int count = eb->buffer_count; in eb_release_vmas()
855 struct i915_vma *vma = eb->vma[i]; in eb_release_vmas()
856 unsigned int flags = eb->flags[i]; in eb_release_vmas()
861 GEM_BUG_ON(vma->exec_flags != &eb->flags[i]); in eb_release_vmas()
863 eb->vma[i] = NULL; in eb_release_vmas()
873 static void eb_reset_vmas(const struct i915_execbuffer *eb) in eb_reset_vmas() argument
875 eb_release_vmas(eb); in eb_reset_vmas()
876 if (eb->lut_size > 0) in eb_reset_vmas()
877 memset(eb->buckets, 0, in eb_reset_vmas()
878 sizeof(struct hlist_head) << eb->lut_size); in eb_reset_vmas()
881 static void eb_destroy(const struct i915_execbuffer *eb) in eb_destroy() argument
883 GEM_BUG_ON(eb->reloc_cache.rq); in eb_destroy()
885 if (eb->lut_size > 0) in eb_destroy()
886 kfree(eb->buckets); in eb_destroy()
1139 static int __reloc_gpu_alloc(struct i915_execbuffer *eb, in __reloc_gpu_alloc() argument
1143 struct reloc_cache *cache = &eb->reloc_cache; in __reloc_gpu_alloc()
1150 pool = intel_engine_pool_get(&eb->engine->pool, PAGE_SIZE); in __reloc_gpu_alloc()
1173 rq = i915_request_create(eb->context); in __reloc_gpu_alloc()
1187 err = eb->engine->emit_bb_start(rq, in __reloc_gpu_alloc()
1224 static u32 *reloc_gpu(struct i915_execbuffer *eb, in reloc_gpu() argument
1228 struct reloc_cache *cache = &eb->reloc_cache; in reloc_gpu()
1238 if (eb_use_cmdparser(eb)) in reloc_gpu()
1241 if (!intel_engine_can_store_dword(eb->engine)) in reloc_gpu()
1244 err = __reloc_gpu_alloc(eb, vma, len); in reloc_gpu()
1258 struct i915_execbuffer *eb, in relocate_entry() argument
1263 bool wide = eb->reloc_cache.use_64bit_reloc; in relocate_entry()
1266 if (!eb->reloc_cache.vaddr && in relocate_entry()
1269 const unsigned int gen = eb->reloc_cache.gen; in relocate_entry()
1281 batch = reloc_gpu(eb, vma, len); in relocate_entry()
1326 vaddr = reloc_vaddr(vma->obj, &eb->reloc_cache, offset >> PAGE_SHIFT); in relocate_entry()
1332 eb->reloc_cache.vaddr); in relocate_entry()
1346 eb_relocate_entry(struct i915_execbuffer *eb, in eb_relocate_entry() argument
1354 target = eb_get_vma(eb, reloc->target_handle); in eb_relocate_entry()
1391 IS_GEN(eb->i915, 6)) { in eb_relocate_entry()
1410 vma->size - (eb->reloc_cache.use_64bit_reloc ? 8 : 4))) { in eb_relocate_entry()
1437 return relocate_entry(vma, reloc, eb, target); in eb_relocate_entry()
1440 static int eb_relocate_vma(struct i915_execbuffer *eb, struct i915_vma *vma) in eb_relocate_vma() argument
1445 const struct drm_i915_gem_exec_object2 *entry = exec_entry(eb, vma); in eb_relocate_vma()
1485 u64 offset = eb_relocate_entry(eb, vma, r); in eb_relocate_vma()
1523 reloc_cache_reset(&eb->reloc_cache); in eb_relocate_vma()
1528 eb_relocate_vma_slow(struct i915_execbuffer *eb, struct i915_vma *vma) in eb_relocate_vma_slow() argument
1530 const struct drm_i915_gem_exec_object2 *entry = exec_entry(eb, vma); in eb_relocate_vma_slow()
1537 u64 offset = eb_relocate_entry(eb, vma, &relocs[i]); in eb_relocate_vma_slow()
1546 reloc_cache_reset(&eb->reloc_cache); in eb_relocate_vma_slow()
1577 static int eb_copy_relocations(const struct i915_execbuffer *eb) in eb_copy_relocations() argument
1580 const unsigned int count = eb->buffer_count; in eb_copy_relocations()
1585 const unsigned int nreloc = eb->exec[i].relocation_count; in eb_copy_relocations()
1593 err = check_relocations(&eb->exec[i]); in eb_copy_relocations()
1597 urelocs = u64_to_user_ptr(eb->exec[i].relocs_ptr); in eb_copy_relocations()
1639 eb->exec[i].relocs_ptr = (uintptr_t)relocs; in eb_copy_relocations()
1651 relocs = u64_to_ptr(typeof(*relocs), eb->exec[i].relocs_ptr); in eb_copy_relocations()
1652 if (eb->exec[i].relocation_count) in eb_copy_relocations()
1658 static int eb_prefault_relocations(const struct i915_execbuffer *eb) in eb_prefault_relocations() argument
1660 const unsigned int count = eb->buffer_count; in eb_prefault_relocations()
1669 err = check_relocations(&eb->exec[i]); in eb_prefault_relocations()
1677 static noinline int eb_relocate_slow(struct i915_execbuffer *eb) in eb_relocate_slow() argument
1679 struct drm_device *dev = &eb->i915->drm; in eb_relocate_slow()
1691 eb_reset_vmas(eb); in eb_relocate_slow()
1708 err = eb_prefault_relocations(eb); in eb_relocate_slow()
1710 err = eb_copy_relocations(eb); in eb_relocate_slow()
1722 flush_workqueue(eb->i915->mm.userptr_wq); in eb_relocate_slow()
1731 err = eb_lookup_vmas(eb); in eb_relocate_slow()
1735 GEM_BUG_ON(!eb->batch); in eb_relocate_slow()
1737 list_for_each_entry(vma, &eb->relocs, reloc_link) { in eb_relocate_slow()
1740 err = eb_relocate_vma(eb, vma); in eb_relocate_slow()
1745 err = eb_relocate_vma_slow(eb, vma); in eb_relocate_slow()
1764 const unsigned int count = eb->buffer_count; in eb_relocate_slow()
1769 &eb->exec[i]; in eb_relocate_slow()
1783 static int eb_relocate(struct i915_execbuffer *eb) in eb_relocate() argument
1785 if (eb_lookup_vmas(eb)) in eb_relocate()
1789 if (eb->args->flags & __EXEC_HAS_RELOC) { in eb_relocate()
1792 list_for_each_entry(vma, &eb->relocs, reloc_link) { in eb_relocate()
1793 if (eb_relocate_vma(eb, vma)) in eb_relocate()
1801 return eb_relocate_slow(eb); in eb_relocate()
1804 static int eb_move_to_gpu(struct i915_execbuffer *eb) in eb_move_to_gpu() argument
1806 const unsigned int count = eb->buffer_count; in eb_move_to_gpu()
1814 struct i915_vma *vma = eb->vma[i]; in eb_move_to_gpu()
1827 ww_mutex_unlock(&eb->vma[j]->resv->lock); in eb_move_to_gpu()
1829 swap(eb->flags[i], eb->flags[j]); in eb_move_to_gpu()
1830 swap(eb->vma[i], eb->vma[j]); in eb_move_to_gpu()
1831 eb->vma[i]->exec_flags = &eb->flags[i]; in eb_move_to_gpu()
1833 GEM_BUG_ON(vma != eb->vma[0]); in eb_move_to_gpu()
1834 vma->exec_flags = &eb->flags[0]; in eb_move_to_gpu()
1845 unsigned int flags = eb->flags[i]; in eb_move_to_gpu()
1846 struct i915_vma *vma = eb->vma[i]; in eb_move_to_gpu()
1856 capture->next = eb->request->capture_list; in eb_move_to_gpu()
1858 eb->request->capture_list = capture; in eb_move_to_gpu()
1881 (eb->request, obj, flags & EXEC_OBJECT_WRITE); in eb_move_to_gpu()
1885 err = i915_vma_move_to_active(vma, eb->request, flags); in eb_move_to_gpu()
1900 eb->exec = NULL; in eb_move_to_gpu()
1903 intel_gt_chipset_flush(eb->engine->gt); in eb_move_to_gpu()
1907 i915_request_skip(eb->request, err); in eb_move_to_gpu()
1961 shadow_batch_pin(struct i915_execbuffer *eb, struct drm_i915_gem_object *obj) in shadow_batch_pin() argument
1963 struct drm_i915_private *dev_priv = eb->i915; in shadow_batch_pin()
1964 struct i915_vma * const vma = *eb->vma; in shadow_batch_pin()
1987 static struct i915_vma *eb_parse(struct i915_execbuffer *eb) in eb_parse() argument
1995 pool = intel_engine_pool_get(&eb->engine->pool, eb->batch_len); in eb_parse()
1999 vma = shadow_batch_pin(eb, pool->obj); in eb_parse()
2003 batch_start = gen8_canonical_addr(eb->batch->node.start) + in eb_parse()
2004 eb->batch_start_offset; in eb_parse()
2008 err = intel_engine_cmd_parser(eb->gem_context, in eb_parse()
2009 eb->engine, in eb_parse()
2010 eb->batch->obj, in eb_parse()
2012 eb->batch_start_offset, in eb_parse()
2013 eb->batch_len, in eb_parse()
2026 if (CMDPARSER_USES_GGTT(eb->i915) && (err == -EACCES)) in eb_parse()
2034 eb->vma[eb->buffer_count] = i915_vma_get(vma); in eb_parse()
2035 eb->flags[eb->buffer_count] = in eb_parse()
2037 vma->exec_flags = &eb->flags[eb->buffer_count]; in eb_parse()
2038 eb->buffer_count++; in eb_parse()
2040 eb->batch_start_offset = 0; in eb_parse()
2041 eb->batch = vma; in eb_parse()
2043 if (CMDPARSER_USES_GGTT(eb->i915)) in eb_parse()
2044 eb->batch_flags |= I915_DISPATCH_SECURE; in eb_parse()
2068 static int eb_submit(struct i915_execbuffer *eb) in eb_submit() argument
2072 err = eb_move_to_gpu(eb); in eb_submit()
2076 if (eb->args->flags & I915_EXEC_GEN7_SOL_RESET) { in eb_submit()
2077 err = i915_reset_gen7_sol_offsets(eb->request); in eb_submit()
2088 if (eb->engine->emit_init_breadcrumb) { in eb_submit()
2089 err = eb->engine->emit_init_breadcrumb(eb->request); in eb_submit()
2094 err = eb->engine->emit_bb_start(eb->request, in eb_submit()
2095 eb->batch->node.start + in eb_submit()
2096 eb->batch_start_offset, in eb_submit()
2097 eb->batch_len, in eb_submit()
2098 eb->batch_flags); in eb_submit()
2172 __eb_pin_context(struct i915_execbuffer *eb, struct intel_context *ce) in __eb_pin_context() argument
2179 err = mutex_lock_interruptible(&eb->i915->drm.struct_mutex); in __eb_pin_context()
2184 mutex_unlock(&eb->i915->drm.struct_mutex); in __eb_pin_context()
2190 __eb_unpin_context(struct i915_execbuffer *eb, struct intel_context *ce) in __eb_unpin_context() argument
2195 mutex_lock(&eb->i915->drm.struct_mutex); in __eb_unpin_context()
2197 mutex_unlock(&eb->i915->drm.struct_mutex); in __eb_unpin_context()
2200 static int __eb_pin_engine(struct i915_execbuffer *eb, struct intel_context *ce) in __eb_pin_engine() argument
2219 err = __eb_pin_context(eb, ce); in __eb_pin_engine()
2254 eb->engine = ce->engine; in __eb_pin_engine()
2255 eb->context = ce; in __eb_pin_engine()
2263 __eb_unpin_context(eb, ce); in __eb_pin_engine()
2267 static void eb_unpin_engine(struct i915_execbuffer *eb) in eb_unpin_engine() argument
2269 struct intel_context *ce = eb->context; in eb_unpin_engine()
2276 __eb_unpin_context(eb, ce); in eb_unpin_engine()
2280 eb_select_legacy_ring(struct i915_execbuffer *eb, in eb_select_legacy_ring() argument
2284 struct drm_i915_private *i915 = eb->i915; in eb_select_legacy_ring()
2321 eb_pin_engine(struct i915_execbuffer *eb, in eb_pin_engine() argument
2329 if (i915_gem_context_user_engines(eb->gem_context)) in eb_pin_engine()
2332 idx = eb_select_legacy_ring(eb, file, args); in eb_pin_engine()
2334 ce = i915_gem_context_get_engine(eb->gem_context, idx); in eb_pin_engine()
2338 err = __eb_pin_engine(eb, ce); in eb_pin_engine()
2424 await_fence_array(struct i915_execbuffer *eb, in await_fence_array() argument
2427 const unsigned int nfences = eb->args->num_cliprects; in await_fence_array()
2444 err = i915_request_await_dma_fence(eb->request, fence); in await_fence_array()
2454 signal_fence_array(struct i915_execbuffer *eb, in signal_fence_array() argument
2457 const unsigned int nfences = eb->args->num_cliprects; in signal_fence_array()
2458 struct dma_fence * const fence = &eb->request->fence; in signal_fence_array()
2481 struct i915_execbuffer eb; in i915_gem_do_execbuffer() local
2492 eb.i915 = i915; in i915_gem_do_execbuffer()
2493 eb.file = file; in i915_gem_do_execbuffer()
2494 eb.args = args; in i915_gem_do_execbuffer()
2498 eb.exec = exec; in i915_gem_do_execbuffer()
2499 eb.vma = (struct i915_vma **)(exec + args->buffer_count + 1); in i915_gem_do_execbuffer()
2500 eb.vma[0] = NULL; in i915_gem_do_execbuffer()
2501 eb.flags = (unsigned int *)(eb.vma + args->buffer_count + 1); in i915_gem_do_execbuffer()
2503 eb.invalid_flags = __EXEC_OBJECT_UNKNOWN_FLAGS; in i915_gem_do_execbuffer()
2504 reloc_cache_init(&eb.reloc_cache, eb.i915); in i915_gem_do_execbuffer()
2506 eb.buffer_count = args->buffer_count; in i915_gem_do_execbuffer()
2507 eb.batch_start_offset = args->batch_start_offset; in i915_gem_do_execbuffer()
2508 eb.batch_len = args->batch_len; in i915_gem_do_execbuffer()
2510 eb.batch_flags = 0; in i915_gem_do_execbuffer()
2522 eb.batch_flags |= I915_DISPATCH_SECURE; in i915_gem_do_execbuffer()
2525 eb.batch_flags |= I915_DISPATCH_PINNED; in i915_gem_do_execbuffer()
2554 err = eb_create(&eb); in i915_gem_do_execbuffer()
2558 GEM_BUG_ON(!eb.lut_size); in i915_gem_do_execbuffer()
2560 err = eb_select_context(&eb); in i915_gem_do_execbuffer()
2564 err = eb_pin_engine(&eb, file, args); in i915_gem_do_execbuffer()
2572 err = eb_relocate(&eb); in i915_gem_do_execbuffer()
2585 if (unlikely(*eb.batch->exec_flags & EXEC_OBJECT_WRITE)) { in i915_gem_do_execbuffer()
2590 if (eb.batch_start_offset > eb.batch->size || in i915_gem_do_execbuffer()
2591 eb.batch_len > eb.batch->size - eb.batch_start_offset) { in i915_gem_do_execbuffer()
2597 if (eb.batch_len == 0) in i915_gem_do_execbuffer()
2598 eb.batch_len = eb.batch->size - eb.batch_start_offset; in i915_gem_do_execbuffer()
2600 if (eb_use_cmdparser(&eb)) { in i915_gem_do_execbuffer()
2603 vma = eb_parse(&eb); in i915_gem_do_execbuffer()
2614 if (eb.batch_flags & I915_DISPATCH_SECURE) { in i915_gem_do_execbuffer()
2627 vma = i915_gem_object_ggtt_pin(eb.batch->obj, NULL, 0, 0, 0); in i915_gem_do_execbuffer()
2633 eb.batch = vma; in i915_gem_do_execbuffer()
2637 GEM_BUG_ON(eb.reloc_cache.rq); in i915_gem_do_execbuffer()
2640 eb.request = i915_request_create(eb.context); in i915_gem_do_execbuffer()
2641 if (IS_ERR(eb.request)) { in i915_gem_do_execbuffer()
2642 err = PTR_ERR(eb.request); in i915_gem_do_execbuffer()
2647 err = i915_request_await_dma_fence(eb.request, in_fence); in i915_gem_do_execbuffer()
2653 err = i915_request_await_execution(eb.request, exec_fence, in i915_gem_do_execbuffer()
2654 eb.engine->bond_execute); in i915_gem_do_execbuffer()
2660 err = await_fence_array(&eb, fences); in i915_gem_do_execbuffer()
2666 out_fence = sync_file_create(&eb.request->fence); in i915_gem_do_execbuffer()
2680 eb.request->batch = eb.batch; in i915_gem_do_execbuffer()
2681 if (eb.batch->private) in i915_gem_do_execbuffer()
2682 intel_engine_pool_mark_active(eb.batch->private, eb.request); in i915_gem_do_execbuffer()
2684 trace_i915_request_queue(eb.request, eb.batch_flags); in i915_gem_do_execbuffer()
2685 err = eb_submit(&eb); in i915_gem_do_execbuffer()
2687 add_to_client(eb.request, file); in i915_gem_do_execbuffer()
2688 i915_request_add(eb.request); in i915_gem_do_execbuffer()
2691 signal_fence_array(&eb, fences); in i915_gem_do_execbuffer()
2705 if (eb.batch_flags & I915_DISPATCH_SECURE) in i915_gem_do_execbuffer()
2706 i915_vma_unpin(eb.batch); in i915_gem_do_execbuffer()
2707 if (eb.batch->private) in i915_gem_do_execbuffer()
2708 intel_engine_pool_put(eb.batch->private); in i915_gem_do_execbuffer()
2710 if (eb.exec) in i915_gem_do_execbuffer()
2711 eb_release_vmas(&eb); in i915_gem_do_execbuffer()
2714 eb_unpin_engine(&eb); in i915_gem_do_execbuffer()
2716 i915_gem_context_put(eb.gem_context); in i915_gem_do_execbuffer()
2718 eb_destroy(&eb); in i915_gem_do_execbuffer()