On Mon, 2025-06-16 at 22:16 -0600, Alex Hung wrote: > The functions are to clean up color pipeline when a device driver > fails to create its color pipeline. > > Signed-off-by: Alex Hung <alex.h...@amd.com> > Reviewed-by: Daniel Stone <dani...@collabora.com> > Reviewed-by: Simon Ser <cont...@emersion.fr> > Reviewed-by: Melissa Wen <m...@igalia.com> > --- > v9: > - Move from from latest commit to here, and > drm_colorop_pipeline_destroy > is called in respective commits. > > drivers/gpu/drm/drm_colorop.c | 36 > +++++++++++++++++++++++++++++++++++ > include/drm/drm_colorop.h | 2 ++ > 2 files changed, 38 insertions(+) > > diff --git a/drivers/gpu/drm/drm_colorop.c > b/drivers/gpu/drm/drm_colorop.c > index 7b3ecf7ddd11..57a8c1063fdd 100644 > --- a/drivers/gpu/drm/drm_colorop.c > +++ b/drivers/gpu/drm/drm_colorop.c > @@ -135,6 +135,42 @@ static int drm_plane_colorop_init(struct > drm_device *dev, struct drm_colorop *co > return ret; > } > > +/** > + * drm_colorop_cleanup - Cleanup a drm_colorop object in > color_pipeline > + * > + * @colorop: The drm_colorop object to be cleaned > + */ > +static void drm_colorop_cleanup(struct drm_colorop *colorop) > +{ > + struct drm_device *dev = colorop->dev; > + struct drm_mode_config *config = &dev->mode_config; > + > + list_del(&colorop->head); > + config->num_colorop--; > + > + kfree(colorop->state); > +} > + > +/** > + * drm_colorop_pipeline_destroy - Helper for color pipeline > destruction > + * > + * @plane: - The drm_plane structure containing the color_pipeline > + * > + * Provides a default color pipeline destroy handler for a planes. > + */ > +void drm_colorop_pipeline_destroy(struct drm_plane *plane) > +{
This function implies it only cleans up the colorops in the color pipeline of a specific plane, but it actually cleans up all colorops in the drm_mode_config of a device. -- Thanks, Nícolas > + struct drm_device *dev = plane->dev; > + struct drm_mode_config *config = &dev->mode_config; > + struct drm_colorop *colorop, *next; > + > + list_for_each_entry_safe(colorop, next, &config- > >colorop_list, head) { > + drm_colorop_cleanup(colorop); > + kfree(colorop); > + } > +} > +EXPORT_SYMBOL(drm_colorop_pipeline_destroy); > +