Lines Matching full:engine
26 #define CS_GPR(engine, n) ((engine)->mmio_base + 0x600 + (n) * 4) argument
52 static int wait_for_submit(struct intel_engine_cs *engine, in wait_for_submit() argument
57 tasklet_hi_schedule(&engine->sched_engine->tasklet); in wait_for_submit()
67 intel_engine_flush_submission(engine); in wait_for_submit()
68 if (!READ_ONCE(engine->execlists.pending[0]) && is_active(rq)) in wait_for_submit()
81 i915_ggtt_offset(ce->engine->status_page.vma) + in emit_semaphore_signal()
114 rq = intel_engine_create_kernel_request(ce->engine); in context_flush()
134 static int get_lri_mask(struct intel_engine_cs *engine, u32 lri) in get_lri_mask() argument
139 if (GRAPHICS_VER(engine->i915) < 12) in get_lri_mask()
142 switch (engine->class) { in get_lri_mask()
158 struct intel_engine_cs *engine; in live_lrc_layout() local
174 for_each_engine(engine, gt, id) { in live_lrc_layout()
178 if (!engine->default_state) in live_lrc_layout()
181 hw = shmem_pin_map(engine->default_state); in live_lrc_layout()
189 engine->kernel_context, engine, true); in live_lrc_layout()
203 engine->name, lri, dw); in live_lrc_layout()
210 engine->name, dw, lri); in live_lrc_layout()
217 engine->name, dw, lri, lrc[dw]); in live_lrc_layout()
232 lri_mask = get_lri_mask(engine, lri); in live_lrc_layout()
243 engine->name, dw, offset, lrc[dw]); in live_lrc_layout()
258 pr_info("%s: HW register image:\n", engine->name); in live_lrc_layout()
261 pr_info("%s: SW register image:\n", engine->name); in live_lrc_layout()
265 shmem_unpin_map(engine->default_state, hw); in live_lrc_layout()
288 struct intel_engine_cs *engine; in live_lrc_fixed() local
297 for_each_engine(engine, gt, id) { in live_lrc_fixed()
304 i915_mmio_reg_offset(RING_START(engine->mmio_base)), in live_lrc_fixed()
309 i915_mmio_reg_offset(RING_CTL(engine->mmio_base)), in live_lrc_fixed()
314 i915_mmio_reg_offset(RING_HEAD(engine->mmio_base)), in live_lrc_fixed()
319 i915_mmio_reg_offset(RING_TAIL(engine->mmio_base)), in live_lrc_fixed()
324 i915_mmio_reg_offset(RING_MI_MODE(engine->mmio_base)), in live_lrc_fixed()
325 lrc_ring_mi_mode(engine), in live_lrc_fixed()
329 i915_mmio_reg_offset(RING_BBSTATE(engine->mmio_base)), in live_lrc_fixed()
334 i915_mmio_reg_offset(RING_BB_PER_CTX_PTR(engine->mmio_base)), in live_lrc_fixed()
335 lrc_ring_wa_bb_per_ctx(engine), in live_lrc_fixed()
339 i915_mmio_reg_offset(RING_INDIRECT_CTX(engine->mmio_base)), in live_lrc_fixed()
340 lrc_ring_indirect_ptr(engine), in live_lrc_fixed()
344 i915_mmio_reg_offset(RING_INDIRECT_CTX_OFFSET(engine->mmio_base)), in live_lrc_fixed()
345 lrc_ring_indirect_offset(engine), in live_lrc_fixed()
349 i915_mmio_reg_offset(RING_CTX_TIMESTAMP(engine->mmio_base)), in live_lrc_fixed()
354 i915_mmio_reg_offset(GEN8_RING_CS_GPR(engine->mmio_base, 0)), in live_lrc_fixed()
355 lrc_ring_gpr0(engine), in live_lrc_fixed()
359 i915_mmio_reg_offset(RING_CMD_BUF_CCTL(engine->mmio_base)), in live_lrc_fixed()
360 lrc_ring_cmd_buf_cctl(engine), in live_lrc_fixed()
364 i915_mmio_reg_offset(RING_BB_OFFSET(engine->mmio_base)), in live_lrc_fixed()
365 lrc_ring_bb_offset(engine), in live_lrc_fixed()
372 if (!engine->default_state) in live_lrc_fixed()
375 hw = shmem_pin_map(engine->default_state); in live_lrc_fixed()
387 engine->name, in live_lrc_fixed()
396 shmem_unpin_map(engine->default_state, hw); in live_lrc_fixed()
402 static int __live_lrc_state(struct intel_engine_cs *engine, in __live_lrc_state() argument
418 ce = intel_context_create(engine); in __live_lrc_state()
444 *cs++ = i915_mmio_reg_offset(RING_START(engine->mmio_base)); in __live_lrc_state()
451 *cs++ = i915_mmio_reg_offset(RING_TAIL(engine->mmio_base)); in __live_lrc_state()
462 intel_engine_flush_submission(engine); in __live_lrc_state()
479 engine->name, n, cs[n], expected[n]); in __live_lrc_state()
505 struct intel_engine_cs *engine; in live_lrc_state() local
519 for_each_engine(engine, gt, id) { in live_lrc_state()
520 err = __live_lrc_state(engine, scratch); in live_lrc_state()
550 *cs++ = CS_GPR(ce->engine, n); in gpr_make_dirty()
567 i915_ggtt_offset(ce->engine->status_page.vma) + in __gpr_read()
597 *cs++ = CS_GPR(ce->engine, n); in __gpr_read()
614 static int __live_lrc_gpr(struct intel_engine_cs *engine, in __live_lrc_gpr() argument
618 u32 *slot = memset32(engine->status_page.addr + 1000, 0, 4); in __live_lrc_gpr()
625 if (GRAPHICS_VER(engine->i915) < 9 && engine->class != RENDER_CLASS) in __live_lrc_gpr()
628 err = gpr_make_dirty(engine->kernel_context); in __live_lrc_gpr()
632 ce = intel_context_create(engine); in __live_lrc_gpr()
642 err = wait_for_submit(engine, rq, HZ / 2); in __live_lrc_gpr()
647 err = gpr_make_dirty(engine->kernel_context); in __live_lrc_gpr()
651 err = emit_semaphore_signal(engine->kernel_context, slot); in __live_lrc_gpr()
655 err = wait_for_submit(engine, rq, HZ / 2); in __live_lrc_gpr()
677 engine->name, in __live_lrc_gpr()
699 struct intel_engine_cs *engine; in live_lrc_gpr() local
713 for_each_engine(engine, gt, id) { in live_lrc_gpr()
714 st_engine_heartbeat_disable(engine); in live_lrc_gpr()
716 err = __live_lrc_gpr(engine, scratch, false); in live_lrc_gpr()
720 err = __live_lrc_gpr(engine, scratch, true); in live_lrc_gpr()
725 st_engine_heartbeat_enable(engine); in live_lrc_gpr()
740 i915_ggtt_offset(ce->engine->status_page.vma) + in create_timestamp()
768 *cs++ = i915_mmio_reg_offset(RING_CTX_TIMESTAMP(rq->engine->mmio_base)); in create_timestamp()
787 struct intel_engine_cs *engine; member
799 u32 *slot = memset32(arg->engine->status_page.addr + 1000, 0, 4); in __lrc_timestamp()
809 err = wait_for_submit(rq->engine, rq, HZ / 2); in __lrc_timestamp()
830 arg->engine->name, preempt ? "preempt" : "simple", in __lrc_timestamp()
838 arg->engine->name, preempt ? "preempt" : "simple", in __lrc_timestamp()
870 for_each_engine(data.engine, gt, id) { in live_lrc_timestamp()
873 st_engine_heartbeat_disable(data.engine); in live_lrc_timestamp()
878 tmp = intel_context_create(data.engine); in live_lrc_timestamp()
906 st_engine_heartbeat_enable(data.engine); in live_lrc_timestamp()
980 defaults = shmem_pin_map(ce->engine->default_state); in store_context()
1021 ce->engine->name); in store_context()
1042 shmem_unpin_map(ce->engine->default_state, defaults); in store_context()
1108 *cs++ = i915_ggtt_offset(ce->engine->status_page.vma) + in record_registers()
1151 defaults = shmem_pin_map(ce->engine->default_state); in load_context()
1180 ce->engine->name); in load_context()
1190 *cs++ = safe_poison(hw[dw] & get_lri_mask(ce->engine, in load_context()
1200 shmem_unpin_map(ce->engine->default_state, defaults); in load_context()
1241 *cs++ = i915_ggtt_offset(ce->engine->status_page.vma) + in poison_registers()
1261 static int compare_isolation(struct intel_engine_cs *engine, in compare_isolation() argument
1295 intel_gt_coherent_map_type(engine->gt, in compare_isolation()
1304 defaults = shmem_pin_map(ce->engine->default_state); in compare_isolation()
1333 engine->name); in compare_isolation()
1350 engine->name, dw, in compare_isolation()
1363 shmem_unpin_map(ce->engine->default_state, defaults); in compare_isolation()
1401 static int __lrc_isolation(struct intel_engine_cs *engine, u32 poison) in __lrc_isolation() argument
1403 u32 *sema = memset32(engine->status_page.addr + 1000, 0, 1); in __lrc_isolation()
1409 A = intel_context_create(engine); in __lrc_isolation()
1413 B = intel_context_create(engine); in __lrc_isolation()
1468 __func__, engine->name); in __lrc_isolation()
1478 err = compare_isolation(engine, ref, result, A, poison); in __lrc_isolation()
1495 static bool skip_isolation(const struct intel_engine_cs *engine) in skip_isolation() argument
1497 if (engine->class == COPY_ENGINE_CLASS && GRAPHICS_VER(engine->i915) == 9) in skip_isolation()
1500 if (engine->class == RENDER_CLASS && GRAPHICS_VER(engine->i915) == 11) in skip_isolation()
1509 struct intel_engine_cs *engine; in live_lrc_isolation() local
1528 for_each_engine(engine, gt, id) { in live_lrc_isolation()
1533 skip_isolation(engine)) in live_lrc_isolation()
1536 intel_engine_pm_get(engine); in live_lrc_isolation()
1540 result = __lrc_isolation(engine, poison[i]); in live_lrc_isolation()
1544 result = __lrc_isolation(engine, ~poison[i]); in live_lrc_isolation()
1548 intel_engine_pm_put(engine); in live_lrc_isolation()
1618 setup_per_ctx_bb(ce, ce->engine, emit_per_ctx_bb_canary); in wabb_ctx_setup()
1620 setup_indirect_ctx_bb(ce, ce->engine, emit_indirect_ctx_bb_canary); in wabb_ctx_setup()
1653 static int __lrc_wabb_ctx(struct intel_engine_cs *engine, bool per_ctx) in __lrc_wabb_ctx() argument
1658 a = intel_context_create(engine); in __lrc_wabb_ctx()
1665 b = intel_context_create(engine); in __lrc_wabb_ctx()
1677 GEM_BUG_ON(GRAPHICS_VER(engine->i915) == 12); in __lrc_wabb_ctx()
1712 struct intel_engine_cs *engine; in lrc_wabb_ctx() local
1716 for_each_engine(engine, gt, id) { in lrc_wabb_ctx()
1717 intel_engine_pm_get(engine); in lrc_wabb_ctx()
1718 err = __lrc_wabb_ctx(engine, per_ctx); in lrc_wabb_ctx()
1719 intel_engine_pm_put(engine); in lrc_wabb_ctx()
1741 static void garbage_reset(struct intel_engine_cs *engine, in garbage_reset() argument
1744 const unsigned int bit = I915_RESET_ENGINE + engine->id; in garbage_reset()
1745 unsigned long *lock = &engine->gt->reset.flags; in garbage_reset()
1749 tasklet_disable(&engine->sched_engine->tasklet); in garbage_reset()
1752 __intel_engine_reset_bh(engine, NULL); in garbage_reset()
1754 tasklet_enable(&engine->sched_engine->tasklet); in garbage_reset()
1772 ce->engine->context_size - in garbage()
1790 static int __lrc_garbage(struct intel_engine_cs *engine, struct rnd_state *prng) in __lrc_garbage() argument
1796 ce = intel_context_create(engine); in __lrc_garbage()
1806 if (wait_for_submit(engine, hang, HZ / 2)) { in __lrc_garbage()
1813 garbage_reset(engine, hang); in __lrc_garbage()
1815 intel_engine_flush_submission(engine); in __lrc_garbage()
1819 engine->name); in __lrc_garbage()
1826 engine->name); in __lrc_garbage()
1841 struct intel_engine_cs *engine; in live_lrc_garbage() local
1852 for_each_engine(engine, gt, id) { in live_lrc_garbage()
1856 if (!intel_has_reset_engine(engine->gt)) in live_lrc_garbage()
1859 intel_engine_pm_get(engine); in live_lrc_garbage()
1861 err = __lrc_garbage(engine, &prng); in live_lrc_garbage()
1865 intel_engine_pm_put(engine); in live_lrc_garbage()
1876 static int __live_pphwsp_runtime(struct intel_engine_cs *engine) in __live_pphwsp_runtime() argument
1883 ce = intel_context_create(engine); in __live_pphwsp_runtime()
1914 pr_err("%s: request not completed!\n", engine->name); in __live_pphwsp_runtime()
1918 igt_flush_test(engine->i915); in __live_pphwsp_runtime()
1921 engine->name, in __live_pphwsp_runtime()
1928 engine->name, in __live_pphwsp_runtime()
1945 struct intel_engine_cs *engine; in live_pphwsp_runtime() local
1954 for_each_engine(engine, gt, id) { in live_pphwsp_runtime()
1955 err = __live_pphwsp_runtime(engine); in live_pphwsp_runtime()