On Mon, May 11, 2026 at 1:56 AM Chaitanya Kumar Borah <[email protected]> wrote: > > Take proper references for hw color blobs (degamma_lut, gamma_lut, > ctm, lut_3d) in intel_plane_duplicate_state() and drop them in > intel_plane_destroy_state(). > > v2: > - handle blobs in hw state clear > > Fixes: 3b7476e786c2 ("drm/i915/color: Add framework to program PRE/POST CSC > LUT") > Fixes: a78f1b6baf4d ("drm/i915/color: Add framework to program CSC") > Fixes: 65db7a1f9cf7 ("drm/i915/color: Add 3D LUT to color pipeline")
These are in 6.19+, you probably want cc stable as well. Sean > Reviewed-by: Pranay Samala <[email protected]> #v1 > Signed-off-by: Chaitanya Kumar Borah <[email protected]> > --- > drivers/gpu/drm/i915/display/intel_plane.c | 27 ++++++++++++++++++++++ > 1 file changed, 27 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_plane.c > b/drivers/gpu/drm/i915/display/intel_plane.c > index 559eef467dda..54b2c32473cc 100644 > --- a/drivers/gpu/drm/i915/display/intel_plane.c > +++ b/drivers/gpu/drm/i915/display/intel_plane.c > @@ -145,6 +145,15 @@ intel_plane_duplicate_state(struct drm_plane *plane) > if (intel_state->hw.fb) > drm_framebuffer_get(intel_state->hw.fb); > > + if (intel_state->hw.degamma_lut) > + drm_property_blob_get(intel_state->hw.degamma_lut); > + if (intel_state->hw.gamma_lut) > + drm_property_blob_get(intel_state->hw.gamma_lut); > + if (intel_state->hw.ctm) > + drm_property_blob_get(intel_state->hw.ctm); > + if (intel_state->hw.lut_3d) > + drm_property_blob_get(intel_state->hw.lut_3d); > + > return &intel_state->uapi; > } > > @@ -168,6 +177,16 @@ intel_plane_destroy_state(struct drm_plane *plane, > __drm_atomic_helper_plane_destroy_state(&plane_state->uapi); > if (plane_state->hw.fb) > drm_framebuffer_put(plane_state->hw.fb); > + > + if (plane_state->hw.degamma_lut) > + drm_property_blob_put(plane_state->hw.degamma_lut); > + if (plane_state->hw.gamma_lut) > + drm_property_blob_put(plane_state->hw.gamma_lut); > + if (plane_state->hw.ctm) > + drm_property_blob_put(plane_state->hw.ctm); > + if (plane_state->hw.lut_3d) > + drm_property_blob_put(plane_state->hw.lut_3d); > + > kfree(plane_state); > } > > @@ -340,6 +359,14 @@ static void intel_plane_clear_hw_state(struct > intel_plane_state *plane_state) > { > if (plane_state->hw.fb) > drm_framebuffer_put(plane_state->hw.fb); > + if (plane_state->hw.degamma_lut) > + drm_property_blob_put(plane_state->hw.degamma_lut); > + if (plane_state->hw.gamma_lut) > + drm_property_blob_put(plane_state->hw.gamma_lut); > + if (plane_state->hw.ctm) > + drm_property_blob_put(plane_state->hw.ctm); > + if (plane_state->hw.lut_3d) > + drm_property_blob_put(plane_state->hw.lut_3d); > > memset(&plane_state->hw, 0, sizeof(plane_state->hw)); > } > -- > 2.25.1 >
