Lines Matching refs:engine
50 int (*init_legacy)(struct intel_engine_cs *engine);
51 int (*init_execlists)(struct intel_engine_cs *engine);
269 struct intel_engine_cs *engine; in intel_engine_setup() local
285 GEM_BUG_ON(dev_priv->engine[id]); in intel_engine_setup()
286 engine = kzalloc(sizeof(*engine), GFP_KERNEL); in intel_engine_setup()
287 if (!engine) in intel_engine_setup()
290 engine->id = id; in intel_engine_setup()
291 engine->i915 = dev_priv; in intel_engine_setup()
292 __sprint_engine_name(engine->name, info); in intel_engine_setup()
293 engine->hw_id = engine->guc_id = info->hw_id; in intel_engine_setup()
294 engine->mmio_base = __engine_mmio_base(dev_priv, info->mmio_bases); in intel_engine_setup()
295 engine->class = info->class; in intel_engine_setup()
296 engine->instance = info->instance; in intel_engine_setup()
298 engine->uabi_id = info->uabi_id; in intel_engine_setup()
299 engine->uabi_class = intel_engine_classes[info->class].uabi_class; in intel_engine_setup()
301 engine->context_size = __intel_engine_context_size(dev_priv, in intel_engine_setup()
302 engine->class); in intel_engine_setup()
303 if (WARN_ON(engine->context_size > BIT(20))) in intel_engine_setup()
304 engine->context_size = 0; in intel_engine_setup()
305 if (engine->context_size) in intel_engine_setup()
309 engine->schedule = NULL; in intel_engine_setup()
311 seqlock_init(&engine->stats.lock); in intel_engine_setup()
313 ATOMIC_INIT_NOTIFIER_HEAD(&engine->context_status_notifier); in intel_engine_setup()
315 dev_priv->engine_class[info->class][info->instance] = engine; in intel_engine_setup()
316 dev_priv->engine[id] = engine; in intel_engine_setup()
330 struct intel_engine_cs *engine; in intel_engines_init_mmio() local
372 for_each_engine(engine, dev_priv, id) in intel_engines_init_mmio()
373 kfree(engine); in intel_engines_init_mmio()
385 struct intel_engine_cs *engine; in intel_engines_init() local
389 for_each_engine(engine, dev_priv, id) { in intel_engines_init()
391 &intel_engine_classes[engine->class]; in intel_engines_init()
392 int (*init)(struct intel_engine_cs *engine); in intel_engines_init()
405 err = init(engine); in intel_engines_init()
409 GEM_BUG_ON(!engine->submit_request); in intel_engines_init()
415 for_each_engine(engine, dev_priv, id) { in intel_engines_init()
417 kfree(engine); in intel_engines_init()
418 dev_priv->engine[id] = NULL; in intel_engines_init()
420 dev_priv->gt.cleanup_engine(engine); in intel_engines_init()
426 void intel_engine_init_global_seqno(struct intel_engine_cs *engine, u32 seqno) in intel_engine_init_global_seqno() argument
428 struct drm_i915_private *dev_priv = engine->i915; in intel_engine_init_global_seqno()
439 I915_WRITE(RING_SYNC_0(engine->mmio_base), 0); in intel_engine_init_global_seqno()
440 I915_WRITE(RING_SYNC_1(engine->mmio_base), 0); in intel_engine_init_global_seqno()
442 I915_WRITE(RING_SYNC_2(engine->mmio_base), 0); in intel_engine_init_global_seqno()
445 intel_write_status_page(engine, I915_GEM_HWS_INDEX, seqno); in intel_engine_init_global_seqno()
446 clear_bit(ENGINE_IRQ_BREADCRUMB, &engine->irq_posted); in intel_engine_init_global_seqno()
451 intel_engine_wakeup(engine); in intel_engine_init_global_seqno()
453 GEM_BUG_ON(intel_engine_get_seqno(engine) != seqno); in intel_engine_init_global_seqno()
456 static void intel_engine_init_batch_pool(struct intel_engine_cs *engine) in intel_engine_init_batch_pool() argument
458 i915_gem_batch_pool_init(&engine->batch_pool, engine); in intel_engine_init_batch_pool()
461 static void intel_engine_init_execlist(struct intel_engine_cs *engine) in intel_engine_init_execlist() argument
463 struct intel_engine_execlists * const execlists = &engine->execlists; in intel_engine_init_execlist()
482 void intel_engine_setup_common(struct intel_engine_cs *engine) in intel_engine_setup_common() argument
484 i915_timeline_init(engine->i915, &engine->timeline, engine->name); in intel_engine_setup_common()
485 lockdep_set_subclass(&engine->timeline.lock, TIMELINE_ENGINE); in intel_engine_setup_common()
487 intel_engine_init_execlist(engine); in intel_engine_setup_common()
488 intel_engine_init_hangcheck(engine); in intel_engine_setup_common()
489 intel_engine_init_batch_pool(engine); in intel_engine_setup_common()
490 intel_engine_init_cmd_parser(engine); in intel_engine_setup_common()
493 int intel_engine_create_scratch(struct intel_engine_cs *engine, in intel_engine_create_scratch() argument
500 WARN_ON(engine->scratch); in intel_engine_create_scratch()
502 obj = i915_gem_object_create_stolen(engine->i915, size); in intel_engine_create_scratch()
504 obj = i915_gem_object_create_internal(engine->i915, size); in intel_engine_create_scratch()
510 vma = i915_vma_instance(obj, &engine->i915->ggtt.vm, NULL); in intel_engine_create_scratch()
520 engine->scratch = vma; in intel_engine_create_scratch()
528 void intel_engine_cleanup_scratch(struct intel_engine_cs *engine) in intel_engine_cleanup_scratch() argument
530 i915_vma_unpin_and_release(&engine->scratch); in intel_engine_cleanup_scratch()
533 static void cleanup_phys_status_page(struct intel_engine_cs *engine) in cleanup_phys_status_page() argument
535 struct drm_i915_private *dev_priv = engine->i915; in cleanup_phys_status_page()
541 engine->status_page.page_addr = NULL; in cleanup_phys_status_page()
544 static void cleanup_status_page(struct intel_engine_cs *engine) in cleanup_status_page() argument
549 vma = fetch_and_zero(&engine->status_page.vma); in cleanup_status_page()
562 static int init_status_page(struct intel_engine_cs *engine) in init_status_page() argument
570 obj = i915_gem_object_create_internal(engine->i915, PAGE_SIZE); in init_status_page()
580 vma = i915_vma_instance(obj, &engine->i915->ggtt.vm, NULL); in init_status_page()
587 if (!HAS_LLC(engine->i915)) in init_status_page()
611 engine->status_page.vma = vma; in init_status_page()
612 engine->status_page.ggtt_offset = i915_ggtt_offset(vma); in init_status_page()
613 engine->status_page.page_addr = memset(vaddr, 0, PAGE_SIZE); in init_status_page()
623 static int init_phys_status_page(struct intel_engine_cs *engine) in init_phys_status_page() argument
625 struct drm_i915_private *dev_priv = engine->i915; in init_phys_status_page()
627 GEM_BUG_ON(engine->id != RCS); in init_phys_status_page()
634 engine->status_page.page_addr = dev_priv->status_page_dmah->vaddr; in init_phys_status_page()
635 memset(engine->status_page.page_addr, 0, PAGE_SIZE); in init_phys_status_page()
641 struct intel_engine_cs *engine) in __intel_context_unpin() argument
643 intel_context_unpin(to_intel_context(ctx, engine)); in __intel_context_unpin()
657 int intel_engine_init_common(struct intel_engine_cs *engine) in intel_engine_init_common() argument
659 struct drm_i915_private *i915 = engine->i915; in intel_engine_init_common()
663 engine->set_default_submission(engine); in intel_engine_init_common()
672 ce = intel_context_pin(i915->kernel_context, engine); in intel_engine_init_common()
681 ce = intel_context_pin(i915->preempt_context, engine); in intel_engine_init_common()
688 ret = intel_engine_init_breadcrumbs(engine); in intel_engine_init_common()
693 ret = init_phys_status_page(engine); in intel_engine_init_common()
695 ret = init_status_page(engine); in intel_engine_init_common()
702 intel_engine_fini_breadcrumbs(engine); in intel_engine_init_common()
705 __intel_context_unpin(i915->preempt_context, engine); in intel_engine_init_common()
708 __intel_context_unpin(i915->kernel_context, engine); in intel_engine_init_common()
719 void intel_engine_cleanup_common(struct intel_engine_cs *engine) in intel_engine_cleanup_common() argument
721 struct drm_i915_private *i915 = engine->i915; in intel_engine_cleanup_common()
723 intel_engine_cleanup_scratch(engine); in intel_engine_cleanup_common()
725 if (HWS_NEEDS_PHYSICAL(engine->i915)) in intel_engine_cleanup_common()
726 cleanup_phys_status_page(engine); in intel_engine_cleanup_common()
728 cleanup_status_page(engine); in intel_engine_cleanup_common()
730 intel_engine_fini_breadcrumbs(engine); in intel_engine_cleanup_common()
731 intel_engine_cleanup_cmd_parser(engine); in intel_engine_cleanup_common()
732 i915_gem_batch_pool_fini(&engine->batch_pool); in intel_engine_cleanup_common()
734 if (engine->default_state) in intel_engine_cleanup_common()
735 i915_gem_object_put(engine->default_state); in intel_engine_cleanup_common()
738 __intel_context_unpin(i915->preempt_context, engine); in intel_engine_cleanup_common()
739 __intel_context_unpin(i915->kernel_context, engine); in intel_engine_cleanup_common()
741 i915_timeline_fini(&engine->timeline); in intel_engine_cleanup_common()
744 u64 intel_engine_get_active_head(const struct intel_engine_cs *engine) in intel_engine_get_active_head() argument
746 struct drm_i915_private *dev_priv = engine->i915; in intel_engine_get_active_head()
750 acthd = I915_READ64_2x32(RING_ACTHD(engine->mmio_base), in intel_engine_get_active_head()
751 RING_ACTHD_UDW(engine->mmio_base)); in intel_engine_get_active_head()
753 acthd = I915_READ(RING_ACTHD(engine->mmio_base)); in intel_engine_get_active_head()
760 u64 intel_engine_get_last_batch_head(const struct intel_engine_cs *engine) in intel_engine_get_last_batch_head() argument
762 struct drm_i915_private *dev_priv = engine->i915; in intel_engine_get_last_batch_head()
766 bbaddr = I915_READ64_2x32(RING_BBADDR(engine->mmio_base), in intel_engine_get_last_batch_head()
767 RING_BBADDR_UDW(engine->mmio_base)); in intel_engine_get_last_batch_head()
769 bbaddr = I915_READ(RING_BBADDR(engine->mmio_base)); in intel_engine_get_last_batch_head()
774 int intel_engine_stop_cs(struct intel_engine_cs *engine) in intel_engine_stop_cs() argument
776 struct drm_i915_private *dev_priv = engine->i915; in intel_engine_stop_cs()
777 const u32 base = engine->mmio_base; in intel_engine_stop_cs()
784 GEM_TRACE("%s\n", engine->name); in intel_engine_stop_cs()
793 GEM_TRACE("%s: timed out on STOP_RING -> IDLE\n", engine->name); in intel_engine_stop_cs()
890 void intel_engine_get_instdone(struct intel_engine_cs *engine, in intel_engine_get_instdone() argument
893 struct drm_i915_private *dev_priv = engine->i915; in intel_engine_get_instdone()
894 u32 mmio_base = engine->mmio_base; in intel_engine_get_instdone()
904 if (engine->id != RCS) in intel_engine_get_instdone()
920 if (engine->id != RCS) in intel_engine_get_instdone()
933 if (engine->id == RCS) in intel_engine_get_instdone()
944 static bool ring_is_idle(struct intel_engine_cs *engine) in ring_is_idle() argument
946 struct drm_i915_private *dev_priv = engine->i915; in ring_is_idle()
954 if ((I915_READ_HEAD(engine) & HEAD_ADDR) != in ring_is_idle()
955 (I915_READ_TAIL(engine) & TAIL_ADDR)) in ring_is_idle()
959 if (INTEL_GEN(dev_priv) > 2 && !(I915_READ_MODE(engine) & MODE_IDLE)) in ring_is_idle()
974 bool intel_engine_is_idle(struct intel_engine_cs *engine) in intel_engine_is_idle() argument
976 struct drm_i915_private *dev_priv = engine->i915; in intel_engine_is_idle()
983 if (!i915_seqno_passed(intel_engine_get_seqno(engine), in intel_engine_is_idle()
984 intel_engine_last_submit(engine))) in intel_engine_is_idle()
987 if (I915_SELFTEST_ONLY(engine->breadcrumbs.mock)) in intel_engine_is_idle()
991 if (READ_ONCE(engine->execlists.active)) { in intel_engine_is_idle()
992 struct tasklet_struct *t = &engine->execlists.tasklet; in intel_engine_is_idle()
1003 if (READ_ONCE(engine->execlists.active)) in intel_engine_is_idle()
1008 if (!RB_EMPTY_ROOT(&engine->execlists.queue.rb_root)) in intel_engine_is_idle()
1012 if (!ring_is_idle(engine)) in intel_engine_is_idle()
1020 struct intel_engine_cs *engine; in intel_engines_are_idle() local
1030 for_each_engine(engine, dev_priv, id) { in intel_engines_are_idle()
1031 if (!intel_engine_is_idle(engine)) in intel_engines_are_idle()
1046 bool intel_engine_has_kernel_context(const struct intel_engine_cs *engine) in intel_engine_has_kernel_context() argument
1049 to_intel_context(engine->i915->kernel_context, engine); in intel_engine_has_kernel_context()
1052 lockdep_assert_held(&engine->i915->drm.struct_mutex); in intel_engine_has_kernel_context()
1059 rq = __i915_gem_active_peek(&engine->timeline.last_request); in intel_engine_has_kernel_context()
1063 return engine->last_retired_context == kernel_context; in intel_engine_has_kernel_context()
1068 struct intel_engine_cs *engine; in intel_engines_reset_default_submission() local
1071 for_each_engine(engine, i915, id) in intel_engines_reset_default_submission()
1072 engine->set_default_submission(engine); in intel_engines_reset_default_submission()
1086 struct intel_engine_cs *engine; in intel_engines_sanitize() local
1091 for_each_engine(engine, i915, id) { in intel_engines_sanitize()
1092 if (engine->reset.reset) in intel_engines_sanitize()
1093 engine->reset.reset(engine, NULL); in intel_engines_sanitize()
1107 struct intel_engine_cs *engine; in intel_engines_park() local
1110 for_each_engine(engine, i915, id) { in intel_engines_park()
1112 intel_engine_disarm_breadcrumbs(engine); in intel_engines_park()
1113 tasklet_kill(&engine->execlists.tasklet); in intel_engines_park()
1120 if (wait_for(intel_engine_is_idle(engine), 10)) { in intel_engines_park()
1125 engine->name); in intel_engines_park()
1126 intel_engine_dump(engine, &p, NULL); in intel_engines_park()
1130 GEM_BUG_ON(engine->execlists.queue_priority != INT_MIN); in intel_engines_park()
1132 if (engine->park) in intel_engines_park()
1133 engine->park(engine); in intel_engines_park()
1135 if (engine->pinned_default_state) { in intel_engines_park()
1136 i915_gem_object_unpin_map(engine->default_state); in intel_engines_park()
1137 engine->pinned_default_state = NULL; in intel_engines_park()
1140 i915_gem_batch_pool_fini(&engine->batch_pool); in intel_engines_park()
1141 engine->execlists.no_priolist = false; in intel_engines_park()
1153 struct intel_engine_cs *engine; in intel_engines_unpark() local
1156 for_each_engine(engine, i915, id) { in intel_engines_unpark()
1161 if (engine->default_state) in intel_engines_unpark()
1162 map = i915_gem_object_pin_map(engine->default_state, in intel_engines_unpark()
1165 engine->pinned_default_state = map; in intel_engines_unpark()
1167 if (engine->unpark) in intel_engines_unpark()
1168 engine->unpark(engine); in intel_engines_unpark()
1170 intel_engine_init_hangcheck(engine); in intel_engines_unpark()
1183 void intel_engine_lost_context(struct intel_engine_cs *engine) in intel_engine_lost_context() argument
1187 lockdep_assert_held(&engine->i915->drm.struct_mutex); in intel_engine_lost_context()
1189 ce = fetch_and_zero(&engine->last_retired_context); in intel_engine_lost_context()
1194 bool intel_engine_can_store_dword(struct intel_engine_cs *engine) in intel_engine_can_store_dword() argument
1196 switch (INTEL_GEN(engine->i915)) { in intel_engine_can_store_dword()
1201 return !(IS_I915G(engine->i915) || IS_I915GM(engine->i915)); in intel_engine_can_store_dword()
1203 return engine->class != VIDEO_DECODE_CLASS; /* b0rked */ in intel_engine_can_store_dword()
1211 struct intel_engine_cs *engine; in intel_engines_has_context_isolation() local
1216 for_each_engine(engine, i915, id) in intel_engines_has_context_isolation()
1217 if (engine->default_state) in intel_engines_has_context_isolation()
1218 which |= BIT(engine->uabi_class); in intel_engines_has_context_isolation()
1285 static void intel_engine_print_registers(const struct intel_engine_cs *engine, in intel_engine_print_registers() argument
1288 struct drm_i915_private *dev_priv = engine->i915; in intel_engine_print_registers()
1290 &engine->execlists; in intel_engine_print_registers()
1293 if (engine->id == RCS && IS_GEN(dev_priv, 4, 7)) in intel_engine_print_registers()
1296 I915_READ(RING_START(engine->mmio_base))); in intel_engine_print_registers()
1298 I915_READ(RING_HEAD(engine->mmio_base)) & HEAD_ADDR); in intel_engine_print_registers()
1300 I915_READ(RING_TAIL(engine->mmio_base)) & TAIL_ADDR); in intel_engine_print_registers()
1302 I915_READ(RING_CTL(engine->mmio_base)), in intel_engine_print_registers()
1303 … I915_READ(RING_CTL(engine->mmio_base)) & (RING_WAIT | RING_WAIT_SEMAPHORE) ? " [waiting]" : ""); in intel_engine_print_registers()
1304 if (INTEL_GEN(engine->i915) > 2) { in intel_engine_print_registers()
1306 I915_READ(RING_MI_MODE(engine->mmio_base)), in intel_engine_print_registers()
1307 I915_READ(RING_MI_MODE(engine->mmio_base)) & (MODE_IDLE) ? " [idle]" : ""); in intel_engine_print_registers()
1311 drm_printf(m, "\tRING_IMR: %08x\n", I915_READ_IMR(engine)); in intel_engine_print_registers()
1316 I915_READ(RING_SYNC_0(engine->mmio_base))); in intel_engine_print_registers()
1318 I915_READ(RING_SYNC_1(engine->mmio_base))); in intel_engine_print_registers()
1321 I915_READ(RING_SYNC_2(engine->mmio_base))); in intel_engine_print_registers()
1324 addr = intel_engine_get_active_head(engine); in intel_engine_print_registers()
1327 addr = intel_engine_get_last_batch_head(engine); in intel_engine_print_registers()
1331 addr = I915_READ64_2x32(RING_DMA_FADD(engine->mmio_base), in intel_engine_print_registers()
1332 RING_DMA_FADD_UDW(engine->mmio_base)); in intel_engine_print_registers()
1334 addr = I915_READ(RING_DMA_FADD(engine->mmio_base)); in intel_engine_print_registers()
1341 I915_READ(RING_IPEIR(engine->mmio_base))); in intel_engine_print_registers()
1343 I915_READ(RING_IPEHR(engine->mmio_base))); in intel_engine_print_registers()
1350 const u32 *hws = &engine->status_page.page_addr[I915_HWS_CSB_BUF0_INDEX]; in intel_engine_print_registers()
1355 I915_READ(RING_EXECLIST_STATUS_LO(engine)), in intel_engine_print_registers()
1356 I915_READ(RING_EXECLIST_STATUS_HI(engine))); in intel_engine_print_registers()
1358 ptr = I915_READ(RING_CONTEXT_STATUS_PTR(engine)); in intel_engine_print_registers()
1364 intel_read_status_page(engine, intel_hws_csb_write_index(engine->i915)), in intel_engine_print_registers()
1366 &engine->execlists.tasklet.state)), in intel_engine_print_registers()
1367 enableddisabled(!atomic_read(&engine->execlists.tasklet.count))); in intel_engine_print_registers()
1378 I915_READ(RING_CONTEXT_STATUS_BUF_LO(engine, idx)), in intel_engine_print_registers()
1380 I915_READ(RING_CONTEXT_STATUS_BUF_HI(engine, idx)), in intel_engine_print_registers()
1406 I915_READ(RING_PP_DIR_BASE(engine))); in intel_engine_print_registers()
1408 I915_READ(RING_PP_DIR_BASE_READ(engine))); in intel_engine_print_registers()
1410 I915_READ(RING_PP_DIR_DCLV(engine))); in intel_engine_print_registers()
1447 void intel_engine_dump(struct intel_engine_cs *engine, in intel_engine_dump() argument
1452 struct intel_breadcrumbs * const b = &engine->breadcrumbs; in intel_engine_dump()
1453 const struct intel_engine_execlists * const execlists = &engine->execlists; in intel_engine_dump()
1454 struct i915_gpu_error * const error = &engine->i915->gpu_error; in intel_engine_dump()
1468 if (i915_terminally_wedged(&engine->i915->gpu_error)) in intel_engine_dump()
1472 intel_engine_get_seqno(engine), in intel_engine_dump()
1473 intel_engine_last_submit(engine), in intel_engine_dump()
1474 engine->hangcheck.seqno, in intel_engine_dump()
1475 jiffies_to_msecs(jiffies - engine->hangcheck.action_timestamp)); in intel_engine_dump()
1477 i915_reset_engine_count(error, engine), in intel_engine_dump()
1484 rq = list_first_entry(&engine->timeline.requests, in intel_engine_dump()
1486 if (&rq->link != &engine->timeline.requests) in intel_engine_dump()
1489 rq = list_last_entry(&engine->timeline.requests, in intel_engine_dump()
1491 if (&rq->link != &engine->timeline.requests) in intel_engine_dump()
1494 rq = i915_gem_find_active_request(engine); in intel_engine_dump()
1514 if (intel_runtime_pm_get_if_in_use(engine->i915)) { in intel_engine_dump()
1515 intel_engine_print_registers(engine, m); in intel_engine_dump()
1516 intel_runtime_pm_put(engine->i915); in intel_engine_dump()
1522 spin_lock(&engine->timeline.lock); in intel_engine_dump()
1526 list_for_each_entry(rq, &engine->timeline.requests, link) { in intel_engine_dump()
1564 spin_unlock(&engine->timeline.lock); in intel_engine_dump()
1577 engine->irq_posted, in intel_engine_dump()
1579 &engine->irq_posted))); in intel_engine_dump()
1582 hexdump(m, engine->status_page.page_addr, PAGE_SIZE); in intel_engine_dump()
1584 drm_printf(m, "Idle? %s\n", yesno(intel_engine_is_idle(engine))); in intel_engine_dump()
1618 int intel_enable_engine_stats(struct intel_engine_cs *engine) in intel_enable_engine_stats() argument
1620 struct intel_engine_execlists *execlists = &engine->execlists; in intel_enable_engine_stats()
1624 if (!intel_engine_supports_stats(engine)) in intel_enable_engine_stats()
1627 spin_lock_irqsave(&engine->timeline.lock, flags); in intel_enable_engine_stats()
1628 write_seqlock(&engine->stats.lock); in intel_enable_engine_stats()
1630 if (unlikely(engine->stats.enabled == ~0)) { in intel_enable_engine_stats()
1635 if (engine->stats.enabled++ == 0) { in intel_enable_engine_stats()
1639 engine->stats.enabled_at = ktime_get(); in intel_enable_engine_stats()
1643 engine->stats.active++; in intel_enable_engine_stats()
1647 if (engine->stats.active) in intel_enable_engine_stats()
1648 engine->stats.start = engine->stats.enabled_at; in intel_enable_engine_stats()
1652 write_sequnlock(&engine->stats.lock); in intel_enable_engine_stats()
1653 spin_unlock_irqrestore(&engine->timeline.lock, flags); in intel_enable_engine_stats()
1658 static ktime_t __intel_engine_get_busy_time(struct intel_engine_cs *engine) in __intel_engine_get_busy_time() argument
1660 ktime_t total = engine->stats.total; in __intel_engine_get_busy_time()
1666 if (engine->stats.active) in __intel_engine_get_busy_time()
1668 ktime_sub(ktime_get(), engine->stats.start)); in __intel_engine_get_busy_time()
1679 ktime_t intel_engine_get_busy_time(struct intel_engine_cs *engine) in intel_engine_get_busy_time() argument
1685 seq = read_seqbegin(&engine->stats.lock); in intel_engine_get_busy_time()
1686 total = __intel_engine_get_busy_time(engine); in intel_engine_get_busy_time()
1687 } while (read_seqretry(&engine->stats.lock, seq)); in intel_engine_get_busy_time()
1698 void intel_disable_engine_stats(struct intel_engine_cs *engine) in intel_disable_engine_stats() argument
1702 if (!intel_engine_supports_stats(engine)) in intel_disable_engine_stats()
1705 write_seqlock_irqsave(&engine->stats.lock, flags); in intel_disable_engine_stats()
1706 WARN_ON_ONCE(engine->stats.enabled == 0); in intel_disable_engine_stats()
1707 if (--engine->stats.enabled == 0) { in intel_disable_engine_stats()
1708 engine->stats.total = __intel_engine_get_busy_time(engine); in intel_disable_engine_stats()
1709 engine->stats.active = 0; in intel_disable_engine_stats()
1711 write_sequnlock_irqrestore(&engine->stats.lock, flags); in intel_disable_engine_stats()