This series contains follow-up fixes and improvements for the DRM color pipeline infrastructure that was introduced in v6.19.[1][2]
The central handling of clean up of colorop from the mode_config list is missing. While vkms calls drm_colorop_pipeline_destroy() in vkms_destroy(), amd driver calls it only during failure of the init path and i915/xe driver does not call it at all. This means amd and intel leaks these objects on driver removal. This series adds the teardown of mode_config.colorop_list in drm_mode_config_cleanup(). Since, i915/xe sub-classes the drm_colorop within intel_colorop it was not enough to just use drm_colorop_pipeline_destroy(). Therefore, this series - Introduces driver-managed destruction for drm_colorop objects and updates core helpers to use driver-provided destroy callbacks. - Ensures all colorop objects are correctly torn down during mode_config cleanup and driver removal. In addition to that following changes are made in the series - Fixes enum name lifetime leaks in color pipeline init in i915, amdgpu_dm, and vkms - Corrects the ordering of the 3D LUT block in the i915 plane color pipeline - Refactors i915 plane color pipeline initialization to reliably clean up partially constructed pipelines on failure. Thanks for taking a look. Feedback is welcome. [1] https://lore.kernel.org/dri-devel/[email protected]/ [2] https://lore.kernel.org/intel-gfx/[email protected]/ == Chaitanya Cc: Jani Nikula <[email protected]> Cc: Uma Shankar <[email protected]> Cc: Suraj Kandpal <[email protected]> Cc: Ville Syrjälä <[email protected]> Cc: Matt Roper <[email protected]> Cc: Harry Wentland <[email protected]> Cc: Alex Hung <[email protected]> Cc: Louis Chauvet <[email protected]> Cc: Melissa Wen <[email protected]> Cc: Simon Ser <[email protected]> Cc: Daniel Stone <[email protected]> Cc: Nícolas F. R. A. Prado <[email protected]> Chaitanya Kumar Borah (13): drm/i915/color: Place 3D LUT after CSC in plane color pipeline drm/amd/display: Fix color pipeline enum name leak drm/vkms: Fix color pipeline enum name leak drm/i915/display: Fix color pipeline enum name leak drm: Allow driver-managed destruction of colorop objects drm/colorop: Add destroy helper for colorop objects drm/amd/display: Hook up colorop destroy helper for plane pipelines drm/vkms: Hook up colorop destroy helper for plane pipelines drm/i915/display: Hook up intel_colorop_destroy drm: Clean up colorop objects during mode_config cleanup drm/vkms: Remove drm_colorop_pipeline_destroy() from vkms_destroy() drm/colorop: Use destroy callback for color pipeline teardown drm/i915/color: Add failure handling in plane color pipeline init .../amd/display/amdgpu_dm/amdgpu_dm_colorop.c | 31 +++- .../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 13 +- drivers/gpu/drm/drm_colorop.c | 46 +++-- drivers/gpu/drm/drm_mode_config.c | 6 + .../drm/i915/display/intel_color_pipeline.c | 161 +++++++++++++----- drivers/gpu/drm/i915/display/intel_colorop.c | 6 + drivers/gpu/drm/i915/display/intel_colorop.h | 1 + drivers/gpu/drm/vkms/vkms_colorop.c | 31 ++-- drivers/gpu/drm/vkms/vkms_drv.c | 1 - include/drm/drm_colorop.h | 40 ++++- 10 files changed, 249 insertions(+), 87 deletions(-) -- 2.25.1
