Lines Matching +full:spin +full:- +full:table

1 // SPDX-License-Identifier: MIT
17 struct drm_i915_mocs_table table; member
33 ce->ring_size = SZ_16K; in mocs_context_create()
43 err = -ETIME; in request_add_sync()
49 static int request_add_spin(struct i915_request *rq, struct igt_spinner *spin) in request_add_spin() argument
55 if (spin && !igt_wait_for_spinner(spin, rq)) in request_add_spin()
56 err = -ETIME; in request_add_spin()
69 flags = get_mocs_settings(gt->i915, &arg->table); in live_mocs_init()
71 return -EINVAL; in live_mocs_init()
74 arg->l3cc = &arg->table; in live_mocs_init()
77 arg->mocs = &arg->table; in live_mocs_init()
79 arg->scratch = in live_mocs_init()
80 __vm_create_scratch_for_read_pinned(&gt->ggtt->vm, PAGE_SIZE); in live_mocs_init()
81 if (IS_ERR(arg->scratch)) in live_mocs_init()
82 return PTR_ERR(arg->scratch); in live_mocs_init()
84 arg->vaddr = i915_gem_object_pin_map_unlocked(arg->scratch->obj, I915_MAP_WB); in live_mocs_init()
85 if (IS_ERR(arg->vaddr)) { in live_mocs_init()
86 err = PTR_ERR(arg->vaddr); in live_mocs_init()
93 i915_vma_unpin_and_release(&arg->scratch, 0); in live_mocs_init()
99 i915_vma_unpin_and_release(&arg->scratch, I915_VMA_RELEASE_MAP); in live_mocs_fini()
131 const struct drm_i915_mocs_table *table, in read_mocs_table() argument
134 struct intel_gt *gt = rq->engine->gt; in read_mocs_table()
137 if (!table) in read_mocs_table()
140 if (HAS_GLOBAL_MOCS_REGISTERS(rq->i915)) in read_mocs_table()
141 addr = global_mocs_offset() + gt->uncore->gsi_offset; in read_mocs_table()
143 addr = mocs_offset(rq->engine); in read_mocs_table()
145 return read_regs(rq, addr, table->n_entries, offset); in read_mocs_table()
149 const struct drm_i915_mocs_table *table, in read_l3cc_table() argument
154 if (!table) in read_l3cc_table()
157 return read_regs(rq, addr, (table->n_entries + 1) / 2, offset); in read_l3cc_table()
161 const struct drm_i915_mocs_table *table, in check_mocs_table() argument
167 if (!table) in check_mocs_table()
170 for_each_mocs(expect, table, i) { in check_mocs_table()
173 engine->name, i, **vaddr, expect); in check_mocs_table()
174 return -EINVAL; in check_mocs_table()
193 const struct drm_i915_mocs_table *table, in check_l3cc_table() argument
201 if (!table) in check_l3cc_table()
204 for_each_l3cc(expect, table, i) { in check_l3cc_table()
205 if (!mcr_range(engine->i915, reg) && **vaddr != expect) { in check_l3cc_table()
207 engine->name, i, **vaddr, expect); in check_l3cc_table()
208 return -EINVAL; in check_l3cc_table()
220 struct i915_vma *vma = arg->scratch; in check_mocs_engine()
226 memset32(arg->vaddr, STACK_MAGIC, PAGE_SIZE / sizeof(u32)); in check_mocs_engine()
237 err = read_mocs_table(rq, arg->mocs, &offset); in check_mocs_engine()
238 if (!err && ce->engine->class == RENDER_CLASS) in check_mocs_engine()
239 err = read_l3cc_table(rq, arg->l3cc, &offset); in check_mocs_engine()
240 offset -= i915_ggtt_offset(vma); in check_mocs_engine()
248 vaddr = arg->vaddr; in check_mocs_engine()
250 err = check_mocs_table(ce->engine, arg->mocs, &vaddr); in check_mocs_engine()
251 if (!err && ce->engine->class == RENDER_CLASS) in check_mocs_engine()
252 err = check_l3cc_table(ce->engine, arg->l3cc, &vaddr); in check_mocs_engine()
256 GEM_BUG_ON(arg->vaddr + offset != vaddr); in check_mocs_engine()
268 /* Basic check the system is configured with the expected mocs table */ in live_mocs_kernel()
276 err = check_mocs_engine(&mocs, engine->kernel_context); in live_mocs_kernel()
294 /* Every new context should see the same mocs table */ in live_mocs_clean()
323 struct igt_spinner spin; in active_engine_reset() local
327 err = igt_spinner_init(&spin, ce->engine->gt); in active_engine_reset()
331 rq = igt_spinner_create_request(&spin, ce, MI_NOOP); in active_engine_reset()
333 igt_spinner_fini(&spin); in active_engine_reset()
337 err = request_add_spin(rq, &spin); in active_engine_reset()
339 err = intel_engine_reset(ce->engine, reason); in active_engine_reset()
345 igt_spinner_end(&spin); in active_engine_reset()
346 igt_spinner_fini(&spin); in active_engine_reset()
354 struct intel_gt *gt = ce->engine->gt; in __live_mocs_reset()
359 err = intel_engine_reset(ce->engine, "mocs"); in __live_mocs_reset()
378 intel_gt_reset(gt, ce->engine->mask, "mocs"); in __live_mocs_reset()
396 /* Check the mocs setup is retained over per-engine and global resets */ in live_mocs_reset()
447 struct drm_i915_mocs_table table; in intel_mocs_live_selftests() local
449 if (!get_mocs_settings(i915, &table)) in intel_mocs_live_selftests()