aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/i915_gem_request.h19
-rw-r--r--drivers/gpu/drm/i915/intel_overlay.c3
2 files changed, 21 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_request.h b/drivers/gpu/drm/i915/i915_gem_request.h
index e2b077df2da0..d229f47d1028 100644
--- a/drivers/gpu/drm/i915/i915_gem_request.h
+++ b/drivers/gpu/drm/i915/i915_gem_request.h
@@ -413,6 +413,25 @@ i915_gem_active_set(struct i915_gem_active *active,
413 rcu_assign_pointer(active->request, request); 413 rcu_assign_pointer(active->request, request);
414} 414}
415 415
416/**
417 * i915_gem_active_set_retire_fn - updates the retirement callback
418 * @active - the active tracker
419 * @fn - the routine called when the request is retired
420 * @mutex - struct_mutex used to guard retirements
421 *
422 * i915_gem_active_set_retire_fn() updates the function pointer that
423 * is called when the final request associated with the @active tracker
424 * is retired.
425 */
426static inline void
427i915_gem_active_set_retire_fn(struct i915_gem_active *active,
428 i915_gem_retire_fn fn,
429 struct mutex *mutex)
430{
431 lockdep_assert_held(mutex);
432 active->retire = fn ?: i915_gem_retire_noop;
433}
434
416static inline struct drm_i915_gem_request * 435static inline struct drm_i915_gem_request *
417__i915_gem_active_peek(const struct i915_gem_active *active) 436__i915_gem_active_peek(const struct i915_gem_active *active)
418{ 437{
diff --git a/drivers/gpu/drm/i915/intel_overlay.c b/drivers/gpu/drm/i915/intel_overlay.c
index ef7dfea40242..57ef9c88843c 100644
--- a/drivers/gpu/drm/i915/intel_overlay.c
+++ b/drivers/gpu/drm/i915/intel_overlay.c
@@ -216,7 +216,8 @@ static void intel_overlay_submit_request(struct intel_overlay *overlay,
216{ 216{
217 GEM_BUG_ON(i915_gem_active_peek(&overlay->last_flip, 217 GEM_BUG_ON(i915_gem_active_peek(&overlay->last_flip,
218 &overlay->i915->drm.struct_mutex)); 218 &overlay->i915->drm.struct_mutex));
219 overlay->last_flip.retire = retire; 219 i915_gem_active_set_retire_fn(&overlay->last_flip, retire,
220 &overlay->i915->drm.struct_mutex);
220 i915_gem_active_set(&overlay->last_flip, req); 221 i915_gem_active_set(&overlay->last_flip, req);
221 i915_add_request(req); 222 i915_add_request(req);
222} 223}