Lines Matching refs:engine
36 #define I915_READ_TAIL(engine) I915_READ(RING_TAIL((engine)->mmio_base)) argument
37 #define I915_WRITE_TAIL(engine, val) I915_WRITE(RING_TAIL((engine)->mmio_base), val) argument
39 #define I915_READ_START(engine) I915_READ(RING_START((engine)->mmio_base)) argument
40 #define I915_WRITE_START(engine, val) I915_WRITE(RING_START((engine)->mmio_base), val) argument
42 #define I915_READ_HEAD(engine) I915_READ(RING_HEAD((engine)->mmio_base)) argument
43 #define I915_WRITE_HEAD(engine, val) I915_WRITE(RING_HEAD((engine)->mmio_base), val) argument
45 #define I915_READ_CTL(engine) I915_READ(RING_CTL((engine)->mmio_base)) argument
46 #define I915_WRITE_CTL(engine, val) I915_WRITE(RING_CTL((engine)->mmio_base), val) argument
48 #define I915_READ_IMR(engine) I915_READ(RING_IMR((engine)->mmio_base)) argument
49 #define I915_WRITE_IMR(engine, val) I915_WRITE(RING_IMR((engine)->mmio_base), val) argument
51 #define I915_READ_MODE(engine) I915_READ(RING_MI_MODE((engine)->mmio_base)) argument
52 #define I915_WRITE_MODE(engine, val) I915_WRITE(RING_MI_MODE((engine)->mmio_base), val) argument
445 void (*irq_enable)(struct intel_engine_cs *engine);
446 void (*irq_disable)(struct intel_engine_cs *engine);
448 int (*init_hw)(struct intel_engine_cs *engine);
451 struct i915_request *(*prepare)(struct intel_engine_cs *engine);
452 void (*reset)(struct intel_engine_cs *engine,
454 void (*finish)(struct intel_engine_cs *engine);
457 void (*park)(struct intel_engine_cs *engine);
458 void (*unpark)(struct intel_engine_cs *engine);
460 void (*set_default_submission)(struct intel_engine_cs *engine);
462 struct intel_context *(*context_pin)(struct intel_engine_cs *engine,
504 void (*cancel_requests)(struct intel_engine_cs *engine);
512 void (*irq_seqno_barrier)(struct intel_engine_cs *engine);
513 void (*cleanup)(struct intel_engine_cs *engine);
650 intel_engine_needs_cmd_parser(const struct intel_engine_cs *engine) in intel_engine_needs_cmd_parser() argument
652 return engine->flags & I915_ENGINE_NEEDS_CMD_PARSER; in intel_engine_needs_cmd_parser()
656 intel_engine_supports_stats(const struct intel_engine_cs *engine) in intel_engine_supports_stats() argument
658 return engine->flags & I915_ENGINE_SUPPORTS_STATS; in intel_engine_supports_stats()
662 intel_engine_has_preemption(const struct intel_engine_cs *engine) in intel_engine_has_preemption() argument
664 return engine->flags & I915_ENGINE_HAS_PREEMPTION; in intel_engine_has_preemption()
738 intel_engine_flag(const struct intel_engine_cs *engine) in intel_engine_flag() argument
740 return BIT(engine->id); in intel_engine_flag()
744 intel_read_status_page(const struct intel_engine_cs *engine, int reg) in intel_read_status_page() argument
747 return READ_ONCE(engine->status_page.page_addr[reg]); in intel_read_status_page()
751 intel_write_status_page(struct intel_engine_cs *engine, int reg, u32 value) in intel_write_status_page() argument
760 clflush(&engine->status_page.page_addr[reg]); in intel_write_status_page()
761 engine->status_page.page_addr[reg] = value; in intel_write_status_page()
762 clflush(&engine->status_page.page_addr[reg]); in intel_write_status_page()
765 WRITE_ONCE(engine->status_page.page_addr[reg], value); in intel_write_status_page()
797 intel_engine_create_ring(struct intel_engine_cs *engine,
808 void intel_engine_stop(struct intel_engine_cs *engine);
809 void intel_engine_cleanup(struct intel_engine_cs *engine);
896 void intel_engine_init_global_seqno(struct intel_engine_cs *engine, u32 seqno);
898 void intel_engine_setup_common(struct intel_engine_cs *engine);
899 int intel_engine_init_common(struct intel_engine_cs *engine);
900 void intel_engine_cleanup_common(struct intel_engine_cs *engine);
902 int intel_engine_create_scratch(struct intel_engine_cs *engine,
904 void intel_engine_cleanup_scratch(struct intel_engine_cs *engine);
906 int intel_init_render_ring_buffer(struct intel_engine_cs *engine);
907 int intel_init_bsd_ring_buffer(struct intel_engine_cs *engine);
908 int intel_init_blt_ring_buffer(struct intel_engine_cs *engine);
909 int intel_init_vebox_ring_buffer(struct intel_engine_cs *engine);
911 int intel_engine_stop_cs(struct intel_engine_cs *engine);
913 u64 intel_engine_get_active_head(const struct intel_engine_cs *engine);
914 u64 intel_engine_get_last_batch_head(const struct intel_engine_cs *engine);
916 static inline u32 intel_engine_get_seqno(struct intel_engine_cs *engine) in intel_engine_get_seqno() argument
918 return intel_read_status_page(engine, I915_GEM_HWS_INDEX); in intel_engine_get_seqno()
921 static inline u32 intel_engine_last_submit(struct intel_engine_cs *engine) in intel_engine_last_submit() argument
930 return READ_ONCE(engine->timeline.seqno); in intel_engine_last_submit()
933 void intel_engine_get_instdone(struct intel_engine_cs *engine,
945 static inline u32 intel_hws_seqno_address(struct intel_engine_cs *engine) in intel_hws_seqno_address() argument
947 return engine->status_page.ggtt_offset + I915_GEM_HWS_INDEX_ADDR; in intel_hws_seqno_address()
950 static inline u32 intel_hws_preempt_done_address(struct intel_engine_cs *engine) in intel_hws_preempt_done_address() argument
952 return engine->status_page.ggtt_offset + I915_GEM_HWS_PREEMPT_ADDR; in intel_hws_preempt_done_address()
956 int intel_engine_init_breadcrumbs(struct intel_engine_cs *engine);
1007 bool intel_engine_add_wait(struct intel_engine_cs *engine,
1009 void intel_engine_remove_wait(struct intel_engine_cs *engine,
1014 static inline bool intel_engine_has_waiter(const struct intel_engine_cs *engine) in intel_engine_has_waiter() argument
1016 return READ_ONCE(engine->breadcrumbs.irq_wait); in intel_engine_has_waiter()
1019 unsigned int intel_engine_wakeup(struct intel_engine_cs *engine);
1023 void intel_engine_pin_breadcrumbs_irq(struct intel_engine_cs *engine);
1024 void intel_engine_unpin_breadcrumbs_irq(struct intel_engine_cs *engine);
1026 void __intel_engine_disarm_breadcrumbs(struct intel_engine_cs *engine);
1027 void intel_engine_disarm_breadcrumbs(struct intel_engine_cs *engine);
1029 void intel_engine_reset_breadcrumbs(struct intel_engine_cs *engine);
1030 void intel_engine_fini_breadcrumbs(struct intel_engine_cs *engine);
1083 bool intel_engine_is_idle(struct intel_engine_cs *engine);
1086 bool intel_engine_has_kernel_context(const struct intel_engine_cs *engine);
1087 void intel_engine_lost_context(struct intel_engine_cs *engine);
1095 bool intel_engine_can_store_dword(struct intel_engine_cs *engine);
1098 void intel_engine_dump(struct intel_engine_cs *engine,
1105 static inline void intel_engine_context_in(struct intel_engine_cs *engine) in intel_engine_context_in() argument
1109 if (READ_ONCE(engine->stats.enabled) == 0) in intel_engine_context_in()
1112 write_seqlock_irqsave(&engine->stats.lock, flags); in intel_engine_context_in()
1114 if (engine->stats.enabled > 0) { in intel_engine_context_in()
1115 if (engine->stats.active++ == 0) in intel_engine_context_in()
1116 engine->stats.start = ktime_get(); in intel_engine_context_in()
1117 GEM_BUG_ON(engine->stats.active == 0); in intel_engine_context_in()
1120 write_sequnlock_irqrestore(&engine->stats.lock, flags); in intel_engine_context_in()
1123 static inline void intel_engine_context_out(struct intel_engine_cs *engine) in intel_engine_context_out() argument
1127 if (READ_ONCE(engine->stats.enabled) == 0) in intel_engine_context_out()
1130 write_seqlock_irqsave(&engine->stats.lock, flags); in intel_engine_context_out()
1132 if (engine->stats.enabled > 0) { in intel_engine_context_out()
1135 if (engine->stats.active && --engine->stats.active == 0) { in intel_engine_context_out()
1140 last = ktime_sub(ktime_get(), engine->stats.start); in intel_engine_context_out()
1142 engine->stats.total = ktime_add(engine->stats.total, in intel_engine_context_out()
1144 } else if (engine->stats.active == 0) { in intel_engine_context_out()
1150 last = ktime_sub(ktime_get(), engine->stats.enabled_at); in intel_engine_context_out()
1152 engine->stats.total = ktime_add(engine->stats.total, in intel_engine_context_out()
1157 write_sequnlock_irqrestore(&engine->stats.lock, flags); in intel_engine_context_out()
1160 int intel_enable_engine_stats(struct intel_engine_cs *engine);
1161 void intel_disable_engine_stats(struct intel_engine_cs *engine);
1163 ktime_t intel_engine_get_busy_time(struct intel_engine_cs *engine);