Lines Matching refs:engine
33 static struct mock_request *first_request(struct mock_engine *engine) in first_request() argument
35 return list_first_entry_or_null(&engine->hw_queue, in first_request()
40 static void advance(struct mock_engine *engine, in advance() argument
44 mock_seqno_advance(&engine->base, request->base.global_seqno); in advance()
49 struct mock_engine *engine = from_timer(engine, t, hw_delay); in hw_delay_complete() local
52 spin_lock(&engine->hw_lock); in hw_delay_complete()
55 request = first_request(engine); in hw_delay_complete()
57 advance(engine, request); in hw_delay_complete()
63 while ((request = first_request(engine))) { in hw_delay_complete()
65 mod_timer(&engine->hw_delay, jiffies + request->delay); in hw_delay_complete()
69 advance(engine, request); in hw_delay_complete()
72 spin_unlock(&engine->hw_lock); in hw_delay_complete()
91 mock_context_pin(struct intel_engine_cs *engine, in mock_context_pin() argument
94 struct intel_context *ce = to_intel_context(ctx, engine); in mock_context_pin()
98 ce->ring = engine->buffer; in mock_context_pin()
129 struct mock_engine *engine = in mock_submit_request() local
130 container_of(request->engine, typeof(*engine), base); in mock_submit_request()
135 spin_lock_irq(&engine->hw_lock); in mock_submit_request()
136 list_add_tail(&mock->link, &engine->hw_queue); in mock_submit_request()
137 if (mock->link.prev == &engine->hw_queue) { in mock_submit_request()
139 mod_timer(&engine->hw_delay, jiffies + mock->delay); in mock_submit_request()
141 advance(engine, mock); in mock_submit_request()
143 spin_unlock_irq(&engine->hw_lock); in mock_submit_request()
146 static struct intel_ring *mock_ring(struct intel_engine_cs *engine) in mock_ring() argument
157 i915_timeline_init(engine->i915, &ring->timeline, engine->name); in mock_ring()
182 struct mock_engine *engine; in mock_engine() local
186 engine = kzalloc(sizeof(*engine) + PAGE_SIZE, GFP_KERNEL); in mock_engine()
187 if (!engine) in mock_engine()
191 engine->base.i915 = i915; in mock_engine()
192 snprintf(engine->base.name, sizeof(engine->base.name), "%s", name); in mock_engine()
193 engine->base.id = id; in mock_engine()
194 engine->base.status_page.page_addr = (void *)(engine + 1); in mock_engine()
196 engine->base.context_pin = mock_context_pin; in mock_engine()
197 engine->base.request_alloc = mock_request_alloc; in mock_engine()
198 engine->base.emit_flush = mock_emit_flush; in mock_engine()
199 engine->base.emit_breadcrumb = mock_emit_breadcrumb; in mock_engine()
200 engine->base.submit_request = mock_submit_request; in mock_engine()
202 i915_timeline_init(i915, &engine->base.timeline, engine->base.name); in mock_engine()
203 lockdep_set_subclass(&engine->base.timeline.lock, TIMELINE_ENGINE); in mock_engine()
205 intel_engine_init_breadcrumbs(&engine->base); in mock_engine()
206 engine->base.breadcrumbs.mock = true; /* prevent touching HW for irqs */ in mock_engine()
209 spin_lock_init(&engine->hw_lock); in mock_engine()
210 timer_setup(&engine->hw_delay, hw_delay_complete, 0); in mock_engine()
211 INIT_LIST_HEAD(&engine->hw_queue); in mock_engine()
213 engine->base.buffer = mock_ring(&engine->base); in mock_engine()
214 if (!engine->base.buffer) in mock_engine()
217 if (IS_ERR(intel_context_pin(i915->kernel_context, &engine->base))) in mock_engine()
220 return &engine->base; in mock_engine()
223 mock_ring_free(engine->base.buffer); in mock_engine()
225 intel_engine_fini_breadcrumbs(&engine->base); in mock_engine()
226 i915_timeline_fini(&engine->base.timeline); in mock_engine()
227 kfree(engine); in mock_engine()
231 void mock_engine_flush(struct intel_engine_cs *engine) in mock_engine_flush() argument
234 container_of(engine, typeof(*mock), base); in mock_engine_flush()
247 void mock_engine_reset(struct intel_engine_cs *engine) in mock_engine_reset() argument
249 intel_write_status_page(engine, I915_GEM_HWS_INDEX, 0); in mock_engine_reset()
252 void mock_engine_free(struct intel_engine_cs *engine) in mock_engine_free() argument
255 container_of(engine, typeof(*mock), base); in mock_engine_free()
260 ce = fetch_and_zero(&engine->last_retired_context); in mock_engine_free()
264 __intel_context_unpin(engine->i915->kernel_context, engine); in mock_engine_free()
266 mock_ring_free(engine->buffer); in mock_engine_free()
268 intel_engine_fini_breadcrumbs(engine); in mock_engine_free()
269 i915_timeline_fini(&engine->timeline); in mock_engine_free()
271 kfree(engine); in mock_engine_free()