Lines Matching full:engine
32 static int engine_sync_barrier(struct intel_engine_cs *engine) in engine_sync_barrier() argument
34 return timeline_sync(engine->kernel_context->timeline); in engine_sync_barrier()
85 static int __live_idle_pulse(struct intel_engine_cs *engine, in __live_idle_pulse() argument
91 GEM_BUG_ON(!intel_engine_pm_is_awake(engine)); in __live_idle_pulse()
101 err = i915_active_acquire_preallocate_barrier(&p->active, engine); in __live_idle_pulse()
111 GEM_BUG_ON(llist_empty(&engine->barrier_tasks)); in __live_idle_pulse()
113 err = fn(engine); in __live_idle_pulse()
117 GEM_BUG_ON(!llist_empty(&engine->barrier_tasks)); in __live_idle_pulse()
119 if (engine_sync_barrier(engine)) { in __live_idle_pulse()
122 pr_err("%s: no heartbeat pulse?\n", engine->name); in __live_idle_pulse()
123 intel_engine_dump(engine, &m, "%s", engine->name); in __live_idle_pulse()
129 GEM_BUG_ON(READ_ONCE(engine->serial) != engine->wakeref_serial); in __live_idle_pulse()
137 engine->name); in __live_idle_pulse()
152 struct intel_engine_cs *engine; in live_idle_flush() local
158 for_each_engine(engine, gt, id) { in live_idle_flush()
159 st_engine_heartbeat_disable(engine); in live_idle_flush()
160 err = __live_idle_pulse(engine, intel_engine_flush_barriers); in live_idle_flush()
161 st_engine_heartbeat_enable(engine); in live_idle_flush()
172 struct intel_engine_cs *engine; in live_idle_pulse() local
178 for_each_engine(engine, gt, id) { in live_idle_pulse()
179 st_engine_heartbeat_disable(engine); in live_idle_pulse()
180 err = __live_idle_pulse(engine, intel_engine_pulse); in live_idle_pulse()
181 st_engine_heartbeat_enable(engine); in live_idle_pulse()
198 static int __live_heartbeat_fast(struct intel_engine_cs *engine) in __live_heartbeat_fast() argument
207 ce = intel_context_create(engine); in __live_heartbeat_fast()
211 intel_engine_pm_get(engine); in __live_heartbeat_fast()
213 err = intel_engine_set_heartbeat(engine, 1); in __live_heartbeat_fast()
220 while (READ_ONCE(engine->heartbeat.systole)) in __live_heartbeat_fast()
221 flush_delayed_work(&engine->heartbeat.work); in __live_heartbeat_fast()
223 engine->serial++; /* quick, pretend we are not idle! */ in __live_heartbeat_fast()
224 flush_delayed_work(&engine->heartbeat.work); in __live_heartbeat_fast()
225 if (!delayed_work_pending(&engine->heartbeat.work)) { in __live_heartbeat_fast()
227 engine->name); in __live_heartbeat_fast()
233 rq = READ_ONCE(engine->heartbeat.systole); in __live_heartbeat_fast()
240 while (rq == READ_ONCE(engine->heartbeat.systole)) in __live_heartbeat_fast()
251 engine->name, in __live_heartbeat_fast()
259 engine->name, in __live_heartbeat_fast()
265 intel_engine_set_heartbeat(engine, CONFIG_DRM_I915_HEARTBEAT_INTERVAL); in __live_heartbeat_fast()
267 intel_engine_pm_put(engine); in __live_heartbeat_fast()
275 struct intel_engine_cs *engine; in live_heartbeat_fast() local
283 for_each_engine(engine, gt, id) { in live_heartbeat_fast()
284 err = __live_heartbeat_fast(engine); in live_heartbeat_fast()
292 static int __live_heartbeat_off(struct intel_engine_cs *engine) in __live_heartbeat_off() argument
296 intel_engine_pm_get(engine); in __live_heartbeat_off()
298 engine->serial++; in __live_heartbeat_off()
299 flush_delayed_work(&engine->heartbeat.work); in __live_heartbeat_off()
300 if (!delayed_work_pending(&engine->heartbeat.work)) { in __live_heartbeat_off()
302 engine->name); in __live_heartbeat_off()
307 err = intel_engine_set_heartbeat(engine, 0); in __live_heartbeat_off()
311 engine->serial++; in __live_heartbeat_off()
312 flush_delayed_work(&engine->heartbeat.work); in __live_heartbeat_off()
313 if (delayed_work_pending(&engine->heartbeat.work)) { in __live_heartbeat_off()
315 engine->name); in __live_heartbeat_off()
320 if (READ_ONCE(engine->heartbeat.systole)) { in __live_heartbeat_off()
322 engine->name); in __live_heartbeat_off()
328 intel_engine_set_heartbeat(engine, CONFIG_DRM_I915_HEARTBEAT_INTERVAL); in __live_heartbeat_off()
330 intel_engine_pm_put(engine); in __live_heartbeat_off()
337 struct intel_engine_cs *engine; in live_heartbeat_off() local
345 for_each_engine(engine, gt, id) { in live_heartbeat_off()
346 if (!intel_engine_has_preemption(engine)) in live_heartbeat_off()
349 err = __live_heartbeat_off(engine); in live_heartbeat_off()
380 void st_engine_heartbeat_disable(struct intel_engine_cs *engine) in st_engine_heartbeat_disable() argument
382 engine->props.heartbeat_interval_ms = 0; in st_engine_heartbeat_disable()
384 intel_engine_pm_get(engine); in st_engine_heartbeat_disable()
385 intel_engine_park_heartbeat(engine); in st_engine_heartbeat_disable()
388 void st_engine_heartbeat_enable(struct intel_engine_cs *engine) in st_engine_heartbeat_enable() argument
390 intel_engine_pm_put(engine); in st_engine_heartbeat_enable()
392 engine->props.heartbeat_interval_ms = in st_engine_heartbeat_enable()
393 engine->defaults.heartbeat_interval_ms; in st_engine_heartbeat_enable()