Lines Matching +full:idle +full:- +full:state +full:- +full:name

1 // SPDX-License-Identifier: GPL-2.0
26 rq->sched.attr.priority = I915_PRIORITY_BARRIER; in request_sync()
35 lockdep_unpin_lock(&tl->mutex, rq->cookie); in request_sync()
36 mutex_unlock(&tl->mutex); in request_sync()
46 struct intel_timeline *tl = ce->timeline; in context_sync()
49 mutex_lock(&tl->mutex); in context_sync()
54 if (list_empty(&tl->requests)) in context_sync()
57 rq = list_last_entry(&tl->requests, typeof(*rq), link); in context_sync()
68 mutex_unlock(&tl->mutex); in context_sync()
71 i915_active_unlock_wait(&ce->active); in context_sync()
90 vaddr = i915_gem_object_pin_map_unlocked(ce->state->obj, in __live_context_size()
91 intel_gt_coherent_map_type(engine->gt, in __live_context_size()
92 ce->state->obj, in __live_context_size()
108 * to be written into the context state. in __live_context_size()
112 vaddr += engine->context_size - I915_GTT_PAGE_SIZE; in __live_context_size()
137 pr_err("%s context overwrote trailing red-zone!", engine->name); in __live_context_size()
138 err = -EINVAL; in __live_context_size()
142 i915_gem_object_unpin_map(ce->state->obj); in __live_context_size()
163 if (!engine->context_size) in live_context_size()
169 * Hide the old default state -- we lie about the context size in live_context_size()
170 * and get confused when the default state is smaller than in live_context_size()
172 * active state is sufficient, we are only checking that we in live_context_size()
175 saved = fetch_and_zero(&engine->default_state); in live_context_size()
178 engine->context_size += I915_GTT_PAGE_SIZE; in live_context_size()
182 engine->context_size -= I915_GTT_PAGE_SIZE; in live_context_size()
184 engine->default_state = saved; in live_context_size()
204 * switch as the final write from the context-save will be after in __live_active_context()
208 * to unpin the context from the next idle-barrier. in __live_active_context()
211 * subsequent idle-barrier (emitted when the engine wakeref hits 0 in __live_active_context()
214 * In GuC submission mode we don't use idle barriers and we instead in __live_active_context()
223 engine->name, __func__); in __live_active_context()
224 return -EINVAL; in __live_active_context()
231 saved_heartbeat = engine->props.heartbeat_interval_ms; in __live_active_context()
232 engine->props.heartbeat_interval_ms = 0; in __live_active_context()
249 /* Context will be kept active until after an idle-barrier. */ in __live_active_context()
250 if (i915_active_is_idle(&ce->active)) { in __live_active_context()
251 pr_err("context is not active; expected idle-barrier (%s pass %d)\n", in __live_active_context()
252 engine->name, pass); in __live_active_context()
253 err = -EINVAL; in __live_active_context()
258 pr_err("%s is asleep before idle-barrier\n", in __live_active_context()
259 engine->name); in __live_active_context()
260 err = -EINVAL; in __live_active_context()
270 /* Now make sure our idle-barriers are flushed */ in __live_active_context()
276 err = context_sync(engine->kernel_context); in __live_active_context()
280 if (!i915_active_is_idle(&ce->active)) { in __live_active_context()
282 err = -EINVAL; in __live_active_context()
288 struct drm_printer p = drm_dbg_printer(&engine->i915->drm, in __live_active_context()
292 "%s is still awake:%d after idle-barriers\n", in __live_active_context()
293 engine->name, in __live_active_context()
294 atomic_read(&engine->wakeref.count)); in __live_active_context()
297 err = -EINVAL; in __live_active_context()
302 engine->props.heartbeat_interval_ms = saved_heartbeat; in __live_active_context()
319 err = igt_flush_test(gt->i915); in live_active_context()
363 * Check that our idle barriers do not interfere with normal in __live_remote_context()
367 * clobber the idle-barrier. in __live_remote_context()
369 * In GuC submission mode we don't use idle barriers. in __live_remote_context()
376 engine->name, __func__); in __live_remote_context()
377 return -EINVAL; in __live_remote_context()
390 saved_heartbeat = engine->props.heartbeat_interval_ms; in __live_remote_context()
391 engine->props.heartbeat_interval_ms = 0; in __live_remote_context()
399 err = __remote_sync(engine->kernel_context, remote); in __live_remote_context()
403 if (i915_active_is_idle(&remote->active)) { in __live_remote_context()
404 pr_err("remote context is not active; expected idle-barrier (%s pass %d)\n", in __live_remote_context()
405 engine->name, pass); in __live_remote_context()
406 err = -EINVAL; in __live_remote_context()
412 engine->props.heartbeat_interval_ms = saved_heartbeat; in __live_remote_context()
432 err = igt_flush_test(gt->i915); in live_remote_context()