Lines Matching refs:rq
452 static int emit_ggtt_store_dw(struct i915_request *rq, u32 addr, u32 value) in emit_ggtt_store_dw() argument
456 cs = intel_ring_begin(rq, 4); in emit_ggtt_store_dw()
460 if (GRAPHICS_VER(rq->engine->i915) >= 8) { in emit_ggtt_store_dw()
465 } else if (GRAPHICS_VER(rq->engine->i915) >= 4) { in emit_ggtt_store_dw()
477 intel_ring_advance(rq, cs); in emit_ggtt_store_dw()
485 struct i915_request *rq; in checked_tl_write() local
490 rq = ERR_PTR(err); in checked_tl_write()
501 rq = intel_engine_create_kernel_request(engine); in checked_tl_write()
502 if (IS_ERR(rq)) in checked_tl_write()
505 i915_request_get(rq); in checked_tl_write()
507 err = emit_ggtt_store_dw(rq, tl->hwsp_offset, value); in checked_tl_write()
508 i915_request_add(rq); in checked_tl_write()
510 i915_request_put(rq); in checked_tl_write()
511 rq = ERR_PTR(err); in checked_tl_write()
517 if (IS_ERR(rq)) in checked_tl_write()
519 return rq; in checked_tl_write()
552 struct i915_request *rq; in live_hwsp_engine() local
560 rq = checked_tl_write(tl, engine, count); in live_hwsp_engine()
561 if (IS_ERR(rq)) { in live_hwsp_engine()
563 err = PTR_ERR(rq); in live_hwsp_engine()
568 i915_request_put(rq); in live_hwsp_engine()
622 struct i915_request *rq; in live_hwsp_alternate() local
634 rq = checked_tl_write(tl, engine, count); in live_hwsp_alternate()
636 if (IS_ERR(rq)) { in live_hwsp_alternate()
638 err = PTR_ERR(rq); in live_hwsp_alternate()
643 i915_request_put(rq); in live_hwsp_alternate()
694 struct i915_request *rq; in live_hwsp_wrap() local
700 rq = intel_engine_create_kernel_request(engine); in live_hwsp_wrap()
701 if (IS_ERR(rq)) { in live_hwsp_wrap()
702 err = PTR_ERR(rq); in live_hwsp_wrap()
709 err = intel_timeline_get_seqno(tl, rq, &seqno[0]); in live_hwsp_wrap()
712 i915_request_add(rq); in live_hwsp_wrap()
718 err = emit_ggtt_store_dw(rq, tl->hwsp_offset, seqno[0]); in live_hwsp_wrap()
720 i915_request_add(rq); in live_hwsp_wrap()
726 err = intel_timeline_get_seqno(tl, rq, &seqno[1]); in live_hwsp_wrap()
729 i915_request_add(rq); in live_hwsp_wrap()
735 err = emit_ggtt_store_dw(rq, tl->hwsp_offset, seqno[1]); in live_hwsp_wrap()
737 i915_request_add(rq); in live_hwsp_wrap()
746 i915_request_add(rq); in live_hwsp_wrap()
748 if (i915_request_wait(rq, 0, HZ / 5) < 0) { in live_hwsp_wrap()
776 static int emit_read_hwsp(struct i915_request *rq, in emit_read_hwsp() argument
780 const u32 gpr = i915_mmio_reg_offset(GEN8_RING_CS_GPR(rq->engine->mmio_base, 0)); in emit_read_hwsp()
783 cs = intel_ring_begin(rq, 12); in emit_read_hwsp()
804 intel_ring_advance(rq, cs); in emit_read_hwsp()
811 struct i915_request *rq; member
878 w->rq = intel_context_create_request(ce); in create_watcher()
880 if (IS_ERR(w->rq)) in create_watcher()
881 return PTR_ERR(w->rq); in create_watcher()
885 switch_tl_lock(w->rq, NULL); in create_watcher()
893 struct i915_request *rq = fetch_and_zero(&w->rq); in check_watcher() local
899 i915_request_get(rq); in check_watcher()
900 switch_tl_lock(NULL, rq); in check_watcher()
901 i915_request_add(rq); in check_watcher()
903 if (i915_request_wait(rq, 0, HZ) < 0) { in check_watcher()
922 i915_request_put(rq); in check_watcher()
928 if (w->rq) { in cleanup_watcher()
929 switch_tl_lock(NULL, w->rq); in cleanup_watcher()
931 i915_request_add(w->rq); in cleanup_watcher()
939 struct i915_request *rq, *rn; in retire_requests() local
942 list_for_each_entry_safe(rq, rn, &tl->requests, link) in retire_requests()
943 if (!i915_request_retire(rq)) in retire_requests()
950 static struct i915_request *wrap_timeline(struct i915_request *rq) in wrap_timeline() argument
952 struct intel_context *ce = rq->context; in wrap_timeline()
954 u32 seqno = rq->fence.seqno; in wrap_timeline()
957 i915_request_put(rq); in wrap_timeline()
958 rq = intel_context_create_request(ce); in wrap_timeline()
959 if (IS_ERR(rq)) in wrap_timeline()
960 return rq; in wrap_timeline()
962 i915_request_get(rq); in wrap_timeline()
963 i915_request_add(rq); in wrap_timeline()
966 i915_request_put(rq); in wrap_timeline()
967 rq = i915_request_create(ce); in wrap_timeline()
968 if (IS_ERR(rq)) in wrap_timeline()
969 return rq; in wrap_timeline()
971 i915_request_get(rq); in wrap_timeline()
972 i915_request_add(rq); in wrap_timeline()
974 return rq; in wrap_timeline()
1023 struct i915_request *rq; in live_hwsp_read() local
1058 rq = i915_request_create(ce); in live_hwsp_read()
1059 if (IS_ERR(rq)) { in live_hwsp_read()
1060 err = PTR_ERR(rq); in live_hwsp_read()
1066 err = i915_sw_fence_await_dma_fence(&rq->submit, in live_hwsp_read()
1067 &watcher[0].rq->fence, 0, in live_hwsp_read()
1070 i915_request_add(rq); in live_hwsp_read()
1076 switch_tl_lock(rq, watcher[0].rq); in live_hwsp_read()
1077 err = intel_timeline_read_hwsp(rq, watcher[0].rq, &hwsp); in live_hwsp_read()
1079 err = emit_read_hwsp(watcher[0].rq, /* before */ in live_hwsp_read()
1080 rq->fence.seqno, hwsp, in live_hwsp_read()
1082 switch_tl_lock(watcher[0].rq, rq); in live_hwsp_read()
1084 i915_request_add(rq); in live_hwsp_read()
1090 switch_tl_lock(rq, watcher[1].rq); in live_hwsp_read()
1091 err = intel_timeline_read_hwsp(rq, watcher[1].rq, &hwsp); in live_hwsp_read()
1093 err = emit_read_hwsp(watcher[1].rq, /* after */ in live_hwsp_read()
1094 rq->fence.seqno, hwsp, in live_hwsp_read()
1096 switch_tl_lock(watcher[1].rq, rq); in live_hwsp_read()
1098 i915_request_add(rq); in live_hwsp_read()
1104 i915_request_get(rq); in live_hwsp_read()
1105 i915_request_add(rq); in live_hwsp_read()
1107 rq = wrap_timeline(rq); in live_hwsp_read()
1110 if (IS_ERR(rq)) { in live_hwsp_read()
1111 err = PTR_ERR(rq); in live_hwsp_read()
1115 err = i915_sw_fence_await_dma_fence(&watcher[1].rq->submit, in live_hwsp_read()
1116 &rq->fence, 0, in live_hwsp_read()
1119 i915_request_put(rq); in live_hwsp_read()
1127 i915_request_put(rq); in live_hwsp_read()
1133 if (i915_request_wait(rq, in live_hwsp_read()
1137 i915_request_put(rq); in live_hwsp_read()
1141 i915_request_put(rq); in live_hwsp_read()
1144 if (8 * watcher[1].rq->ring->emit > in live_hwsp_read()
1145 3 * watcher[1].rq->ring->size) in live_hwsp_read()
1184 struct i915_request *rq[3] = {}; in live_hwsp_rollover_kernel() local
1197 for (i = 0; i < ARRAY_SIZE(rq); i++) { in live_hwsp_rollover_kernel()
1212 rq[i] = i915_request_get(this); in live_hwsp_rollover_kernel()
1217 GEM_BUG_ON(rq[2]->fence.seqno > rq[0]->fence.seqno); in live_hwsp_rollover_kernel()
1219 if (i915_request_wait(rq[2], 0, HZ / 5) < 0) { in live_hwsp_rollover_kernel()
1225 for (i = 0; i < ARRAY_SIZE(rq); i++) { in live_hwsp_rollover_kernel()
1226 if (!i915_request_completed(rq[i])) { in live_hwsp_rollover_kernel()
1234 for (i = 0; i < ARRAY_SIZE(rq); i++) in live_hwsp_rollover_kernel()
1235 i915_request_put(rq[i]); in live_hwsp_rollover_kernel()
1260 struct i915_request *rq[3] = {}; in live_hwsp_rollover_user() local
1284 for (i = 0; i < ARRAY_SIZE(rq); i++) { in live_hwsp_rollover_user()
1299 rq[i] = i915_request_get(this); in live_hwsp_rollover_user()
1304 GEM_BUG_ON(rq[2]->fence.seqno > rq[0]->fence.seqno); in live_hwsp_rollover_user()
1306 if (i915_request_wait(rq[2], 0, HZ / 5) < 0) { in live_hwsp_rollover_user()
1312 for (i = 0; i < ARRAY_SIZE(rq); i++) { in live_hwsp_rollover_user()
1313 if (!i915_request_completed(rq[i])) { in live_hwsp_rollover_user()
1322 for (i = 0; i < ARRAY_SIZE(rq); i++) in live_hwsp_rollover_user()
1323 i915_request_put(rq[i]); in live_hwsp_rollover_user()
1360 struct i915_request *rq; in live_hwsp_recycle() local
1368 rq = checked_tl_write(tl, engine, count); in live_hwsp_recycle()
1369 if (IS_ERR(rq)) { in live_hwsp_recycle()
1371 err = PTR_ERR(rq); in live_hwsp_recycle()
1375 if (i915_request_wait(rq, 0, HZ / 5) < 0) { in live_hwsp_recycle()
1377 i915_request_put(rq); in live_hwsp_recycle()
1391 i915_request_put(rq); in live_hwsp_recycle()