Lines Matching defs:engine

14 static void reset_heartbeat(struct intel_engine_cs *engine)
16 intel_engine_set_heartbeat(engine,
17 engine->defaults.heartbeat_interval_ms);
37 static int engine_sync_barrier(struct intel_engine_cs *engine)
39 return timeline_sync(engine->kernel_context->timeline);
90 static int __live_idle_pulse(struct intel_engine_cs *engine,
96 GEM_BUG_ON(!intel_engine_pm_is_awake(engine));
106 err = i915_active_acquire_preallocate_barrier(&p->active, engine);
116 GEM_BUG_ON(llist_empty(&engine->barrier_tasks));
118 err = fn(engine);
122 GEM_BUG_ON(!llist_empty(&engine->barrier_tasks));
124 if (engine_sync_barrier(engine)) {
125 struct drm_printer m = drm_err_printer(&engine->i915->drm, "pulse");
127 drm_printf(&m, "%s: no heartbeat pulse?\n", engine->name);
128 intel_engine_dump(engine, &m, "%s", engine->name);
134 GEM_BUG_ON(READ_ONCE(engine->serial) != engine->wakeref_serial);
139 struct drm_printer m = drm_err_printer(&engine->i915->drm, "pulse");
142 engine->name);
157 struct intel_engine_cs *engine;
163 for_each_engine(engine, gt, id) {
164 st_engine_heartbeat_disable(engine);
165 err = __live_idle_pulse(engine, intel_engine_flush_barriers);
166 st_engine_heartbeat_enable(engine);
177 struct intel_engine_cs *engine;
183 for_each_engine(engine, gt, id) {
184 st_engine_heartbeat_disable(engine);
185 err = __live_idle_pulse(engine, intel_engine_pulse);
186 st_engine_heartbeat_enable(engine);
203 static int __live_heartbeat_fast(struct intel_engine_cs *engine)
213 ce = intel_context_create(engine);
217 intel_engine_pm_get(engine);
219 err = intel_engine_set_heartbeat(engine, 1);
226 intel_engine_park_heartbeat(engine);
227 GEM_BUG_ON(engine->heartbeat.systole);
228 engine->serial++; /* pretend we are not idle! */
229 intel_engine_unpark_heartbeat(engine);
231 flush_delayed_work(&engine->heartbeat.work);
232 if (!delayed_work_pending(&engine->heartbeat.work)) {
234 engine->name, i);
240 rq = READ_ONCE(engine->heartbeat.systole);
247 while (rq == READ_ONCE(engine->heartbeat.systole))
258 engine->name,
272 engine->name,
278 reset_heartbeat(engine);
280 intel_engine_pm_put(engine);
288 struct intel_engine_cs *engine;
296 for_each_engine(engine, gt, id) {
297 err = __live_heartbeat_fast(engine);
305 static int __live_heartbeat_off(struct intel_engine_cs *engine)
309 intel_engine_pm_get(engine);
311 engine->serial++;
312 flush_delayed_work(&engine->heartbeat.work);
313 if (!delayed_work_pending(&engine->heartbeat.work)) {
315 engine->name);
320 err = intel_engine_set_heartbeat(engine, 0);
324 engine->serial++;
325 flush_delayed_work(&engine->heartbeat.work);
326 if (delayed_work_pending(&engine->heartbeat.work)) {
328 engine->name);
333 if (READ_ONCE(engine->heartbeat.systole)) {
335 engine->name);
341 reset_heartbeat(engine);
343 intel_engine_pm_put(engine);
350 struct intel_engine_cs *engine;
358 for_each_engine(engine, gt, id) {
359 if (!intel_engine_has_preemption(engine))
362 err = __live_heartbeat_off(engine);
393 void st_engine_heartbeat_disable(struct intel_engine_cs *engine)
395 engine->props.heartbeat_interval_ms = 0;
397 intel_engine_pm_get(engine);
398 intel_engine_park_heartbeat(engine);
401 void st_engine_heartbeat_enable(struct intel_engine_cs *engine)
403 intel_engine_pm_put(engine);
405 engine->props.heartbeat_interval_ms =
406 engine->defaults.heartbeat_interval_ms;
409 void st_engine_heartbeat_disable_no_pm(struct intel_engine_cs *engine)
411 engine->props.heartbeat_interval_ms = 0;
419 if (intel_engine_pm_get_if_awake(engine)) {
420 intel_engine_park_heartbeat(engine);
421 intel_engine_pm_put(engine);
425 void st_engine_heartbeat_enable_no_pm(struct intel_engine_cs *engine)
427 engine->props.heartbeat_interval_ms =
428 engine->defaults.heartbeat_interval_ms;