Lines Matching +full:spin +full:- +full:table
2 * SPDX-License-Identifier: MIT
30 ce->ring = __intel_context_ring_size(SZ_16K); in mocs_context_create()
40 err = -ETIME; in request_add_sync()
46 static int request_add_spin(struct i915_request *rq, struct igt_spinner *spin) in request_add_spin() argument
52 if (spin && !igt_wait_for_spinner(spin, rq)) in request_add_spin()
53 err = -ETIME; in request_add_spin()
65 obj = i915_gem_object_create_internal(gt->i915, PAGE_SIZE); in create_scratch()
71 vma = i915_vma_instance(obj, >->ggtt->vm, NULL); in create_scratch()
88 struct drm_i915_mocs_table table; in live_mocs_init() local
94 flags = get_mocs_settings(gt->i915, &table); in live_mocs_init()
96 return -EINVAL; in live_mocs_init()
99 arg->l3cc = table; in live_mocs_init()
102 arg->mocs = table; in live_mocs_init()
104 arg->scratch = create_scratch(gt); in live_mocs_init()
105 if (IS_ERR(arg->scratch)) in live_mocs_init()
106 return PTR_ERR(arg->scratch); in live_mocs_init()
108 arg->vaddr = i915_gem_object_pin_map(arg->scratch->obj, I915_MAP_WB); in live_mocs_init()
109 if (IS_ERR(arg->vaddr)) { in live_mocs_init()
110 err = PTR_ERR(arg->vaddr); in live_mocs_init()
117 i915_vma_unpin_and_release(&arg->scratch, 0); in live_mocs_init()
123 i915_vma_unpin_and_release(&arg->scratch, I915_VMA_RELEASE_MAP); in live_mocs_fini()
155 const struct drm_i915_mocs_table *table, in read_mocs_table() argument
160 if (HAS_GLOBAL_MOCS_REGISTERS(rq->engine->i915)) in read_mocs_table()
163 addr = mocs_offset(rq->engine); in read_mocs_table()
165 return read_regs(rq, addr, table->n_entries, offset); in read_mocs_table()
169 const struct drm_i915_mocs_table *table, in read_l3cc_table() argument
174 return read_regs(rq, addr, (table->n_entries + 1) / 2, offset); in read_l3cc_table()
178 const struct drm_i915_mocs_table *table, in check_mocs_table() argument
184 for_each_mocs(expect, table, i) { in check_mocs_table()
187 engine->name, i, **vaddr, expect); in check_mocs_table()
188 return -EINVAL; in check_mocs_table()
207 const struct drm_i915_mocs_table *table, in check_l3cc_table() argument
215 for_each_l3cc(expect, table, i) { in check_l3cc_table()
216 if (!mcr_range(engine->i915, reg) && **vaddr != expect) { in check_l3cc_table()
218 engine->name, i, **vaddr, expect); in check_l3cc_table()
219 return -EINVAL; in check_l3cc_table()
231 struct i915_vma *vma = arg->scratch; in check_mocs_engine()
237 memset32(arg->vaddr, STACK_MAGIC, PAGE_SIZE / sizeof(u32)); in check_mocs_engine()
244 err = i915_request_await_object(rq, vma->obj, true); in check_mocs_engine()
252 err = read_mocs_table(rq, &arg->mocs, &offset); in check_mocs_engine()
253 if (!err && ce->engine->class == RENDER_CLASS) in check_mocs_engine()
254 err = read_l3cc_table(rq, &arg->l3cc, &offset); in check_mocs_engine()
255 offset -= i915_ggtt_offset(vma); in check_mocs_engine()
263 vaddr = arg->vaddr; in check_mocs_engine()
265 err = check_mocs_table(ce->engine, &arg->mocs, &vaddr); in check_mocs_engine()
266 if (!err && ce->engine->class == RENDER_CLASS) in check_mocs_engine()
267 err = check_l3cc_table(ce->engine, &arg->l3cc, &vaddr); in check_mocs_engine()
271 GEM_BUG_ON(arg->vaddr + offset != vaddr); in check_mocs_engine()
283 /* Basic check the system is configured with the expected mocs table */ in live_mocs_kernel()
291 err = check_mocs_engine(&mocs, engine->kernel_context); in live_mocs_kernel()
309 /* Every new context should see the same mocs table */ in live_mocs_clean()
337 struct igt_spinner spin; in active_engine_reset() local
341 err = igt_spinner_init(&spin, ce->engine->gt); in active_engine_reset()
345 rq = igt_spinner_create_request(&spin, ce, MI_NOOP); in active_engine_reset()
347 igt_spinner_fini(&spin); in active_engine_reset()
351 err = request_add_spin(rq, &spin); in active_engine_reset()
353 err = intel_engine_reset(ce->engine, reason); in active_engine_reset()
355 igt_spinner_end(&spin); in active_engine_reset()
356 igt_spinner_fini(&spin); in active_engine_reset()
366 err = intel_engine_reset(ce->engine, "mocs"); in __live_mocs_reset()
382 intel_gt_reset(ce->engine->gt, ce->engine->mask, "mocs"); in __live_mocs_reset()
399 /* Check the mocs setup is retained over per-engine and global resets */ in live_mocs_reset()
439 struct drm_i915_mocs_table table; in intel_mocs_live_selftests() local
441 if (!get_mocs_settings(i915, &table)) in intel_mocs_live_selftests()
444 return intel_gt_live_subtests(tests, &i915->gt); in intel_mocs_live_selftests()