Lines Matching refs:ring
48 i915_gem_object_retire__read(struct drm_i915_gem_object *obj, int ring);
1144 struct intel_engine_cs *ring) in missed_irq() argument
1146 return test_bit(ring->id, &dev_priv->gpu_error.missed_irq_rings); in missed_irq()
1196 if (req->ring->irq_refcount) in __i915_spin_request()
1246 struct intel_engine_cs *ring = i915_gem_request_get_ring(req); in __i915_wait_request() local
1247 struct drm_device *dev = ring->dev; in __i915_wait_request()
1250 ACCESS_ONCE(dev_priv->gpu_error.test_irq_rings) & intel_ring_flag(ring); in __i915_wait_request()
1288 if (!irq_test_in_progress && WARN_ON(!ring->irq_get(ring))) { in __i915_wait_request()
1296 prepare_to_wait(&ring->irq_queue, &wait, state); in __i915_wait_request()
1325 if (timeout || missed_irq(dev_priv, ring)) { in __i915_wait_request()
1329 expire = missed_irq(dev_priv, ring) ? jiffies + 1 : timeout_expire; in __i915_wait_request()
1341 ring->irq_put(ring); in __i915_wait_request()
1343 finish_wait(&ring->irq_queue, &wait); in __i915_wait_request()
1382 dev_private = req->ring->dev->dev_private; in i915_gem_request_add_to_client()
1435 struct intel_engine_cs *engine = req->ring; in __i915_gem_request_retire__upto()
1467 dev = req->ring->dev; in i915_wait_request()
1506 i = obj->last_write_req->ring->id; in i915_gem_object_wait_rendering()
1533 int ring = req->ring->id; in i915_gem_object_retire_request() local
1535 if (obj->last_read_req[ring] == req) in i915_gem_object_retire_request()
1536 i915_gem_object_retire__read(obj, ring); in i915_gem_object_retire_request()
2405 struct intel_engine_cs *ring; in i915_vma_move_to_active() local
2407 ring = i915_gem_request_get_ring(req); in i915_vma_move_to_active()
2412 obj->active |= intel_ring_flag(ring); in i915_vma_move_to_active()
2414 list_move_tail(&obj->ring_list[ring->id], &ring->active_list); in i915_vma_move_to_active()
2415 i915_gem_request_assign(&obj->last_read_req[ring->id], req); in i915_vma_move_to_active()
2424 RQ_BUG_ON(!(obj->active & intel_ring_flag(obj->last_write_req->ring))); in i915_gem_object_retire__write()
2431 i915_gem_object_retire__read(struct drm_i915_gem_object *obj, int ring) in i915_gem_object_retire__read() argument
2435 RQ_BUG_ON(obj->last_read_req[ring] == NULL); in i915_gem_object_retire__read()
2436 RQ_BUG_ON(!(obj->active & (1 << ring))); in i915_gem_object_retire__read()
2438 list_del_init(&obj->ring_list[ring]); in i915_gem_object_retire__read()
2439 i915_gem_request_assign(&obj->last_read_req[ring], NULL); in i915_gem_object_retire__read()
2441 if (obj->last_write_req && obj->last_write_req->ring->id == ring) in i915_gem_object_retire__read()
2444 obj->active &= ~(1 << ring); in i915_gem_object_retire__read()
2468 struct intel_engine_cs *ring; in i915_gem_init_seqno() local
2472 for_each_ring(ring, dev_priv, i) { in i915_gem_init_seqno()
2473 ret = intel_ring_idle(ring); in i915_gem_init_seqno()
2480 for_each_ring(ring, dev_priv, i) { in i915_gem_init_seqno()
2481 intel_ring_init_seqno(ring, seqno); in i915_gem_init_seqno()
2483 for (j = 0; j < ARRAY_SIZE(ring->semaphore.sync_seqno); j++) in i915_gem_init_seqno()
2484 ring->semaphore.sync_seqno[j] = 0; in i915_gem_init_seqno()
2543 struct intel_engine_cs *ring; in __i915_add_request() local
2552 ring = request->ring; in __i915_add_request()
2553 dev_priv = ring->dev->dev_private; in __i915_add_request()
2588 ret = ring->emit_request(request); in __i915_add_request()
2590 ret = ring->add_request(request); in __i915_add_request()
2608 request->previous_seqno = ring->last_submitted_seqno; in __i915_add_request()
2609 ring->last_submitted_seqno = request->seqno; in __i915_add_request()
2610 list_add_tail(&request->list, &ring->request_list); in __i915_add_request()
2614 i915_queue_hangcheck(ring->dev); in __i915_add_request()
2681 if (ctx != req->ring->default_context) in i915_gem_request_free()
2691 int i915_gem_request_alloc(struct intel_engine_cs *ring, in i915_gem_request_alloc() argument
2695 struct drm_i915_private *dev_priv = to_i915(ring->dev); in i915_gem_request_alloc()
2708 ret = i915_gem_get_seqno(ring->dev, &req->seqno); in i915_gem_request_alloc()
2714 req->ring = ring; in i915_gem_request_alloc()
2764 i915_gem_find_active_request(struct intel_engine_cs *ring) in i915_gem_find_active_request() argument
2768 list_for_each_entry(request, &ring->request_list, list) { in i915_gem_find_active_request()
2779 struct intel_engine_cs *ring) in i915_gem_reset_ring_status() argument
2784 request = i915_gem_find_active_request(ring); in i915_gem_reset_ring_status()
2789 ring_hung = ring->hangcheck.score >= HANGCHECK_SCORE_RING_HUNG; in i915_gem_reset_ring_status()
2793 list_for_each_entry_continue(request, &ring->request_list, list) in i915_gem_reset_ring_status()
2798 struct intel_engine_cs *ring) in i915_gem_reset_ring_cleanup() argument
2800 while (!list_empty(&ring->active_list)) { in i915_gem_reset_ring_cleanup()
2803 obj = list_first_entry(&ring->active_list, in i915_gem_reset_ring_cleanup()
2805 ring_list[ring->id]); in i915_gem_reset_ring_cleanup()
2807 i915_gem_object_retire__read(obj, ring->id); in i915_gem_reset_ring_cleanup()
2815 while (!list_empty(&ring->execlist_queue)) { in i915_gem_reset_ring_cleanup()
2818 submit_req = list_first_entry(&ring->execlist_queue, in i915_gem_reset_ring_cleanup()
2823 if (submit_req->ctx != ring->default_context) in i915_gem_reset_ring_cleanup()
2836 while (!list_empty(&ring->request_list)) { in i915_gem_reset_ring_cleanup()
2839 request = list_first_entry(&ring->request_list, in i915_gem_reset_ring_cleanup()
2850 struct intel_engine_cs *ring; in i915_gem_reset() local
2858 for_each_ring(ring, dev_priv, i) in i915_gem_reset()
2859 i915_gem_reset_ring_status(dev_priv, ring); in i915_gem_reset()
2861 for_each_ring(ring, dev_priv, i) in i915_gem_reset()
2862 i915_gem_reset_ring_cleanup(dev_priv, ring); in i915_gem_reset()
2875 i915_gem_retire_requests_ring(struct intel_engine_cs *ring) in i915_gem_retire_requests_ring() argument
2877 WARN_ON(i915_verify_lists(ring->dev)); in i915_gem_retire_requests_ring()
2884 while (!list_empty(&ring->request_list)) { in i915_gem_retire_requests_ring()
2887 request = list_first_entry(&ring->request_list, in i915_gem_retire_requests_ring()
2901 while (!list_empty(&ring->active_list)) { in i915_gem_retire_requests_ring()
2904 obj = list_first_entry(&ring->active_list, in i915_gem_retire_requests_ring()
2906 ring_list[ring->id]); in i915_gem_retire_requests_ring()
2908 if (!list_empty(&obj->last_read_req[ring->id]->list)) in i915_gem_retire_requests_ring()
2911 i915_gem_object_retire__read(obj, ring->id); in i915_gem_retire_requests_ring()
2914 if (unlikely(ring->trace_irq_req && in i915_gem_retire_requests_ring()
2915 i915_gem_request_completed(ring->trace_irq_req, true))) { in i915_gem_retire_requests_ring()
2916 ring->irq_put(ring); in i915_gem_retire_requests_ring()
2917 i915_gem_request_assign(&ring->trace_irq_req, NULL); in i915_gem_retire_requests_ring()
2920 WARN_ON(i915_verify_lists(ring->dev)); in i915_gem_retire_requests_ring()
2927 struct intel_engine_cs *ring; in i915_gem_retire_requests() local
2931 for_each_ring(ring, dev_priv, i) { in i915_gem_retire_requests()
2932 i915_gem_retire_requests_ring(ring); in i915_gem_retire_requests()
2933 idle &= list_empty(&ring->request_list); in i915_gem_retire_requests()
2937 spin_lock_irqsave(&ring->execlist_lock, flags); in i915_gem_retire_requests()
2938 idle &= list_empty(&ring->execlist_queue); in i915_gem_retire_requests()
2939 spin_unlock_irqrestore(&ring->execlist_lock, flags); in i915_gem_retire_requests()
2941 intel_execlists_retire_requests(ring); in i915_gem_retire_requests()
2978 struct intel_engine_cs *ring; in i915_gem_idle_work_handler() local
2981 for_each_ring(ring, dev_priv, i) in i915_gem_idle_work_handler()
2982 if (!list_empty(&ring->request_list)) in i915_gem_idle_work_handler()
2988 struct intel_engine_cs *ring; in i915_gem_idle_work_handler() local
2991 for_each_ring(ring, dev_priv, i) in i915_gem_idle_work_handler()
2992 i915_gem_batch_pool_fini(&ring->batch_pool); in i915_gem_idle_work_handler()
3351 struct intel_engine_cs *ring; in i915_gpu_idle() local
3355 for_each_ring(ring, dev_priv, i) { in i915_gpu_idle()
3359 ret = i915_gem_request_alloc(ring, ring->default_context, &req); in i915_gpu_idle()
3372 ret = intel_ring_idle(ring); in i915_gpu_idle()
4300 args->busy |= obj->last_write_req->ring->id; in i915_gem_busy_ioctl()
4592 struct intel_engine_cs *ring; in i915_gem_stop_ringbuffers() local
4595 for_each_ring(ring, dev_priv, i) in i915_gem_stop_ringbuffers()
4596 dev_priv->gt.stop_ring(ring); in i915_gem_stop_ringbuffers()
4633 struct intel_engine_cs *ring = req->ring; in i915_gem_l3_remap() local
4634 struct drm_device *dev = ring->dev; in i915_gem_l3_remap()
4653 intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1)); in i915_gem_l3_remap()
4654 intel_ring_emit(ring, reg_base + i); in i915_gem_l3_remap()
4655 intel_ring_emit(ring, remap_info[i/4]); in i915_gem_l3_remap()
4658 intel_ring_advance(ring); in i915_gem_l3_remap()
4751 intel_cleanup_ring_buffer(&dev_priv->ring[VECS]); in i915_gem_init_rings()
4753 intel_cleanup_ring_buffer(&dev_priv->ring[BCS]); in i915_gem_init_rings()
4755 intel_cleanup_ring_buffer(&dev_priv->ring[VCS]); in i915_gem_init_rings()
4757 intel_cleanup_ring_buffer(&dev_priv->ring[RCS]); in i915_gem_init_rings()
4766 struct intel_engine_cs *ring; in i915_gem_init_hw() local
4804 BUG_ON(!dev_priv->ring[RCS].default_context); in i915_gem_init_hw()
4813 for_each_ring(ring, dev_priv, i) { in i915_gem_init_hw()
4814 ret = ring->init_hw(ring); in i915_gem_init_hw()
4847 for_each_ring(ring, dev_priv, i) { in i915_gem_init_hw()
4850 WARN_ON(!ring->default_context); in i915_gem_init_hw()
4852 ret = i915_gem_request_alloc(ring, ring->default_context, &req); in i915_gem_init_hw()
4858 if (ring->id == RCS) { in i915_gem_init_hw()
4961 struct intel_engine_cs *ring; in i915_gem_cleanup_ringbuffer() local
4964 for_each_ring(ring, dev_priv, i) in i915_gem_cleanup_ringbuffer()
4965 dev_priv->gt.cleanup_ring(ring); in i915_gem_cleanup_ringbuffer()
4977 init_ring_lists(struct intel_engine_cs *ring) in init_ring_lists() argument
4979 INIT_LIST_HEAD(&ring->active_list); in init_ring_lists()
4980 INIT_LIST_HEAD(&ring->request_list); in init_ring_lists()
5011 init_ring_lists(&dev_priv->ring[i]); in i915_gem_load()