Freed the gem object after completion of dsb workload. Cc: Shashank Sharma <shashank.sha...@intel.com> Cc: Jani Nikula <jani.nik...@intel.com> Cc: Rodrigo Vivi <rodrigo.v...@intel.com> Signed-off-by: Animesh Manna <animesh.ma...@intel.com> --- drivers/gpu/drm/i915/intel_dsb.c | 16 ++++++++++++++++ drivers/gpu/drm/i915/intel_dsb.h | 1 + 2 files changed, 17 insertions(+)
diff --git a/drivers/gpu/drm/i915/intel_dsb.c b/drivers/gpu/drm/i915/intel_dsb.c index 0270f4fef600..dddaae27d7b5 100644 --- a/drivers/gpu/drm/i915/intel_dsb.c +++ b/drivers/gpu/drm/i915/intel_dsb.c @@ -233,3 +233,19 @@ void intel_dsb_commit(struct intel_dsb *dsb) dsb->free_pos = 0; intel_dsb_disable_engine(dsb); } + +void intel_dsb_put(struct intel_dsb *dsb) +{ + struct intel_crtc *crtc = dsb->crtc; + struct drm_i915_private *i915 = to_i915(crtc->base.dev); + struct i915_vma *vma = dsb->vma; + + if (dsb->cmd_buf) { + mutex_lock(&i915->drm.struct_mutex); + crtc->dsb_in_use--; + i915_gem_object_unpin_map(vma->obj); + i915_vma_unpin_and_release(&vma, 0); + dsb->cmd_buf = NULL; + mutex_unlock(&i915->drm.struct_mutex); + } +} diff --git a/drivers/gpu/drm/i915/intel_dsb.h b/drivers/gpu/drm/i915/intel_dsb.h index 7330add3c96f..7b94fd9bc067 100644 --- a/drivers/gpu/drm/i915/intel_dsb.h +++ b/drivers/gpu/drm/i915/intel_dsb.h @@ -43,5 +43,6 @@ struct intel_dsb * intel_dsb_get(struct intel_crtc *crtc); void intel_dsb_reg_write(struct intel_dsb *dsb, i915_reg_t reg, u32 val); void intel_dsb_commit(struct intel_dsb *dsb); +void intel_dsb_put(struct intel_dsb *dsb); #endif -- 2.21.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx