Lines Matching defs:engine

20 static void intel_gsc_idle_msg_enable(struct intel_engine_cs *engine)
22 struct drm_i915_private *i915 = engine->i915;
24 if (MEDIA_VER(i915) >= 13 && engine->id == GSC0) {
25 intel_uncore_write(engine->gt->uncore,
29 intel_uncore_write(engine->gt->uncore,
42 int type = intel_gt_coherent_map_type(ce->engine->gt, obj, true);
60 struct intel_engine_cs *engine =
61 container_of(wf, typeof(*engine), wakeref);
64 ENGINE_TRACE(engine, "\n");
66 engine->wakeref_track = intel_gt_pm_get(engine->gt);
69 ce = engine->kernel_context;
75 intel_engine_flush_submission(engine);
91 if (engine->unpark)
92 engine->unpark(engine);
94 intel_breadcrumbs_unpark(engine->breadcrumbs);
95 intel_engine_unpark_heartbeat(engine);
103 ewma__engine_latency_add(&rq->engine->latency,
111 struct intel_engine_cs *engine)
113 struct intel_gt_timelines *timelines = &engine->gt->timelines;
115 ENGINE_TRACE(engine, "parking\n");
124 __intel_gt_pm_get(engine->gt);
125 rq->context->wakeref = intel_wakeref_track(&engine->gt->wakeref);
130 * engine->wakeref.counter or our timeline->active_count.
146 __intel_wakeref_defer_park(&engine->wakeref);
151 static bool switch_to_kernel_context(struct intel_engine_cs *engine)
153 struct intel_context *ce = engine->kernel_context;
167 if (intel_engine_uses_guc(engine))
171 if (intel_gt_is_wedged(engine->gt))
175 GEM_BUG_ON(ce->timeline->hwsp_ggtt != engine->status_page.vma);
178 if (engine->wakeref_serial == engine->serial)
186 * else from creating a request on this engine. This also requires
189 * This should hold true as we can only park the engine after
196 * A new gpu user will be waiting on the engine-pm to start their
197 * engine_unpark. New waiters are predicated on engine->wakeref.count
199 * engine->wakeref.
206 * engine->wakeref.count, we may see the request completion and retire
207 * it causing an underflow of the engine->wakeref.
218 engine->wakeref_serial = engine->serial + 1;
223 if (likely(!__i915_request_commit(rq))) { /* engine should be idle! */
237 __queue_and_release_pm(rq, ce->timeline, engine);
245 static void call_idle_barriers(struct intel_engine_cs *engine)
249 llist_for_each_safe(node, next, llist_del_all(&engine->barrier_tasks)) {
260 struct intel_engine_cs *engine =
261 container_of(wf, typeof(*engine), wakeref);
263 engine->saturated = 0;
272 if (!switch_to_kernel_context(engine))
275 ENGINE_TRACE(engine, "parked\n");
277 call_idle_barriers(engine); /* cleanup after wedging */
279 intel_engine_park_heartbeat(engine);
280 intel_breadcrumbs_park(engine->breadcrumbs);
282 if (engine->park)
283 engine->park(engine);
286 intel_gt_pm_put_async(engine->gt, engine->wakeref_track);
295 void intel_engine_init__pm(struct intel_engine_cs *engine)
297 intel_wakeref_init(&engine->wakeref, engine->i915, &wf_ops, engine->name);
298 intel_engine_init_heartbeat(engine);
300 intel_gsc_idle_msg_enable(engine);
305 * an engine.
306 * @engine: The engine whose pinned contexts we want to reset.
311 void intel_engine_reset_pinned_contexts(struct intel_engine_cs *engine)
315 list_for_each_entry(ce, &engine->pinned_contexts_list,
318 if (ce == engine->kernel_context)