Lines Matching full:engine

46 static struct intel_ring *mock_ring(struct intel_engine_cs *engine)  in mock_ring()  argument
84 static struct i915_request *first_request(struct mock_engine *engine) in first_request() argument
86 return list_first_entry_or_null(&engine->hw_queue, in first_request()
97 intel_engine_signal_breadcrumbs(request->engine); in advance()
102 struct mock_engine *engine = from_timer(engine, t, hw_delay); in hw_delay_complete() local
106 spin_lock_irqsave(&engine->hw_lock, flags); in hw_delay_complete()
109 request = first_request(engine); in hw_delay_complete()
117 while ((request = first_request(engine))) { in hw_delay_complete()
119 mod_timer(&engine->hw_delay, in hw_delay_complete()
127 spin_unlock_irqrestore(&engine->hw_lock, flags); in hw_delay_complete()
155 ce->ring = mock_ring(ce->engine); in mock_context_alloc()
159 ce->timeline = intel_timeline_create(ce->engine->gt); in mock_context_alloc()
161 kfree(ce->engine); in mock_context_alloc()
221 struct mock_engine *engine = in mock_submit_request() local
222 container_of(request->engine, typeof(*engine), base); in mock_submit_request()
227 spin_lock_irqsave(&engine->hw_lock, flags); in mock_submit_request()
228 list_add_tail(&request->mock.link, &engine->hw_queue); in mock_submit_request()
229 if (list_is_first(&request->mock.link, &engine->hw_queue)) { in mock_submit_request()
231 mod_timer(&engine->hw_delay, in mock_submit_request()
236 spin_unlock_irqrestore(&engine->hw_lock, flags); in mock_submit_request()
239 static void mock_reset_prepare(struct intel_engine_cs *engine) in mock_reset_prepare() argument
243 static void mock_reset_rewind(struct intel_engine_cs *engine, bool stalled) in mock_reset_rewind() argument
248 static void mock_reset_cancel(struct intel_engine_cs *engine) in mock_reset_cancel() argument
253 spin_lock_irqsave(&engine->active.lock, flags); in mock_reset_cancel()
256 list_for_each_entry(request, &engine->active.requests, sched.link) { in mock_reset_cancel()
261 spin_unlock_irqrestore(&engine->active.lock, flags); in mock_reset_cancel()
264 static void mock_reset_finish(struct intel_engine_cs *engine) in mock_reset_finish() argument
268 static void mock_engine_release(struct intel_engine_cs *engine) in mock_engine_release() argument
271 container_of(engine, typeof(*mock), base); in mock_engine_release()
275 intel_breadcrumbs_free(engine->breadcrumbs); in mock_engine_release()
277 intel_context_unpin(engine->kernel_context); in mock_engine_release()
278 intel_context_put(engine->kernel_context); in mock_engine_release()
280 intel_engine_fini_retire(engine); in mock_engine_release()
287 struct mock_engine *engine; in mock_engine() local
292 engine = kzalloc(sizeof(*engine) + PAGE_SIZE, GFP_KERNEL); in mock_engine()
293 if (!engine) in mock_engine()
296 /* minimal engine setup for requests */ in mock_engine()
297 engine->base.i915 = i915; in mock_engine()
298 engine->base.gt = &i915->gt; in mock_engine()
299 engine->base.uncore = i915->gt.uncore; in mock_engine()
300 snprintf(engine->base.name, sizeof(engine->base.name), "%s", name); in mock_engine()
301 engine->base.id = id; in mock_engine()
302 engine->base.mask = BIT(id); in mock_engine()
303 engine->base.legacy_idx = INVALID_ENGINE; in mock_engine()
304 engine->base.instance = id; in mock_engine()
305 engine->base.status_page.addr = (void *)(engine + 1); in mock_engine()
307 engine->base.cops = &mock_context_ops; in mock_engine()
308 engine->base.request_alloc = mock_request_alloc; in mock_engine()
309 engine->base.emit_flush = mock_emit_flush; in mock_engine()
310 engine->base.emit_fini_breadcrumb = mock_emit_breadcrumb; in mock_engine()
311 engine->base.submit_request = mock_submit_request; in mock_engine()
313 engine->base.reset.prepare = mock_reset_prepare; in mock_engine()
314 engine->base.reset.rewind = mock_reset_rewind; in mock_engine()
315 engine->base.reset.cancel = mock_reset_cancel; in mock_engine()
316 engine->base.reset.finish = mock_reset_finish; in mock_engine()
318 engine->base.release = mock_engine_release; in mock_engine()
320 i915->gt.engine[id] = &engine->base; in mock_engine()
321 i915->gt.engine_class[0][id] = &engine->base; in mock_engine()
324 spin_lock_init(&engine->hw_lock); in mock_engine()
325 timer_setup(&engine->hw_delay, hw_delay_complete, 0); in mock_engine()
326 INIT_LIST_HEAD(&engine->hw_queue); in mock_engine()
328 intel_engine_add_user(&engine->base); in mock_engine()
330 return &engine->base; in mock_engine()
333 int mock_engine_init(struct intel_engine_cs *engine) in mock_engine_init() argument
337 intel_engine_init_active(engine, ENGINE_MOCK); in mock_engine_init()
338 intel_engine_init_execlists(engine); in mock_engine_init()
339 intel_engine_init__pm(engine); in mock_engine_init()
340 intel_engine_init_retire(engine); in mock_engine_init()
342 engine->breadcrumbs = intel_breadcrumbs_create(NULL); in mock_engine_init()
343 if (!engine->breadcrumbs) in mock_engine_init()
346 ce = create_kernel_context(engine); in mock_engine_init()
351 engine->status_page.vma = ce->timeline->hwsp_ggtt; in mock_engine_init()
353 engine->kernel_context = ce; in mock_engine_init()
357 intel_breadcrumbs_free(engine->breadcrumbs); in mock_engine_init()
361 void mock_engine_flush(struct intel_engine_cs *engine) in mock_engine_flush() argument
364 container_of(engine, typeof(*mock), base); in mock_engine_flush()
375 void mock_engine_reset(struct intel_engine_cs *engine) in mock_engine_reset() argument