* [PATCH 00/13] drm: Color pipeline teardown and follow-up fixes/improvements
@ 2025-12-19 6:56 Chaitanya Kumar Borah
2025-12-19 6:56 ` [PATCH 01/13] drm/i915/color: Place 3D LUT after CSC in plane color pipeline Chaitanya Kumar Borah
` (17 more replies)
0 siblings, 18 replies; 51+ messages in thread
From: Chaitanya Kumar Borah @ 2025-12-19 6:56 UTC (permalink / raw)
To: dri-devel, intel-gfx, intel-xe, amd-gfx
Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact,
alex.hung, daniels, uma.shankar, suraj.kandpal, nfraprado,
ville.syrjala, matthew.d.roper
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/cbe00ac4-a535-47d3-813a-e2eda7e9b991@amd.com/
[2] https://lore.kernel.org/intel-gfx/20251203085211.3663374-1-uma.shankar@intel.com/
==
Chaitanya
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Uma Shankar <uma.shankar@intel.com>
Cc: Suraj Kandpal <suraj.kandpal@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Alex Hung <alex.hung@amd.com>
Cc: Louis Chauvet <louis.chauvet@bootlin.com>
Cc: Melissa Wen <mwen@igalia.com>
Cc: Simon Ser <contact@emersion.fr>
Cc: Daniel Stone <daniels@collabora.com>
Cc: Nícolas F. R. A. Prado <nfraprado@collabora.com>
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
^ permalink raw reply [flat|nested] 51+ messages in thread* [PATCH 01/13] drm/i915/color: Place 3D LUT after CSC in plane color pipeline 2025-12-19 6:56 [PATCH 00/13] drm: Color pipeline teardown and follow-up fixes/improvements Chaitanya Kumar Borah @ 2025-12-19 6:56 ` Chaitanya Kumar Borah 2026-01-05 8:33 ` Kandpal, Suraj 2026-01-06 9:48 ` Shankar, Uma 2025-12-19 6:56 ` [PATCH 02/13] drm/amd/display: Fix color pipeline enum name leak Chaitanya Kumar Borah ` (16 subsequent siblings) 17 siblings, 2 replies; 51+ messages in thread From: Chaitanya Kumar Borah @ 2025-12-19 6:56 UTC (permalink / raw) To: dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, alex.hung, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper Commit 65db7a1f9cf7 ("drm/i915/color: Add 3D LUT to color pipeline") introduced the 3D LUT block before the CSC stage. This ordering is incorrect. Move the 3D LUT block to its correct position in the plane color pipeline: [Pre-CSC] -> [CSC] -> [3DLUT] -> [Post-CSC] Fixes: 65db7a1f9cf7 ("drm/i915/color: Add 3D LUT to color pipeline") Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> --- .../drm/i915/display/intel_color_pipeline.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c b/drivers/gpu/drm/i915/display/intel_color_pipeline.c index 942d9b9c93ce..684641c8323b 100644 --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c @@ -39,6 +39,15 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en /* TODO: handle failures and clean up */ prev_op = &colorop->base; + colorop = intel_colorop_create(INTEL_PLANE_CB_CSC); + ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, + DRM_COLOROP_FLAG_ALLOW_BYPASS); + if (ret) + return ret; + + drm_colorop_set_next_property(prev_op, &colorop->base); + prev_op = &colorop->base; + if (DISPLAY_VER(display) >= 35 && intel_color_crtc_has_3dlut(display, pipe) && plane->type == DRM_PLANE_TYPE_PRIMARY) { @@ -55,15 +64,6 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en prev_op = &colorop->base; } - colorop = intel_colorop_create(INTEL_PLANE_CB_CSC); - ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, - DRM_COLOROP_FLAG_ALLOW_BYPASS); - if (ret) - return ret; - - drm_colorop_set_next_property(prev_op, &colorop->base); - prev_op = &colorop->base; - colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT); ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, PLANE_GAMMA_SIZE, -- 2.25.1 ^ permalink raw reply related [flat|nested] 51+ messages in thread
* RE: [PATCH 01/13] drm/i915/color: Place 3D LUT after CSC in plane color pipeline 2025-12-19 6:56 ` [PATCH 01/13] drm/i915/color: Place 3D LUT after CSC in plane color pipeline Chaitanya Kumar Borah @ 2026-01-05 8:33 ` Kandpal, Suraj 2026-01-06 9:48 ` Shankar, Uma 1 sibling, 0 replies; 51+ messages in thread From: Kandpal, Suraj @ 2026-01-05 8:33 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, Shankar, Uma, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D > > Subject: [PATCH 01/13] drm/i915/color: Place 3D LUT after CSC in plane color > pipeline > > Commit 65db7a1f9cf7 ("drm/i915/color: Add 3D LUT to color pipeline") This line is not needed since Fixes tells us what introduces the problematic change. Maybe add why this ordering was incorrect. With that addressed, LGTM, Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com> > introduced the 3D LUT block before the CSC stage. This ordering is incorrect. > > Move the 3D LUT block to its correct position in the plane color > pipeline: > > [Pre-CSC] -> [CSC] -> [3DLUT] -> [Post-CSC] > > Fixes: 65db7a1f9cf7 ("drm/i915/color: Add 3D LUT to color pipeline") > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > .../drm/i915/display/intel_color_pipeline.c | 18 +++++++++--------- > 1 file changed, 9 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > index 942d9b9c93ce..684641c8323b 100644 > --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > @@ -39,6 +39,15 @@ int _intel_color_pipeline_plane_init(struct drm_plane > *plane, struct drm_prop_en > /* TODO: handle failures and clean up */ > prev_op = &colorop->base; > > + colorop = intel_colorop_create(INTEL_PLANE_CB_CSC); > + ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, > + > DRM_COLOROP_FLAG_ALLOW_BYPASS); > + if (ret) > + return ret; > + > + drm_colorop_set_next_property(prev_op, &colorop->base); > + prev_op = &colorop->base; > + > if (DISPLAY_VER(display) >= 35 && > intel_color_crtc_has_3dlut(display, pipe) && > plane->type == DRM_PLANE_TYPE_PRIMARY) { @@ -55,15 +64,6 > @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct > drm_prop_en > prev_op = &colorop->base; > } > > - colorop = intel_colorop_create(INTEL_PLANE_CB_CSC); > - ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, > - > DRM_COLOROP_FLAG_ALLOW_BYPASS); > - if (ret) > - return ret; > - > - drm_colorop_set_next_property(prev_op, &colorop->base); > - prev_op = &colorop->base; > - > colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT); > ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, > plane, > PLANE_GAMMA_SIZE, > -- > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* RE: [PATCH 01/13] drm/i915/color: Place 3D LUT after CSC in plane color pipeline 2025-12-19 6:56 ` [PATCH 01/13] drm/i915/color: Place 3D LUT after CSC in plane color pipeline Chaitanya Kumar Borah 2026-01-05 8:33 ` Kandpal, Suraj @ 2026-01-06 9:48 ` Shankar, Uma 1 sibling, 0 replies; 51+ messages in thread From: Shankar, Uma @ 2026-01-06 9:48 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, Kandpal, Suraj, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D > -----Original Message----- > From: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com> > Sent: Friday, December 19, 2025 12:26 PM > To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel- > xe@lists.freedesktop.org; amd-gfx@lists.freedesktop.org > Cc: harry.wentland@amd.com; jani.nikula@linux.intel.com; > louis.chauvet@bootlin.com; mwen@igalia.com; contact@emersion.fr; > alex.hung@amd.com; daniels@collabora.com; Shankar, Uma > <uma.shankar@intel.com>; Kandpal, Suraj <suraj.kandpal@intel.com>; > nfraprado@collabora.com; ville.syrjala@linux.intel.com; Roper, Matthew D > <matthew.d.roper@intel.com> > Subject: [PATCH 01/13] drm/i915/color: Place 3D LUT after CSC in plane color > pipeline > > Commit 65db7a1f9cf7 ("drm/i915/color: Add 3D LUT to color pipeline") introduced > the 3D LUT block before the CSC stage. This ordering is incorrect. > > Move the 3D LUT block to its correct position in the plane color > pipeline: > > [Pre-CSC] -> [CSC] -> [3DLUT] -> [Post-CSC] Looks Good to me. Reviewed-by: Uma Shankar <uma.shankar@intel.com> > Fixes: 65db7a1f9cf7 ("drm/i915/color: Add 3D LUT to color pipeline") > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > .../drm/i915/display/intel_color_pipeline.c | 18 +++++++++--------- > 1 file changed, 9 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > index 942d9b9c93ce..684641c8323b 100644 > --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > @@ -39,6 +39,15 @@ int _intel_color_pipeline_plane_init(struct drm_plane > *plane, struct drm_prop_en > /* TODO: handle failures and clean up */ > prev_op = &colorop->base; > > + colorop = intel_colorop_create(INTEL_PLANE_CB_CSC); > + ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, > + > DRM_COLOROP_FLAG_ALLOW_BYPASS); > + if (ret) > + return ret; > + > + drm_colorop_set_next_property(prev_op, &colorop->base); > + prev_op = &colorop->base; > + > if (DISPLAY_VER(display) >= 35 && > intel_color_crtc_has_3dlut(display, pipe) && > plane->type == DRM_PLANE_TYPE_PRIMARY) { @@ -55,15 +64,6 > @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct > drm_prop_en > prev_op = &colorop->base; > } > > - colorop = intel_colorop_create(INTEL_PLANE_CB_CSC); > - ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, > - > DRM_COLOROP_FLAG_ALLOW_BYPASS); > - if (ret) > - return ret; > - > - drm_colorop_set_next_property(prev_op, &colorop->base); > - prev_op = &colorop->base; > - > colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT); > ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, > PLANE_GAMMA_SIZE, > -- > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* [PATCH 02/13] drm/amd/display: Fix color pipeline enum name leak 2025-12-19 6:56 [PATCH 00/13] drm: Color pipeline teardown and follow-up fixes/improvements Chaitanya Kumar Borah 2025-12-19 6:56 ` [PATCH 01/13] drm/i915/color: Place 3D LUT after CSC in plane color pipeline Chaitanya Kumar Borah @ 2025-12-19 6:56 ` Chaitanya Kumar Borah 2026-01-06 10:55 ` Shankar, Uma 2026-01-06 23:50 ` Alex Hung 2025-12-19 6:56 ` [PATCH 03/13] drm/vkms: " Chaitanya Kumar Borah ` (15 subsequent siblings) 17 siblings, 2 replies; 51+ messages in thread From: Chaitanya Kumar Borah @ 2025-12-19 6:56 UTC (permalink / raw) To: dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, alex.hung, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper dm_plane_init_colorops() allocates enum names for color pipelines. These are eventually passed to drm_property_create_enum() which create its own copies of the string. Free the strings after initialization is done. Also, allocate color pipeline enum names only after successfully creating color pipeline. Fixes: 9ba25915efba ("drm/amd/display: Add support for sRGB EOTF in DEGAM block") Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> --- .../drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c | 4 +++- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c | 13 +++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c index d585618b8064..a2de3bba8346 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c @@ -79,7 +79,6 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; list->type = ops[i]->base.id; - list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", ops[i]->base.id); i++; @@ -197,6 +196,9 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; drm_colorop_set_next_property(ops[i-1], ops[i]); + + list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", ops[0]->base.id); + return 0; cleanup: diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c index 2e3ee78999d9..7c4496fb4b9d 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c @@ -1790,12 +1790,13 @@ dm_atomic_plane_get_property(struct drm_plane *plane, static int dm_plane_init_colorops(struct drm_plane *plane) { - struct drm_prop_enum_list pipelines[MAX_COLOR_PIPELINES]; + struct drm_prop_enum_list pipelines[MAX_COLOR_PIPELINES] = {}; struct drm_device *dev = plane->dev; struct amdgpu_device *adev = drm_to_adev(dev); struct dc *dc = adev->dm.dc; int len = 0; - int ret; + int ret = 0; + int i; if (plane->type == DRM_PLANE_TYPE_CURSOR) return 0; @@ -1806,7 +1807,7 @@ dm_plane_init_colorops(struct drm_plane *plane) if (ret) { drm_err(plane->dev, "Failed to create color pipeline for plane %d: %d\n", plane->base.id, ret); - return ret; + goto out; } len++; @@ -1814,7 +1815,11 @@ dm_plane_init_colorops(struct drm_plane *plane) drm_plane_create_color_pipeline_property(plane, pipelines, len); } - return 0; +out: + for (i = 0; i < len; i++) + kfree(pipelines[i].name); + + return ret; } #endif -- 2.25.1 ^ permalink raw reply related [flat|nested] 51+ messages in thread
* RE: [PATCH 02/13] drm/amd/display: Fix color pipeline enum name leak 2025-12-19 6:56 ` [PATCH 02/13] drm/amd/display: Fix color pipeline enum name leak Chaitanya Kumar Borah @ 2026-01-06 10:55 ` Shankar, Uma 2026-01-06 23:50 ` Alex Hung 1 sibling, 0 replies; 51+ messages in thread From: Shankar, Uma @ 2026-01-06 10:55 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, harry.wentland@amd.com, alex.hung@amd.com Cc: jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, daniels@collabora.com, Kandpal, Suraj, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D > -----Original Message----- > From: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com> > Sent: Friday, December 19, 2025 12:26 PM > To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel- > xe@lists.freedesktop.org; amd-gfx@lists.freedesktop.org > Cc: harry.wentland@amd.com; jani.nikula@linux.intel.com; > louis.chauvet@bootlin.com; mwen@igalia.com; contact@emersion.fr; > alex.hung@amd.com; daniels@collabora.com; Shankar, Uma > <uma.shankar@intel.com>; Kandpal, Suraj <suraj.kandpal@intel.com>; > nfraprado@collabora.com; ville.syrjala@linux.intel.com; Roper, Matthew D > <matthew.d.roper@intel.com> > Subject: [PATCH 02/13] drm/amd/display: Fix color pipeline enum name leak > > dm_plane_init_colorops() allocates enum names for color pipelines. > These are eventually passed to drm_property_create_enum() which create its own > copies of the string. Free the strings after initialization is done. > > Also, allocate color pipeline enum names only after successfully creating color > pipeline. Looks Good to me. Reviewed-by: Uma Shankar <uma.shankar@intel.com> @harry.wentland@amd.com, @alex.hung@amd.com Please ack if looks ok to you as well. Regards, Uma Shankar > Fixes: 9ba25915efba ("drm/amd/display: Add support for sRGB EOTF in DEGAM > block") > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > .../drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c | 4 +++- > .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c | 13 +++++++++---- > 2 files changed, 12 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > index d585618b8064..a2de3bba8346 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > @@ -79,7 +79,6 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane > *plane, struct drm_pr > goto cleanup; > > list->type = ops[i]->base.id; > - list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", ops[i]- > >base.id); > > i++; > > @@ -197,6 +196,9 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > > drm_colorop_set_next_property(ops[i-1], ops[i]); > + > + list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", > +ops[0]->base.id); > + > return 0; > > cleanup: > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c > index 2e3ee78999d9..7c4496fb4b9d 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c > @@ -1790,12 +1790,13 @@ dm_atomic_plane_get_property(struct drm_plane > *plane, static int dm_plane_init_colorops(struct drm_plane *plane) { > - struct drm_prop_enum_list pipelines[MAX_COLOR_PIPELINES]; > + struct drm_prop_enum_list pipelines[MAX_COLOR_PIPELINES] = {}; > struct drm_device *dev = plane->dev; > struct amdgpu_device *adev = drm_to_adev(dev); > struct dc *dc = adev->dm.dc; > int len = 0; > - int ret; > + int ret = 0; > + int i; > > if (plane->type == DRM_PLANE_TYPE_CURSOR) > return 0; > @@ -1806,7 +1807,7 @@ dm_plane_init_colorops(struct drm_plane *plane) > if (ret) { > drm_err(plane->dev, "Failed to create color pipeline for > plane %d: %d\n", > plane->base.id, ret); > - return ret; > + goto out; > } > len++; > > @@ -1814,7 +1815,11 @@ dm_plane_init_colorops(struct drm_plane *plane) > drm_plane_create_color_pipeline_property(plane, pipelines, len); > } > > - return 0; > +out: > + for (i = 0; i < len; i++) > + kfree(pipelines[i].name); > + > + return ret; > } > #endif > > -- > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* Re: [PATCH 02/13] drm/amd/display: Fix color pipeline enum name leak 2025-12-19 6:56 ` [PATCH 02/13] drm/amd/display: Fix color pipeline enum name leak Chaitanya Kumar Borah 2026-01-06 10:55 ` Shankar, Uma @ 2026-01-06 23:50 ` Alex Hung 1 sibling, 0 replies; 51+ messages in thread From: Alex Hung @ 2026-01-06 23:50 UTC (permalink / raw) To: Chaitanya Kumar Borah, dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper Reviewed-by: Alex Hung <alex.hung@amd.com> On 12/18/25 23:56, Chaitanya Kumar Borah wrote: > dm_plane_init_colorops() allocates enum names for color pipelines. > These are eventually passed to drm_property_create_enum() which create > its own copies of the string. Free the strings after initialization > is done. > > Also, allocate color pipeline enum names only after successfully creating > color pipeline. > > Fixes: 9ba25915efba ("drm/amd/display: Add support for sRGB EOTF in DEGAM block") > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > .../drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c | 4 +++- > .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c | 13 +++++++++---- > 2 files changed, 12 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > index d585618b8064..a2de3bba8346 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > @@ -79,7 +79,6 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > > list->type = ops[i]->base.id; > - list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", ops[i]->base.id); > > i++; > > @@ -197,6 +196,9 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > > drm_colorop_set_next_property(ops[i-1], ops[i]); > + > + list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", ops[0]->base.id); > + > return 0; > > cleanup: > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c > index 2e3ee78999d9..7c4496fb4b9d 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c > @@ -1790,12 +1790,13 @@ dm_atomic_plane_get_property(struct drm_plane *plane, > static int > dm_plane_init_colorops(struct drm_plane *plane) > { > - struct drm_prop_enum_list pipelines[MAX_COLOR_PIPELINES]; > + struct drm_prop_enum_list pipelines[MAX_COLOR_PIPELINES] = {}; > struct drm_device *dev = plane->dev; > struct amdgpu_device *adev = drm_to_adev(dev); > struct dc *dc = adev->dm.dc; > int len = 0; > - int ret; > + int ret = 0; > + int i; > > if (plane->type == DRM_PLANE_TYPE_CURSOR) > return 0; > @@ -1806,7 +1807,7 @@ dm_plane_init_colorops(struct drm_plane *plane) > if (ret) { > drm_err(plane->dev, "Failed to create color pipeline for plane %d: %d\n", > plane->base.id, ret); > - return ret; > + goto out; > } > len++; > > @@ -1814,7 +1815,11 @@ dm_plane_init_colorops(struct drm_plane *plane) > drm_plane_create_color_pipeline_property(plane, pipelines, len); > } > > - return 0; > +out: > + for (i = 0; i < len; i++) > + kfree(pipelines[i].name); > + > + return ret; > } > #endif > ^ permalink raw reply [flat|nested] 51+ messages in thread
* [PATCH 03/13] drm/vkms: Fix color pipeline enum name leak 2025-12-19 6:56 [PATCH 00/13] drm: Color pipeline teardown and follow-up fixes/improvements Chaitanya Kumar Borah 2025-12-19 6:56 ` [PATCH 01/13] drm/i915/color: Place 3D LUT after CSC in plane color pipeline Chaitanya Kumar Borah 2025-12-19 6:56 ` [PATCH 02/13] drm/amd/display: Fix color pipeline enum name leak Chaitanya Kumar Borah @ 2025-12-19 6:56 ` Chaitanya Kumar Borah 2026-01-06 10:57 ` Shankar, Uma 2026-01-06 23:50 ` Alex Hung 2025-12-19 6:56 ` [PATCH 04/13] drm/i915/display: " Chaitanya Kumar Borah ` (14 subsequent siblings) 17 siblings, 2 replies; 51+ messages in thread From: Chaitanya Kumar Borah @ 2025-12-19 6:56 UTC (permalink / raw) To: dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, alex.hung, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper vkms_initialize_colorops() allocates enum names for color pipelines, which are copied by drm_property_create_enum(). The temporary strings were not freed, resulting in a memory leak. Allocate enum names only after successful pipeline construction and free them on all exit paths Fixes: c1e578bd08da ("drm/vkms: Add enumerated 1D curve colorop") Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> --- drivers/gpu/drm/vkms/vkms_colorop.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/vkms/vkms_colorop.c b/drivers/gpu/drm/vkms/vkms_colorop.c index 5c3ffc78aea0..d03a1f2e9c41 100644 --- a/drivers/gpu/drm/vkms/vkms_colorop.c +++ b/drivers/gpu/drm/vkms/vkms_colorop.c @@ -37,7 +37,6 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; list->type = ops[i]->base.id; - list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", ops[i]->base.id); i++; @@ -88,6 +87,8 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr drm_colorop_set_next_property(ops[i - 1], ops[i]); + list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", ops[0]->base.id); + return 0; cleanup: @@ -103,18 +104,18 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr int vkms_initialize_colorops(struct drm_plane *plane) { - struct drm_prop_enum_list pipeline; - int ret; + struct drm_prop_enum_list pipeline = {}; + int ret = 0; /* Add color pipeline */ ret = vkms_initialize_color_pipeline(plane, &pipeline); if (ret) - return ret; + goto out; /* Create COLOR_PIPELINE property and attach */ ret = drm_plane_create_color_pipeline_property(plane, &pipeline, 1); - if (ret) - return ret; - return 0; + kfree(pipeline.name); +out: + return ret; } -- 2.25.1 ^ permalink raw reply related [flat|nested] 51+ messages in thread
* RE: [PATCH 03/13] drm/vkms: Fix color pipeline enum name leak 2025-12-19 6:56 ` [PATCH 03/13] drm/vkms: " Chaitanya Kumar Borah @ 2026-01-06 10:57 ` Shankar, Uma 2026-01-06 23:50 ` Alex Hung 1 sibling, 0 replies; 51+ messages in thread From: Shankar, Uma @ 2026-01-06 10:57 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, Kandpal, Suraj, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D > -----Original Message----- > From: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com> > Sent: Friday, December 19, 2025 12:26 PM > To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel- > xe@lists.freedesktop.org; amd-gfx@lists.freedesktop.org > Cc: harry.wentland@amd.com; jani.nikula@linux.intel.com; > louis.chauvet@bootlin.com; mwen@igalia.com; contact@emersion.fr; > alex.hung@amd.com; daniels@collabora.com; Shankar, Uma > <uma.shankar@intel.com>; Kandpal, Suraj <suraj.kandpal@intel.com>; > nfraprado@collabora.com; ville.syrjala@linux.intel.com; Roper, Matthew D > <matthew.d.roper@intel.com> > Subject: [PATCH 03/13] drm/vkms: Fix color pipeline enum name leak > > vkms_initialize_colorops() allocates enum names for color pipelines, which are > copied by drm_property_create_enum(). The temporary strings were not freed, > resulting in a memory leak. > > Allocate enum names only after successful pipeline construction and free them on > all exit paths Looks Good to me. Reviewed-by: Uma Shankar <uma.shankar@intel.com> > Fixes: c1e578bd08da ("drm/vkms: Add enumerated 1D curve colorop") > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > drivers/gpu/drm/vkms/vkms_colorop.c | 15 ++++++++------- > 1 file changed, 8 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/vkms/vkms_colorop.c > b/drivers/gpu/drm/vkms/vkms_colorop.c > index 5c3ffc78aea0..d03a1f2e9c41 100644 > --- a/drivers/gpu/drm/vkms/vkms_colorop.c > +++ b/drivers/gpu/drm/vkms/vkms_colorop.c > @@ -37,7 +37,6 @@ static int vkms_initialize_color_pipeline(struct drm_plane > *plane, struct drm_pr > goto cleanup; > > list->type = ops[i]->base.id; > - list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", ops[i]- > >base.id); > > i++; > > @@ -88,6 +87,8 @@ static int vkms_initialize_color_pipeline(struct drm_plane > *plane, struct drm_pr > > drm_colorop_set_next_property(ops[i - 1], ops[i]); > > + list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", > +ops[0]->base.id); > + > return 0; > > cleanup: > @@ -103,18 +104,18 @@ static int vkms_initialize_color_pipeline(struct > drm_plane *plane, struct drm_pr > > int vkms_initialize_colorops(struct drm_plane *plane) { > - struct drm_prop_enum_list pipeline; > - int ret; > + struct drm_prop_enum_list pipeline = {}; > + int ret = 0; > > /* Add color pipeline */ > ret = vkms_initialize_color_pipeline(plane, &pipeline); > if (ret) > - return ret; > + goto out; > > /* Create COLOR_PIPELINE property and attach */ > ret = drm_plane_create_color_pipeline_property(plane, &pipeline, 1); > - if (ret) > - return ret; > > - return 0; > + kfree(pipeline.name); > +out: > + return ret; > } > -- > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* Re: [PATCH 03/13] drm/vkms: Fix color pipeline enum name leak 2025-12-19 6:56 ` [PATCH 03/13] drm/vkms: " Chaitanya Kumar Borah 2026-01-06 10:57 ` Shankar, Uma @ 2026-01-06 23:50 ` Alex Hung 1 sibling, 0 replies; 51+ messages in thread From: Alex Hung @ 2026-01-06 23:50 UTC (permalink / raw) To: Chaitanya Kumar Borah, dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper Reviewed-by: Alex Hung <alex.hung@amd.com> On 12/18/25 23:56, Chaitanya Kumar Borah wrote: > vkms_initialize_colorops() allocates enum names for color pipelines, > which are copied by drm_property_create_enum(). The temporary strings > were not freed, resulting in a memory leak. > > Allocate enum names only after successful pipeline construction and > free them on all exit paths > > Fixes: c1e578bd08da ("drm/vkms: Add enumerated 1D curve colorop") > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > drivers/gpu/drm/vkms/vkms_colorop.c | 15 ++++++++------- > 1 file changed, 8 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/vkms/vkms_colorop.c b/drivers/gpu/drm/vkms/vkms_colorop.c > index 5c3ffc78aea0..d03a1f2e9c41 100644 > --- a/drivers/gpu/drm/vkms/vkms_colorop.c > +++ b/drivers/gpu/drm/vkms/vkms_colorop.c > @@ -37,7 +37,6 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > > list->type = ops[i]->base.id; > - list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", ops[i]->base.id); > > i++; > > @@ -88,6 +87,8 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr > > drm_colorop_set_next_property(ops[i - 1], ops[i]); > > + list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", ops[0]->base.id); > + > return 0; > > cleanup: > @@ -103,18 +104,18 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr > > int vkms_initialize_colorops(struct drm_plane *plane) > { > - struct drm_prop_enum_list pipeline; > - int ret; > + struct drm_prop_enum_list pipeline = {}; > + int ret = 0; > > /* Add color pipeline */ > ret = vkms_initialize_color_pipeline(plane, &pipeline); > if (ret) > - return ret; > + goto out; > > /* Create COLOR_PIPELINE property and attach */ > ret = drm_plane_create_color_pipeline_property(plane, &pipeline, 1); > - if (ret) > - return ret; > > - return 0; > + kfree(pipeline.name); > +out: > + return ret; > } ^ permalink raw reply [flat|nested] 51+ messages in thread
* [PATCH 04/13] drm/i915/display: Fix color pipeline enum name leak 2025-12-19 6:56 [PATCH 00/13] drm: Color pipeline teardown and follow-up fixes/improvements Chaitanya Kumar Borah ` (2 preceding siblings ...) 2025-12-19 6:56 ` [PATCH 03/13] drm/vkms: " Chaitanya Kumar Borah @ 2025-12-19 6:56 ` Chaitanya Kumar Borah 2026-01-05 9:04 ` Kandpal, Suraj 2026-01-06 10:59 ` Shankar, Uma 2025-12-19 6:56 ` [PATCH 05/13] drm: Allow driver-managed destruction of colorop objects Chaitanya Kumar Borah ` (13 subsequent siblings) 17 siblings, 2 replies; 51+ messages in thread From: Chaitanya Kumar Borah @ 2025-12-19 6:56 UTC (permalink / raw) To: dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, alex.hung, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper intel_color_pipeline_plane_init() allocates enum names for color pipelines, which are copied by drm_property_create_enum(). The temporary strings were not freed, resulting in a memory leak. Allocate enum names only after successful pipeline construction and free them on all exit paths. Fixes: ef105316819d ("drm/i915/color: Create a transfer function color pipeline") Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> --- .../drm/i915/display/intel_color_pipeline.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c b/drivers/gpu/drm/i915/display/intel_color_pipeline.c index 684641c8323b..04af552b3648 100644 --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c @@ -34,7 +34,6 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en return ret; list->type = colorop->base.base.id; - list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", colorop->base.base.id); /* TODO: handle failures and clean up */ prev_op = &colorop->base; @@ -74,6 +73,8 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en drm_colorop_set_next_property(prev_op, &colorop->base); + list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", list->type); + return 0; } @@ -81,9 +82,10 @@ int intel_color_pipeline_plane_init(struct drm_plane *plane, enum pipe pipe) { struct drm_device *dev = plane->dev; struct intel_display *display = to_intel_display(dev); - struct drm_prop_enum_list pipelines[MAX_COLOR_PIPELINES]; + struct drm_prop_enum_list pipelines[MAX_COLOR_PIPELINES] = {}; int len = 0; - int ret; + int ret = 0; + int i; /* Currently expose pipeline only for HDR planes */ if (!icl_is_hdr_plane(display, to_intel_plane(plane)->id)) @@ -92,8 +94,14 @@ int intel_color_pipeline_plane_init(struct drm_plane *plane, enum pipe pipe) /* Add pipeline consisting of transfer functions */ ret = _intel_color_pipeline_plane_init(plane, &pipelines[len], pipe); if (ret) - return ret; + goto out; len++; - return drm_plane_create_color_pipeline_property(plane, pipelines, len); + ret = drm_plane_create_color_pipeline_property(plane, pipelines, len); + + for (i = 0; i < len; i++) + kfree(pipelines[i].name); + +out: + return ret; } -- 2.25.1 ^ permalink raw reply related [flat|nested] 51+ messages in thread
* RE: [PATCH 04/13] drm/i915/display: Fix color pipeline enum name leak 2025-12-19 6:56 ` [PATCH 04/13] drm/i915/display: " Chaitanya Kumar Borah @ 2026-01-05 9:04 ` Kandpal, Suraj 2026-01-06 10:59 ` Shankar, Uma 1 sibling, 0 replies; 51+ messages in thread From: Kandpal, Suraj @ 2026-01-05 9:04 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, Shankar, Uma, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D > Subject: [PATCH 04/13] drm/i915/display: Fix color pipeline enum name leak > > intel_color_pipeline_plane_init() allocates enum names for color pipelines, > which are copied by drm_property_create_enum(). The temporary strings were > not freed, resulting in a memory leak. > > Allocate enum names only after successful pipeline construction and free them > on all exit paths. > > Fixes: ef105316819d ("drm/i915/color: Create a transfer function color > pipeline") > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> LGTM, Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com> > --- > .../drm/i915/display/intel_color_pipeline.c | 18 +++++++++++++----- > 1 file changed, 13 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > index 684641c8323b..04af552b3648 100644 > --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > @@ -34,7 +34,6 @@ int _intel_color_pipeline_plane_init(struct drm_plane > *plane, struct drm_prop_en > return ret; > > list->type = colorop->base.base.id; > - list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", colorop- > >base.base.id); > > /* TODO: handle failures and clean up */ > prev_op = &colorop->base; > @@ -74,6 +73,8 @@ int _intel_color_pipeline_plane_init(struct drm_plane > *plane, struct drm_prop_en > > drm_colorop_set_next_property(prev_op, &colorop->base); > > + list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", list->type); > + > return 0; > } > > @@ -81,9 +82,10 @@ int intel_color_pipeline_plane_init(struct drm_plane > *plane, enum pipe pipe) { > struct drm_device *dev = plane->dev; > struct intel_display *display = to_intel_display(dev); > - struct drm_prop_enum_list pipelines[MAX_COLOR_PIPELINES]; > + struct drm_prop_enum_list pipelines[MAX_COLOR_PIPELINES] = {}; > int len = 0; > - int ret; > + int ret = 0; > + int i; > > /* Currently expose pipeline only for HDR planes */ > if (!icl_is_hdr_plane(display, to_intel_plane(plane)->id)) @@ -92,8 > +94,14 @@ int intel_color_pipeline_plane_init(struct drm_plane *plane, enum > pipe pipe) > /* Add pipeline consisting of transfer functions */ > ret = _intel_color_pipeline_plane_init(plane, &pipelines[len], pipe); > if (ret) > - return ret; > + goto out; > len++; > > - return drm_plane_create_color_pipeline_property(plane, pipelines, > len); > + ret = drm_plane_create_color_pipeline_property(plane, pipelines, len); > + > + for (i = 0; i < len; i++) > + kfree(pipelines[i].name); > + > +out: > + return ret; > } > -- > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* RE: [PATCH 04/13] drm/i915/display: Fix color pipeline enum name leak 2025-12-19 6:56 ` [PATCH 04/13] drm/i915/display: " Chaitanya Kumar Borah 2026-01-05 9:04 ` Kandpal, Suraj @ 2026-01-06 10:59 ` Shankar, Uma 1 sibling, 0 replies; 51+ messages in thread From: Shankar, Uma @ 2026-01-06 10:59 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, Kandpal, Suraj, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D > -----Original Message----- > From: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com> > Sent: Friday, December 19, 2025 12:26 PM > To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel- > xe@lists.freedesktop.org; amd-gfx@lists.freedesktop.org > Cc: harry.wentland@amd.com; jani.nikula@linux.intel.com; > louis.chauvet@bootlin.com; mwen@igalia.com; contact@emersion.fr; > alex.hung@amd.com; daniels@collabora.com; Shankar, Uma > <uma.shankar@intel.com>; Kandpal, Suraj <suraj.kandpal@intel.com>; > nfraprado@collabora.com; ville.syrjala@linux.intel.com; Roper, Matthew D > <matthew.d.roper@intel.com> > Subject: [PATCH 04/13] drm/i915/display: Fix color pipeline enum name leak > > intel_color_pipeline_plane_init() allocates enum names for color pipelines, which > are copied by drm_property_create_enum(). The temporary strings were not freed, > resulting in a memory leak. > > Allocate enum names only after successful pipeline construction and free them on > all exit paths. Looks Good to me. Reviewed-by: Uma Shankar <uma.shankar@intel.com> > Fixes: ef105316819d ("drm/i915/color: Create a transfer function color pipeline") > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > .../drm/i915/display/intel_color_pipeline.c | 18 +++++++++++++----- > 1 file changed, 13 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > index 684641c8323b..04af552b3648 100644 > --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > @@ -34,7 +34,6 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, > struct drm_prop_en > return ret; > > list->type = colorop->base.base.id; > - list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", colorop- > >base.base.id); > > /* TODO: handle failures and clean up */ > prev_op = &colorop->base; > @@ -74,6 +73,8 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, > struct drm_prop_en > > drm_colorop_set_next_property(prev_op, &colorop->base); > > + list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", list->type); > + > return 0; > } > > @@ -81,9 +82,10 @@ int intel_color_pipeline_plane_init(struct drm_plane *plane, > enum pipe pipe) { > struct drm_device *dev = plane->dev; > struct intel_display *display = to_intel_display(dev); > - struct drm_prop_enum_list pipelines[MAX_COLOR_PIPELINES]; > + struct drm_prop_enum_list pipelines[MAX_COLOR_PIPELINES] = {}; > int len = 0; > - int ret; > + int ret = 0; > + int i; > > /* Currently expose pipeline only for HDR planes */ > if (!icl_is_hdr_plane(display, to_intel_plane(plane)->id)) @@ -92,8 +94,14 > @@ int intel_color_pipeline_plane_init(struct drm_plane *plane, enum pipe pipe) > /* Add pipeline consisting of transfer functions */ > ret = _intel_color_pipeline_plane_init(plane, &pipelines[len], pipe); > if (ret) > - return ret; > + goto out; > len++; > > - return drm_plane_create_color_pipeline_property(plane, pipelines, len); > + ret = drm_plane_create_color_pipeline_property(plane, pipelines, len); > + > + for (i = 0; i < len; i++) > + kfree(pipelines[i].name); > + > +out: > + return ret; > } > -- > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* [PATCH 05/13] drm: Allow driver-managed destruction of colorop objects 2025-12-19 6:56 [PATCH 00/13] drm: Color pipeline teardown and follow-up fixes/improvements Chaitanya Kumar Borah ` (3 preceding siblings ...) 2025-12-19 6:56 ` [PATCH 04/13] drm/i915/display: " Chaitanya Kumar Borah @ 2025-12-19 6:56 ` Chaitanya Kumar Borah 2026-01-05 9:14 ` Kandpal, Suraj ` (2 more replies) 2025-12-19 6:56 ` [PATCH 06/13] drm/colorop: Add destroy helper for " Chaitanya Kumar Borah ` (12 subsequent siblings) 17 siblings, 3 replies; 51+ messages in thread From: Chaitanya Kumar Borah @ 2025-12-19 6:56 UTC (permalink / raw) To: dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, alex.hung, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper Some drivers might want to embed struct drm_colorop inside driver-specific objects, similar to planes or CRTCs. In such cases, freeing only the drm_colorop is incorrect. Add a drm_colorop_funcs callback to allow drivers to provide a destroy hook that cleans up the full enclosing object. Make changes in helper functions to accept helper functions as argument. Pass NULL for now to retain current behavior. Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> --- .../amd/display/amdgpu_dm/amdgpu_dm_colorop.c | 18 ++++++----- drivers/gpu/drm/drm_colorop.c | 31 +++++++++++++------ .../drm/i915/display/intel_color_pipeline.c | 8 ++--- drivers/gpu/drm/vkms/vkms_colorop.c | 10 +++--- include/drm/drm_colorop.h | 30 +++++++++++++++--- 5 files changed, 66 insertions(+), 31 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c index a2de3bba8346..dfdb4fb4219f 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c @@ -72,7 +72,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, amdgpu_dm_supported_degam_tfs, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) @@ -89,7 +89,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_mult_init(dev, ops[i], plane, DRM_COLOROP_FLAG_ALLOW_BYPASS); + ret = drm_plane_colorop_mult_init(dev, ops[i], plane, NULL, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) goto cleanup; @@ -104,7 +104,8 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, DRM_COLOROP_FLAG_ALLOW_BYPASS); + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, + DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) goto cleanup; @@ -120,7 +121,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, amdgpu_dm_supported_shaper_tfs, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) @@ -137,7 +138,8 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, MAX_COLOR_LUT_ENTRIES, + ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, NULL, + MAX_COLOR_LUT_ENTRIES, DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) @@ -154,7 +156,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_3dlut_init(dev, ops[i], plane, LUT3D_SIZE, + ret = drm_plane_colorop_3dlut_init(dev, ops[i], plane, NULL, LUT3D_SIZE, DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) @@ -172,7 +174,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, amdgpu_dm_supported_blnd_tfs, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) @@ -189,7 +191,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, MAX_COLOR_LUT_ENTRIES, + ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, NULL, MAX_COLOR_LUT_ENTRIES, DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/drm_colorop.c index 44eb823585d2..efe61bdd9b24 100644 --- a/drivers/gpu/drm/drm_colorop.c +++ b/drivers/gpu/drm/drm_colorop.c @@ -93,7 +93,8 @@ static const struct drm_prop_enum_list drm_colorop_lut3d_interpolation_list[] = /* Init Helpers */ static int drm_plane_colorop_init(struct drm_device *dev, struct drm_colorop *colorop, - struct drm_plane *plane, enum drm_colorop_type type, + struct drm_plane *plane, const struct drm_colorop_funcs *funcs, + enum drm_colorop_type type, uint32_t flags) { struct drm_mode_config *config = &dev->mode_config; @@ -109,6 +110,7 @@ static int drm_plane_colorop_init(struct drm_device *dev, struct drm_colorop *co colorop->type = type; colorop->plane = plane; colorop->next = NULL; + colorop->funcs = funcs; list_add_tail(&colorop->head, &config->colorop_list); colorop->index = config->num_colorop++; @@ -203,6 +205,7 @@ EXPORT_SYMBOL(drm_colorop_pipeline_destroy); * @dev: DRM device * @colorop: The drm_colorop object to initialize * @plane: The associated drm_plane + * @funcs: control functions for the new colorop * @supported_tfs: A bitfield of supported drm_plane_colorop_curve_1d_init enum values, * created using BIT(curve_type) and combined with the OR '|' * operator. @@ -210,7 +213,8 @@ EXPORT_SYMBOL(drm_colorop_pipeline_destroy); * @return zero on success, -E value on failure */ int drm_plane_colorop_curve_1d_init(struct drm_device *dev, struct drm_colorop *colorop, - struct drm_plane *plane, u64 supported_tfs, uint32_t flags) + struct drm_plane *plane, const struct drm_colorop_funcs *funcs, + u64 supported_tfs, uint32_t flags) { struct drm_prop_enum_list enum_list[DRM_COLOROP_1D_CURVE_COUNT]; int i, len; @@ -231,7 +235,7 @@ int drm_plane_colorop_curve_1d_init(struct drm_device *dev, struct drm_colorop * return -EINVAL; } - ret = drm_plane_colorop_init(dev, colorop, plane, DRM_COLOROP_1D_CURVE, flags); + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, DRM_COLOROP_1D_CURVE, flags); if (ret) return ret; @@ -288,20 +292,23 @@ static int drm_colorop_create_data_prop(struct drm_device *dev, struct drm_color * @dev: DRM device * @colorop: The drm_colorop object to initialize * @plane: The associated drm_plane + * @funcs: control functions for new colorop * @lut_size: LUT size supported by driver * @interpolation: 1D LUT interpolation type * @flags: bitmask of misc, see DRM_COLOROP_FLAG_* defines. * @return zero on success, -E value on failure */ int drm_plane_colorop_curve_1d_lut_init(struct drm_device *dev, struct drm_colorop *colorop, - struct drm_plane *plane, uint32_t lut_size, + struct drm_plane *plane, + const struct drm_colorop_funcs *funcs, + uint32_t lut_size, enum drm_colorop_lut1d_interpolation_type interpolation, uint32_t flags) { struct drm_property *prop; int ret; - ret = drm_plane_colorop_init(dev, colorop, plane, DRM_COLOROP_1D_LUT, flags); + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, DRM_COLOROP_1D_LUT, flags); if (ret) return ret; @@ -339,11 +346,12 @@ int drm_plane_colorop_curve_1d_lut_init(struct drm_device *dev, struct drm_color EXPORT_SYMBOL(drm_plane_colorop_curve_1d_lut_init); int drm_plane_colorop_ctm_3x4_init(struct drm_device *dev, struct drm_colorop *colorop, - struct drm_plane *plane, uint32_t flags) + struct drm_plane *plane, const struct drm_colorop_funcs *funcs, + uint32_t flags) { int ret; - ret = drm_plane_colorop_init(dev, colorop, plane, DRM_COLOROP_CTM_3X4, flags); + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, DRM_COLOROP_CTM_3X4, flags); if (ret) return ret; @@ -363,16 +371,18 @@ EXPORT_SYMBOL(drm_plane_colorop_ctm_3x4_init); * @dev: DRM device * @colorop: The drm_colorop object to initialize * @plane: The associated drm_plane + * @funcs: control functions for the new colorop * @flags: bitmask of misc, see DRM_COLOROP_FLAG_* defines. * @return zero on success, -E value on failure */ int drm_plane_colorop_mult_init(struct drm_device *dev, struct drm_colorop *colorop, - struct drm_plane *plane, uint32_t flags) + struct drm_plane *plane, const struct drm_colorop_funcs *funcs, + uint32_t flags) { struct drm_property *prop; int ret; - ret = drm_plane_colorop_init(dev, colorop, plane, DRM_COLOROP_MULTIPLIER, flags); + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, DRM_COLOROP_MULTIPLIER, flags); if (ret) return ret; @@ -391,6 +401,7 @@ EXPORT_SYMBOL(drm_plane_colorop_mult_init); int drm_plane_colorop_3dlut_init(struct drm_device *dev, struct drm_colorop *colorop, struct drm_plane *plane, + const struct drm_colorop_funcs *funcs, uint32_t lut_size, enum drm_colorop_lut3d_interpolation_type interpolation, uint32_t flags) @@ -398,7 +409,7 @@ int drm_plane_colorop_3dlut_init(struct drm_device *dev, struct drm_colorop *col struct drm_property *prop; int ret; - ret = drm_plane_colorop_init(dev, colorop, plane, DRM_COLOROP_3D_LUT, flags); + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, DRM_COLOROP_3D_LUT, flags); if (ret) return ret; diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c b/drivers/gpu/drm/i915/display/intel_color_pipeline.c index 04af552b3648..d3d73d60727c 100644 --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c @@ -25,7 +25,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en colorop = intel_colorop_create(INTEL_PLANE_CB_PRE_CSC_LUT); - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, NULL, PLANE_DEGAMMA_SIZE, DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, DRM_COLOROP_FLAG_ALLOW_BYPASS); @@ -39,7 +39,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en prev_op = &colorop->base; colorop = intel_colorop_create(INTEL_PLANE_CB_CSC); - ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, + ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, NULL, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) return ret; @@ -52,7 +52,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en plane->type == DRM_PLANE_TYPE_PRIMARY) { colorop = intel_colorop_create(INTEL_PLANE_CB_3DLUT); - ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, plane, 17, + ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, plane, NULL, 17, DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, true); if (ret) @@ -64,7 +64,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en } colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT); - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, NULL, PLANE_GAMMA_SIZE, DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, DRM_COLOROP_FLAG_ALLOW_BYPASS); diff --git a/drivers/gpu/drm/vkms/vkms_colorop.c b/drivers/gpu/drm/vkms/vkms_colorop.c index d03a1f2e9c41..9e9dd0494628 100644 --- a/drivers/gpu/drm/vkms/vkms_colorop.c +++ b/drivers/gpu/drm/vkms/vkms_colorop.c @@ -31,7 +31,7 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, supported_tfs, + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, supported_tfs, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) goto cleanup; @@ -48,7 +48,8 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, DRM_COLOROP_FLAG_ALLOW_BYPASS); + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, + DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) goto cleanup; @@ -64,7 +65,8 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, DRM_COLOROP_FLAG_ALLOW_BYPASS); + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, + DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) goto cleanup; @@ -80,7 +82,7 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, supported_tfs, + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, supported_tfs, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) goto cleanup; diff --git a/include/drm/drm_colorop.h b/include/drm/drm_colorop.h index a3a32f9f918c..45d1b1d3faf9 100644 --- a/include/drm/drm_colorop.h +++ b/include/drm/drm_colorop.h @@ -187,6 +187,19 @@ struct drm_colorop_state { struct drm_atomic_state *state; }; +/** + * struct drm_colorop_funcs - driver colorop control functions + */ +struct drm_colorop_funcs { + /** + * @destroy: + * + * Clean up colorop resources. This is called at driver unload time + * through drm_mode_config_cleanup() + */ + void (*destroy)(struct drm_colorop *colorop); +}; + /** * struct drm_colorop - DRM color operation control structure * @@ -362,6 +375,8 @@ struct drm_colorop { */ struct drm_property *next_property; + /** @funcs: colorop control functions */ + const struct drm_colorop_funcs *funcs; }; #define obj_to_colorop(x) container_of(x, struct drm_colorop, base) @@ -390,17 +405,22 @@ void drm_colorop_pipeline_destroy(struct drm_device *dev); void drm_colorop_cleanup(struct drm_colorop *colorop); int drm_plane_colorop_curve_1d_init(struct drm_device *dev, struct drm_colorop *colorop, - struct drm_plane *plane, u64 supported_tfs, uint32_t flags); + struct drm_plane *plane, const struct drm_colorop_funcs *funcs, + u64 supported_tfs, uint32_t flags); int drm_plane_colorop_curve_1d_lut_init(struct drm_device *dev, struct drm_colorop *colorop, - struct drm_plane *plane, uint32_t lut_size, + struct drm_plane *plane, + const struct drm_colorop_funcs *funcs, + uint32_t lut_size, enum drm_colorop_lut1d_interpolation_type interpolation, uint32_t flags); int drm_plane_colorop_ctm_3x4_init(struct drm_device *dev, struct drm_colorop *colorop, - struct drm_plane *plane, uint32_t flags); + struct drm_plane *plane, const struct drm_colorop_funcs *funcs, + uint32_t flags); int drm_plane_colorop_mult_init(struct drm_device *dev, struct drm_colorop *colorop, - struct drm_plane *plane, uint32_t flags); + struct drm_plane *plane, const struct drm_colorop_funcs *funcs, + uint32_t flags); int drm_plane_colorop_3dlut_init(struct drm_device *dev, struct drm_colorop *colorop, - struct drm_plane *plane, + struct drm_plane *plane, const struct drm_colorop_funcs *funcs, uint32_t lut_size, enum drm_colorop_lut3d_interpolation_type interpolation, uint32_t flags); -- 2.25.1 ^ permalink raw reply related [flat|nested] 51+ messages in thread
* RE: [PATCH 05/13] drm: Allow driver-managed destruction of colorop objects 2025-12-19 6:56 ` [PATCH 05/13] drm: Allow driver-managed destruction of colorop objects Chaitanya Kumar Borah @ 2026-01-05 9:14 ` Kandpal, Suraj 2026-01-06 11:05 ` Shankar, Uma 2026-01-07 0:02 ` Alex Hung 2 siblings, 0 replies; 51+ messages in thread From: Kandpal, Suraj @ 2026-01-05 9:14 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, Shankar, Uma, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D > Subject: [PATCH 05/13] drm: Allow driver-managed destruction of colorop > objects > > Some drivers might want to embed struct drm_colorop inside driver-specific > objects, similar to planes or CRTCs. In such cases, freeing only the drm_colorop > is incorrect. > > Add a drm_colorop_funcs callback to allow drivers to provide a destroy hook > that cleans up the full enclosing object. Make changes in helper functions to > accept helper functions as argument. Pass NULL for now to retain current > behavior. > > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> LGTM, Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com> > --- > .../amd/display/amdgpu_dm/amdgpu_dm_colorop.c | 18 ++++++----- > drivers/gpu/drm/drm_colorop.c | 31 +++++++++++++------ > .../drm/i915/display/intel_color_pipeline.c | 8 ++--- > drivers/gpu/drm/vkms/vkms_colorop.c | 10 +++--- > include/drm/drm_colorop.h | 30 +++++++++++++++--- > 5 files changed, 66 insertions(+), 31 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > index a2de3bba8346..dfdb4fb4219f 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > @@ -72,7 +72,7 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, > > amdgpu_dm_supported_degam_tfs, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -89,7 +89,7 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_mult_init(dev, ops[i], plane, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > + ret = drm_plane_colorop_mult_init(dev, ops[i], plane, NULL, > +DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > > @@ -104,7 +104,8 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, > + > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > > @@ -120,7 +121,7 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, > NULL, > > amdgpu_dm_supported_shaper_tfs, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -137,7 +138,8 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, > MAX_COLOR_LUT_ENTRIES, > + ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, > NULL, > + > MAX_COLOR_LUT_ENTRIES, > > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -154,7 +156,7 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_3dlut_init(dev, ops[i], plane, > LUT3D_SIZE, > + ret = drm_plane_colorop_3dlut_init(dev, ops[i], plane, NULL, > +LUT3D_SIZE, > > DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -172,7 +174,7 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, > amdgpu_dm_supported_blnd_tfs, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -189,7 +191,7 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, > MAX_COLOR_LUT_ENTRIES, > + ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, NULL, > +MAX_COLOR_LUT_ENTRIES, > > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/drm_colorop.c > index 44eb823585d2..efe61bdd9b24 100644 > --- a/drivers/gpu/drm/drm_colorop.c > +++ b/drivers/gpu/drm/drm_colorop.c > @@ -93,7 +93,8 @@ static const struct drm_prop_enum_list > drm_colorop_lut3d_interpolation_list[] = > /* Init Helpers */ > > static int drm_plane_colorop_init(struct drm_device *dev, struct drm_colorop > *colorop, > - struct drm_plane *plane, enum > drm_colorop_type type, > + struct drm_plane *plane, const struct > drm_colorop_funcs *funcs, > + enum drm_colorop_type type, > uint32_t flags) > { > struct drm_mode_config *config = &dev->mode_config; @@ -109,6 > +110,7 @@ static int drm_plane_colorop_init(struct drm_device *dev, struct > drm_colorop *co > colorop->type = type; > colorop->plane = plane; > colorop->next = NULL; > + colorop->funcs = funcs; > > list_add_tail(&colorop->head, &config->colorop_list); > colorop->index = config->num_colorop++; @@ -203,6 +205,7 @@ > EXPORT_SYMBOL(drm_colorop_pipeline_destroy); > * @dev: DRM device > * @colorop: The drm_colorop object to initialize > * @plane: The associated drm_plane > + * @funcs: control functions for the new colorop > * @supported_tfs: A bitfield of supported drm_plane_colorop_curve_1d_init > enum values, > * created using BIT(curve_type) and combined with the OR '|' > * operator. > @@ -210,7 +213,8 @@ EXPORT_SYMBOL(drm_colorop_pipeline_destroy); > * @return zero on success, -E value on failure > */ > int drm_plane_colorop_curve_1d_init(struct drm_device *dev, struct > drm_colorop *colorop, > - struct drm_plane *plane, u64 supported_tfs, > uint32_t flags) > + struct drm_plane *plane, const struct > drm_colorop_funcs *funcs, > + u64 supported_tfs, uint32_t flags) > { > struct drm_prop_enum_list > enum_list[DRM_COLOROP_1D_CURVE_COUNT]; > int i, len; > @@ -231,7 +235,7 @@ int drm_plane_colorop_curve_1d_init(struct > drm_device *dev, struct drm_colorop * > return -EINVAL; > } > > - ret = drm_plane_colorop_init(dev, colorop, plane, > DRM_COLOROP_1D_CURVE, flags); > + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, > +DRM_COLOROP_1D_CURVE, flags); > if (ret) > return ret; > > @@ -288,20 +292,23 @@ static int drm_colorop_create_data_prop(struct > drm_device *dev, struct drm_color > * @dev: DRM device > * @colorop: The drm_colorop object to initialize > * @plane: The associated drm_plane > + * @funcs: control functions for new colorop > * @lut_size: LUT size supported by driver > * @interpolation: 1D LUT interpolation type > * @flags: bitmask of misc, see DRM_COLOROP_FLAG_* defines. > * @return zero on success, -E value on failure > */ > int drm_plane_colorop_curve_1d_lut_init(struct drm_device *dev, struct > drm_colorop *colorop, > - struct drm_plane *plane, uint32_t > lut_size, > + struct drm_plane *plane, > + const struct drm_colorop_funcs > *funcs, > + uint32_t lut_size, > enum > drm_colorop_lut1d_interpolation_type interpolation, > uint32_t flags) > { > struct drm_property *prop; > int ret; > > - ret = drm_plane_colorop_init(dev, colorop, plane, > DRM_COLOROP_1D_LUT, flags); > + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, > +DRM_COLOROP_1D_LUT, flags); > if (ret) > return ret; > > @@ -339,11 +346,12 @@ int drm_plane_colorop_curve_1d_lut_init(struct > drm_device *dev, struct drm_color > EXPORT_SYMBOL(drm_plane_colorop_curve_1d_lut_init); > > int drm_plane_colorop_ctm_3x4_init(struct drm_device *dev, struct > drm_colorop *colorop, > - struct drm_plane *plane, uint32_t flags) > + struct drm_plane *plane, const struct > drm_colorop_funcs *funcs, > + uint32_t flags) > { > int ret; > > - ret = drm_plane_colorop_init(dev, colorop, plane, > DRM_COLOROP_CTM_3X4, flags); > + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, > +DRM_COLOROP_CTM_3X4, flags); > if (ret) > return ret; > > @@ -363,16 +371,18 @@ > EXPORT_SYMBOL(drm_plane_colorop_ctm_3x4_init); > * @dev: DRM device > * @colorop: The drm_colorop object to initialize > * @plane: The associated drm_plane > + * @funcs: control functions for the new colorop > * @flags: bitmask of misc, see DRM_COLOROP_FLAG_* defines. > * @return zero on success, -E value on failure > */ > int drm_plane_colorop_mult_init(struct drm_device *dev, struct drm_colorop > *colorop, > - struct drm_plane *plane, uint32_t flags) > + struct drm_plane *plane, const struct > drm_colorop_funcs *funcs, > + uint32_t flags) > { > struct drm_property *prop; > int ret; > > - ret = drm_plane_colorop_init(dev, colorop, plane, > DRM_COLOROP_MULTIPLIER, flags); > + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, > +DRM_COLOROP_MULTIPLIER, flags); > if (ret) > return ret; > > @@ -391,6 +401,7 @@ EXPORT_SYMBOL(drm_plane_colorop_mult_init); > > int drm_plane_colorop_3dlut_init(struct drm_device *dev, struct drm_colorop > *colorop, > struct drm_plane *plane, > + const struct drm_colorop_funcs *funcs, > uint32_t lut_size, > enum drm_colorop_lut3d_interpolation_type > interpolation, > uint32_t flags) > @@ -398,7 +409,7 @@ int drm_plane_colorop_3dlut_init(struct drm_device > *dev, struct drm_colorop *col > struct drm_property *prop; > int ret; > > - ret = drm_plane_colorop_init(dev, colorop, plane, > DRM_COLOROP_3D_LUT, flags); > + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, > +DRM_COLOROP_3D_LUT, flags); > if (ret) > return ret; > > diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > index 04af552b3648..d3d73d60727c 100644 > --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > @@ -25,7 +25,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane > *plane, struct drm_prop_en > > colorop = intel_colorop_create(INTEL_PLANE_CB_PRE_CSC_LUT); > > - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, > plane, > + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, > plane, > +NULL, > PLANE_DEGAMMA_SIZE, > > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); @@ -39,7 +39,7 @@ int > _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en > prev_op = &colorop->base; > > colorop = intel_colorop_create(INTEL_PLANE_CB_CSC); > - ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, > + ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, > NULL, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > return ret; > @@ -52,7 +52,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane > *plane, struct drm_prop_en > plane->type == DRM_PLANE_TYPE_PRIMARY) { > colorop = intel_colorop_create(INTEL_PLANE_CB_3DLUT); > > - ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, > plane, 17, > + ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, > plane, NULL, > +17, > > DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, > true); > if (ret) > @@ -64,7 +64,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane > *plane, struct drm_prop_en > } > > colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT); > - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, > plane, > + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, > plane, > +NULL, > PLANE_GAMMA_SIZE, > > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); diff --git > a/drivers/gpu/drm/vkms/vkms_colorop.c > b/drivers/gpu/drm/vkms/vkms_colorop.c > index d03a1f2e9c41..9e9dd0494628 100644 > --- a/drivers/gpu/drm/vkms/vkms_colorop.c > +++ b/drivers/gpu/drm/vkms/vkms_colorop.c > @@ -31,7 +31,7 @@ static int vkms_initialize_color_pipeline(struct drm_plane > *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, > supported_tfs, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, > +supported_tfs, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > @@ -48,7 +48,8 @@ static int vkms_initialize_color_pipeline(struct drm_plane > *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, > + > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > > @@ -64,7 +65,8 @@ static int vkms_initialize_color_pipeline(struct drm_plane > *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, > + > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > > @@ -80,7 +82,7 @@ static int vkms_initialize_color_pipeline(struct drm_plane > *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, > supported_tfs, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, > +supported_tfs, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > diff --git a/include/drm/drm_colorop.h b/include/drm/drm_colorop.h index > a3a32f9f918c..45d1b1d3faf9 100644 > --- a/include/drm/drm_colorop.h > +++ b/include/drm/drm_colorop.h > @@ -187,6 +187,19 @@ struct drm_colorop_state { > struct drm_atomic_state *state; > }; > > +/** > + * struct drm_colorop_funcs - driver colorop control functions */ > +struct drm_colorop_funcs { > + /** > + * @destroy: > + * > + * Clean up colorop resources. This is called at driver unload time > + * through drm_mode_config_cleanup() > + */ > + void (*destroy)(struct drm_colorop *colorop); }; > + > /** > * struct drm_colorop - DRM color operation control structure > * > @@ -362,6 +375,8 @@ struct drm_colorop { > */ > struct drm_property *next_property; > > + /** @funcs: colorop control functions */ > + const struct drm_colorop_funcs *funcs; > }; > > #define obj_to_colorop(x) container_of(x, struct drm_colorop, base) @@ - > 390,17 +405,22 @@ void drm_colorop_pipeline_destroy(struct drm_device > *dev); void drm_colorop_cleanup(struct drm_colorop *colorop); > > int drm_plane_colorop_curve_1d_init(struct drm_device *dev, struct > drm_colorop *colorop, > - struct drm_plane *plane, u64 supported_tfs, > uint32_t flags); > + struct drm_plane *plane, const struct > drm_colorop_funcs *funcs, > + u64 supported_tfs, uint32_t flags); > int drm_plane_colorop_curve_1d_lut_init(struct drm_device *dev, struct > drm_colorop *colorop, > - struct drm_plane *plane, uint32_t > lut_size, > + struct drm_plane *plane, > + const struct drm_colorop_funcs > *funcs, > + uint32_t lut_size, > enum > drm_colorop_lut1d_interpolation_type interpolation, > uint32_t flags); > int drm_plane_colorop_ctm_3x4_init(struct drm_device *dev, struct > drm_colorop *colorop, > - struct drm_plane *plane, uint32_t flags); > + struct drm_plane *plane, const struct > drm_colorop_funcs *funcs, > + uint32_t flags); > int drm_plane_colorop_mult_init(struct drm_device *dev, struct drm_colorop > *colorop, > - struct drm_plane *plane, uint32_t flags); > + struct drm_plane *plane, const struct > drm_colorop_funcs *funcs, > + uint32_t flags); > int drm_plane_colorop_3dlut_init(struct drm_device *dev, struct drm_colorop > *colorop, > - struct drm_plane *plane, > + struct drm_plane *plane, const struct > drm_colorop_funcs *funcs, > uint32_t lut_size, > enum drm_colorop_lut3d_interpolation_type > interpolation, > uint32_t flags); > -- > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* RE: [PATCH 05/13] drm: Allow driver-managed destruction of colorop objects 2025-12-19 6:56 ` [PATCH 05/13] drm: Allow driver-managed destruction of colorop objects Chaitanya Kumar Borah 2026-01-05 9:14 ` Kandpal, Suraj @ 2026-01-06 11:05 ` Shankar, Uma 2026-01-07 0:02 ` Alex Hung 2 siblings, 0 replies; 51+ messages in thread From: Shankar, Uma @ 2026-01-06 11:05 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, Kandpal, Suraj, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D > -----Original Message----- > From: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com> > Sent: Friday, December 19, 2025 12:26 PM > To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel- > xe@lists.freedesktop.org; amd-gfx@lists.freedesktop.org > Cc: harry.wentland@amd.com; jani.nikula@linux.intel.com; > louis.chauvet@bootlin.com; mwen@igalia.com; contact@emersion.fr; > alex.hung@amd.com; daniels@collabora.com; Shankar, Uma > <uma.shankar@intel.com>; Kandpal, Suraj <suraj.kandpal@intel.com>; > nfraprado@collabora.com; ville.syrjala@linux.intel.com; Roper, Matthew D > <matthew.d.roper@intel.com> > Subject: [PATCH 05/13] drm: Allow driver-managed destruction of colorop objects > > Some drivers might want to embed struct drm_colorop inside driver-specific > objects, similar to planes or CRTCs. In such cases, freeing only the drm_colorop > is incorrect. > > Add a drm_colorop_funcs callback to allow drivers to provide a destroy hook that > cleans up the full enclosing object. Make changes in helper functions to accept > helper functions as argument. Pass NULL for now to retain current behavior. Looks Good to me. Reviewed-by: Uma Shankar <uma.shankar@intel.com> > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > .../amd/display/amdgpu_dm/amdgpu_dm_colorop.c | 18 ++++++----- > drivers/gpu/drm/drm_colorop.c | 31 +++++++++++++------ > .../drm/i915/display/intel_color_pipeline.c | 8 ++--- > drivers/gpu/drm/vkms/vkms_colorop.c | 10 +++--- > include/drm/drm_colorop.h | 30 +++++++++++++++--- > 5 files changed, 66 insertions(+), 31 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > index a2de3bba8346..dfdb4fb4219f 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > @@ -72,7 +72,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane > *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, > amdgpu_dm_supported_degam_tfs, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -89,7 +89,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane > *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_mult_init(dev, ops[i], plane, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > + ret = drm_plane_colorop_mult_init(dev, ops[i], plane, NULL, > +DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > > @@ -104,7 +104,8 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, > + > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > > @@ -120,7 +121,7 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, > > amdgpu_dm_supported_shaper_tfs, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -137,7 +138,8 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, > MAX_COLOR_LUT_ENTRIES, > + ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, > NULL, > + > MAX_COLOR_LUT_ENTRIES, > > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -154,7 +156,7 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_3dlut_init(dev, ops[i], plane, > LUT3D_SIZE, > + ret = drm_plane_colorop_3dlut_init(dev, ops[i], plane, NULL, > +LUT3D_SIZE, > > DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -172,7 +174,7 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, > amdgpu_dm_supported_blnd_tfs, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -189,7 +191,7 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, > MAX_COLOR_LUT_ENTRIES, > + ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, NULL, > +MAX_COLOR_LUT_ENTRIES, > > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/drm_colorop.c index > 44eb823585d2..efe61bdd9b24 100644 > --- a/drivers/gpu/drm/drm_colorop.c > +++ b/drivers/gpu/drm/drm_colorop.c > @@ -93,7 +93,8 @@ static const struct drm_prop_enum_list > drm_colorop_lut3d_interpolation_list[] = > /* Init Helpers */ > > static int drm_plane_colorop_init(struct drm_device *dev, struct drm_colorop > *colorop, > - struct drm_plane *plane, enum > drm_colorop_type type, > + struct drm_plane *plane, const struct > drm_colorop_funcs *funcs, > + enum drm_colorop_type type, > uint32_t flags) > { > struct drm_mode_config *config = &dev->mode_config; @@ -109,6 > +110,7 @@ static int drm_plane_colorop_init(struct drm_device *dev, struct > drm_colorop *co > colorop->type = type; > colorop->plane = plane; > colorop->next = NULL; > + colorop->funcs = funcs; > > list_add_tail(&colorop->head, &config->colorop_list); > colorop->index = config->num_colorop++; @@ -203,6 +205,7 @@ > EXPORT_SYMBOL(drm_colorop_pipeline_destroy); > * @dev: DRM device > * @colorop: The drm_colorop object to initialize > * @plane: The associated drm_plane > + * @funcs: control functions for the new colorop > * @supported_tfs: A bitfield of supported drm_plane_colorop_curve_1d_init enum > values, > * created using BIT(curve_type) and combined with the OR '|' > * operator. > @@ -210,7 +213,8 @@ EXPORT_SYMBOL(drm_colorop_pipeline_destroy); > * @return zero on success, -E value on failure > */ > int drm_plane_colorop_curve_1d_init(struct drm_device *dev, struct drm_colorop > *colorop, > - struct drm_plane *plane, u64 supported_tfs, > uint32_t flags) > + struct drm_plane *plane, const struct > drm_colorop_funcs *funcs, > + u64 supported_tfs, uint32_t flags) > { > struct drm_prop_enum_list > enum_list[DRM_COLOROP_1D_CURVE_COUNT]; > int i, len; > @@ -231,7 +235,7 @@ int drm_plane_colorop_curve_1d_init(struct drm_device > *dev, struct drm_colorop * > return -EINVAL; > } > > - ret = drm_plane_colorop_init(dev, colorop, plane, > DRM_COLOROP_1D_CURVE, flags); > + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, > +DRM_COLOROP_1D_CURVE, flags); > if (ret) > return ret; > > @@ -288,20 +292,23 @@ static int drm_colorop_create_data_prop(struct > drm_device *dev, struct drm_color > * @dev: DRM device > * @colorop: The drm_colorop object to initialize > * @plane: The associated drm_plane > + * @funcs: control functions for new colorop > * @lut_size: LUT size supported by driver > * @interpolation: 1D LUT interpolation type > * @flags: bitmask of misc, see DRM_COLOROP_FLAG_* defines. > * @return zero on success, -E value on failure > */ > int drm_plane_colorop_curve_1d_lut_init(struct drm_device *dev, struct > drm_colorop *colorop, > - struct drm_plane *plane, uint32_t lut_size, > + struct drm_plane *plane, > + const struct drm_colorop_funcs *funcs, > + uint32_t lut_size, > enum > drm_colorop_lut1d_interpolation_type interpolation, > uint32_t flags) > { > struct drm_property *prop; > int ret; > > - ret = drm_plane_colorop_init(dev, colorop, plane, > DRM_COLOROP_1D_LUT, flags); > + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, > +DRM_COLOROP_1D_LUT, flags); > if (ret) > return ret; > > @@ -339,11 +346,12 @@ int drm_plane_colorop_curve_1d_lut_init(struct > drm_device *dev, struct drm_color > EXPORT_SYMBOL(drm_plane_colorop_curve_1d_lut_init); > > int drm_plane_colorop_ctm_3x4_init(struct drm_device *dev, struct drm_colorop > *colorop, > - struct drm_plane *plane, uint32_t flags) > + struct drm_plane *plane, const struct > drm_colorop_funcs *funcs, > + uint32_t flags) > { > int ret; > > - ret = drm_plane_colorop_init(dev, colorop, plane, > DRM_COLOROP_CTM_3X4, flags); > + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, > +DRM_COLOROP_CTM_3X4, flags); > if (ret) > return ret; > > @@ -363,16 +371,18 @@ EXPORT_SYMBOL(drm_plane_colorop_ctm_3x4_init); > * @dev: DRM device > * @colorop: The drm_colorop object to initialize > * @plane: The associated drm_plane > + * @funcs: control functions for the new colorop > * @flags: bitmask of misc, see DRM_COLOROP_FLAG_* defines. > * @return zero on success, -E value on failure > */ > int drm_plane_colorop_mult_init(struct drm_device *dev, struct drm_colorop > *colorop, > - struct drm_plane *plane, uint32_t flags) > + struct drm_plane *plane, const struct > drm_colorop_funcs *funcs, > + uint32_t flags) > { > struct drm_property *prop; > int ret; > > - ret = drm_plane_colorop_init(dev, colorop, plane, > DRM_COLOROP_MULTIPLIER, flags); > + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, > +DRM_COLOROP_MULTIPLIER, flags); > if (ret) > return ret; > > @@ -391,6 +401,7 @@ EXPORT_SYMBOL(drm_plane_colorop_mult_init); > > int drm_plane_colorop_3dlut_init(struct drm_device *dev, struct drm_colorop > *colorop, > struct drm_plane *plane, > + const struct drm_colorop_funcs *funcs, > uint32_t lut_size, > enum drm_colorop_lut3d_interpolation_type > interpolation, > uint32_t flags) > @@ -398,7 +409,7 @@ int drm_plane_colorop_3dlut_init(struct drm_device *dev, > struct drm_colorop *col > struct drm_property *prop; > int ret; > > - ret = drm_plane_colorop_init(dev, colorop, plane, > DRM_COLOROP_3D_LUT, flags); > + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, > +DRM_COLOROP_3D_LUT, flags); > if (ret) > return ret; > > diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > index 04af552b3648..d3d73d60727c 100644 > --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > @@ -25,7 +25,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, > struct drm_prop_en > > colorop = intel_colorop_create(INTEL_PLANE_CB_PRE_CSC_LUT); > > - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, > + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, > +NULL, > PLANE_DEGAMMA_SIZE, > > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); @@ -39,7 +39,7 @@ int > _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en > prev_op = &colorop->base; > > colorop = intel_colorop_create(INTEL_PLANE_CB_CSC); > - ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, > + ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, NULL, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > return ret; > @@ -52,7 +52,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, > struct drm_prop_en > plane->type == DRM_PLANE_TYPE_PRIMARY) { > colorop = intel_colorop_create(INTEL_PLANE_CB_3DLUT); > > - ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, plane, > 17, > + ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, plane, > NULL, > +17, > > DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, > true); > if (ret) > @@ -64,7 +64,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, > struct drm_prop_en > } > > colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT); > - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, > + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, > +NULL, > PLANE_GAMMA_SIZE, > > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); diff --git > a/drivers/gpu/drm/vkms/vkms_colorop.c b/drivers/gpu/drm/vkms/vkms_colorop.c > index d03a1f2e9c41..9e9dd0494628 100644 > --- a/drivers/gpu/drm/vkms/vkms_colorop.c > +++ b/drivers/gpu/drm/vkms/vkms_colorop.c > @@ -31,7 +31,7 @@ static int vkms_initialize_color_pipeline(struct drm_plane > *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, supported_tfs, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, > +supported_tfs, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > @@ -48,7 +48,8 @@ static int vkms_initialize_color_pipeline(struct drm_plane > *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, > + > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > > @@ -64,7 +65,8 @@ static int vkms_initialize_color_pipeline(struct drm_plane > *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, > + > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > > @@ -80,7 +82,7 @@ static int vkms_initialize_color_pipeline(struct drm_plane > *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, supported_tfs, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, > +supported_tfs, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > diff --git a/include/drm/drm_colorop.h b/include/drm/drm_colorop.h index > a3a32f9f918c..45d1b1d3faf9 100644 > --- a/include/drm/drm_colorop.h > +++ b/include/drm/drm_colorop.h > @@ -187,6 +187,19 @@ struct drm_colorop_state { > struct drm_atomic_state *state; > }; > > +/** > + * struct drm_colorop_funcs - driver colorop control functions */ > +struct drm_colorop_funcs { > + /** > + * @destroy: > + * > + * Clean up colorop resources. This is called at driver unload time > + * through drm_mode_config_cleanup() > + */ > + void (*destroy)(struct drm_colorop *colorop); }; > + > /** > * struct drm_colorop - DRM color operation control structure > * > @@ -362,6 +375,8 @@ struct drm_colorop { > */ > struct drm_property *next_property; > > + /** @funcs: colorop control functions */ > + const struct drm_colorop_funcs *funcs; > }; > > #define obj_to_colorop(x) container_of(x, struct drm_colorop, base) @@ -390,17 > +405,22 @@ void drm_colorop_pipeline_destroy(struct drm_device *dev); void > drm_colorop_cleanup(struct drm_colorop *colorop); > > int drm_plane_colorop_curve_1d_init(struct drm_device *dev, struct drm_colorop > *colorop, > - struct drm_plane *plane, u64 supported_tfs, > uint32_t flags); > + struct drm_plane *plane, const struct > drm_colorop_funcs *funcs, > + u64 supported_tfs, uint32_t flags); > int drm_plane_colorop_curve_1d_lut_init(struct drm_device *dev, struct > drm_colorop *colorop, > - struct drm_plane *plane, uint32_t lut_size, > + struct drm_plane *plane, > + const struct drm_colorop_funcs *funcs, > + uint32_t lut_size, > enum > drm_colorop_lut1d_interpolation_type interpolation, > uint32_t flags); > int drm_plane_colorop_ctm_3x4_init(struct drm_device *dev, struct drm_colorop > *colorop, > - struct drm_plane *plane, uint32_t flags); > + struct drm_plane *plane, const struct > drm_colorop_funcs *funcs, > + uint32_t flags); > int drm_plane_colorop_mult_init(struct drm_device *dev, struct drm_colorop > *colorop, > - struct drm_plane *plane, uint32_t flags); > + struct drm_plane *plane, const struct > drm_colorop_funcs *funcs, > + uint32_t flags); > int drm_plane_colorop_3dlut_init(struct drm_device *dev, struct drm_colorop > *colorop, > - struct drm_plane *plane, > + struct drm_plane *plane, const struct > drm_colorop_funcs *funcs, > uint32_t lut_size, > enum drm_colorop_lut3d_interpolation_type > interpolation, > uint32_t flags); > -- > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* Re: [PATCH 05/13] drm: Allow driver-managed destruction of colorop objects 2025-12-19 6:56 ` [PATCH 05/13] drm: Allow driver-managed destruction of colorop objects Chaitanya Kumar Borah 2026-01-05 9:14 ` Kandpal, Suraj 2026-01-06 11:05 ` Shankar, Uma @ 2026-01-07 0:02 ` Alex Hung 2026-01-08 14:11 ` Borah, Chaitanya Kumar 2 siblings, 1 reply; 51+ messages in thread From: Alex Hung @ 2026-01-07 0:02 UTC (permalink / raw) To: Chaitanya Kumar Borah, dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper It is a nitpick, but is it better to have patch 6 first, and then separate changes to drm to a single patch, and move the changes in amdgpu, vkms and i915 in the following corresponding patches (7, 8 and 9)? We can avoid passing NULL to struct drm_colorop_funcs *funcs. Otherwise it looks good to me. Reviewed-by: Alex Hung <alex.hung@amd.com> On 12/18/25 23:56, Chaitanya Kumar Borah wrote: > Some drivers might want to embed struct drm_colorop inside > driver-specific objects, similar to planes or CRTCs. In such > cases, freeing only the drm_colorop is incorrect. > > Add a drm_colorop_funcs callback to allow drivers to provide a destroy > hook that cleans up the full enclosing object. Make changes in helper > functions to accept helper functions as argument. Pass NULL for now > to retain current behavior. > > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > .../amd/display/amdgpu_dm/amdgpu_dm_colorop.c | 18 ++++++----- > drivers/gpu/drm/drm_colorop.c | 31 +++++++++++++------ > .../drm/i915/display/intel_color_pipeline.c | 8 ++--- > drivers/gpu/drm/vkms/vkms_colorop.c | 10 +++--- > include/drm/drm_colorop.h | 30 +++++++++++++++--- > 5 files changed, 66 insertions(+), 31 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > index a2de3bba8346..dfdb4fb4219f 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > @@ -72,7 +72,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, > amdgpu_dm_supported_degam_tfs, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -89,7 +89,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_mult_init(dev, ops[i], plane, DRM_COLOROP_FLAG_ALLOW_BYPASS); > + ret = drm_plane_colorop_mult_init(dev, ops[i], plane, NULL, DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > > @@ -104,7 +104,8 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, DRM_COLOROP_FLAG_ALLOW_BYPASS); > + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, > + DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > > @@ -120,7 +121,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, > amdgpu_dm_supported_shaper_tfs, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -137,7 +138,8 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, MAX_COLOR_LUT_ENTRIES, > + ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, NULL, > + MAX_COLOR_LUT_ENTRIES, > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -154,7 +156,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_3dlut_init(dev, ops[i], plane, LUT3D_SIZE, > + ret = drm_plane_colorop_3dlut_init(dev, ops[i], plane, NULL, LUT3D_SIZE, > DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -172,7 +174,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, > amdgpu_dm_supported_blnd_tfs, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -189,7 +191,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, MAX_COLOR_LUT_ENTRIES, > + ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, NULL, MAX_COLOR_LUT_ENTRIES, > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/drm_colorop.c > index 44eb823585d2..efe61bdd9b24 100644 > --- a/drivers/gpu/drm/drm_colorop.c > +++ b/drivers/gpu/drm/drm_colorop.c > @@ -93,7 +93,8 @@ static const struct drm_prop_enum_list drm_colorop_lut3d_interpolation_list[] = > /* Init Helpers */ > > static int drm_plane_colorop_init(struct drm_device *dev, struct drm_colorop *colorop, > - struct drm_plane *plane, enum drm_colorop_type type, > + struct drm_plane *plane, const struct drm_colorop_funcs *funcs, > + enum drm_colorop_type type, > uint32_t flags) > { > struct drm_mode_config *config = &dev->mode_config; > @@ -109,6 +110,7 @@ static int drm_plane_colorop_init(struct drm_device *dev, struct drm_colorop *co > colorop->type = type; > colorop->plane = plane; > colorop->next = NULL; > + colorop->funcs = funcs; > > list_add_tail(&colorop->head, &config->colorop_list); > colorop->index = config->num_colorop++; > @@ -203,6 +205,7 @@ EXPORT_SYMBOL(drm_colorop_pipeline_destroy); > * @dev: DRM device > * @colorop: The drm_colorop object to initialize > * @plane: The associated drm_plane > + * @funcs: control functions for the new colorop > * @supported_tfs: A bitfield of supported drm_plane_colorop_curve_1d_init enum values, > * created using BIT(curve_type) and combined with the OR '|' > * operator. > @@ -210,7 +213,8 @@ EXPORT_SYMBOL(drm_colorop_pipeline_destroy); > * @return zero on success, -E value on failure > */ > int drm_plane_colorop_curve_1d_init(struct drm_device *dev, struct drm_colorop *colorop, > - struct drm_plane *plane, u64 supported_tfs, uint32_t flags) > + struct drm_plane *plane, const struct drm_colorop_funcs *funcs, > + u64 supported_tfs, uint32_t flags) > { > struct drm_prop_enum_list enum_list[DRM_COLOROP_1D_CURVE_COUNT]; > int i, len; > @@ -231,7 +235,7 @@ int drm_plane_colorop_curve_1d_init(struct drm_device *dev, struct drm_colorop * > return -EINVAL; > } > > - ret = drm_plane_colorop_init(dev, colorop, plane, DRM_COLOROP_1D_CURVE, flags); > + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, DRM_COLOROP_1D_CURVE, flags); > if (ret) > return ret; > > @@ -288,20 +292,23 @@ static int drm_colorop_create_data_prop(struct drm_device *dev, struct drm_color > * @dev: DRM device > * @colorop: The drm_colorop object to initialize > * @plane: The associated drm_plane > + * @funcs: control functions for new colorop > * @lut_size: LUT size supported by driver > * @interpolation: 1D LUT interpolation type > * @flags: bitmask of misc, see DRM_COLOROP_FLAG_* defines. > * @return zero on success, -E value on failure > */ > int drm_plane_colorop_curve_1d_lut_init(struct drm_device *dev, struct drm_colorop *colorop, > - struct drm_plane *plane, uint32_t lut_size, > + struct drm_plane *plane, > + const struct drm_colorop_funcs *funcs, > + uint32_t lut_size, > enum drm_colorop_lut1d_interpolation_type interpolation, > uint32_t flags) > { > struct drm_property *prop; > int ret; > > - ret = drm_plane_colorop_init(dev, colorop, plane, DRM_COLOROP_1D_LUT, flags); > + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, DRM_COLOROP_1D_LUT, flags); > if (ret) > return ret; > > @@ -339,11 +346,12 @@ int drm_plane_colorop_curve_1d_lut_init(struct drm_device *dev, struct drm_color > EXPORT_SYMBOL(drm_plane_colorop_curve_1d_lut_init); > > int drm_plane_colorop_ctm_3x4_init(struct drm_device *dev, struct drm_colorop *colorop, > - struct drm_plane *plane, uint32_t flags) > + struct drm_plane *plane, const struct drm_colorop_funcs *funcs, > + uint32_t flags) > { > int ret; > > - ret = drm_plane_colorop_init(dev, colorop, plane, DRM_COLOROP_CTM_3X4, flags); > + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, DRM_COLOROP_CTM_3X4, flags); > if (ret) > return ret; > > @@ -363,16 +371,18 @@ EXPORT_SYMBOL(drm_plane_colorop_ctm_3x4_init); > * @dev: DRM device > * @colorop: The drm_colorop object to initialize > * @plane: The associated drm_plane > + * @funcs: control functions for the new colorop > * @flags: bitmask of misc, see DRM_COLOROP_FLAG_* defines. > * @return zero on success, -E value on failure > */ > int drm_plane_colorop_mult_init(struct drm_device *dev, struct drm_colorop *colorop, > - struct drm_plane *plane, uint32_t flags) > + struct drm_plane *plane, const struct drm_colorop_funcs *funcs, > + uint32_t flags) > { > struct drm_property *prop; > int ret; > > - ret = drm_plane_colorop_init(dev, colorop, plane, DRM_COLOROP_MULTIPLIER, flags); > + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, DRM_COLOROP_MULTIPLIER, flags); > if (ret) > return ret; > > @@ -391,6 +401,7 @@ EXPORT_SYMBOL(drm_plane_colorop_mult_init); > > int drm_plane_colorop_3dlut_init(struct drm_device *dev, struct drm_colorop *colorop, > struct drm_plane *plane, > + const struct drm_colorop_funcs *funcs, > uint32_t lut_size, > enum drm_colorop_lut3d_interpolation_type interpolation, > uint32_t flags) > @@ -398,7 +409,7 @@ int drm_plane_colorop_3dlut_init(struct drm_device *dev, struct drm_colorop *col > struct drm_property *prop; > int ret; > > - ret = drm_plane_colorop_init(dev, colorop, plane, DRM_COLOROP_3D_LUT, flags); > + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, DRM_COLOROP_3D_LUT, flags); > if (ret) > return ret; > > diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > index 04af552b3648..d3d73d60727c 100644 > --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > @@ -25,7 +25,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en > > colorop = intel_colorop_create(INTEL_PLANE_CB_PRE_CSC_LUT); > > - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, > + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, NULL, > PLANE_DEGAMMA_SIZE, > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > @@ -39,7 +39,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en > prev_op = &colorop->base; > > colorop = intel_colorop_create(INTEL_PLANE_CB_CSC); > - ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, > + ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, NULL, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > return ret; > @@ -52,7 +52,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en > plane->type == DRM_PLANE_TYPE_PRIMARY) { > colorop = intel_colorop_create(INTEL_PLANE_CB_3DLUT); > > - ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, plane, 17, > + ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, plane, NULL, 17, > DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, > true); > if (ret) > @@ -64,7 +64,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en > } > > colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT); > - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, > + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, NULL, > PLANE_GAMMA_SIZE, > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > diff --git a/drivers/gpu/drm/vkms/vkms_colorop.c b/drivers/gpu/drm/vkms/vkms_colorop.c > index d03a1f2e9c41..9e9dd0494628 100644 > --- a/drivers/gpu/drm/vkms/vkms_colorop.c > +++ b/drivers/gpu/drm/vkms/vkms_colorop.c > @@ -31,7 +31,7 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, supported_tfs, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, supported_tfs, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > @@ -48,7 +48,8 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, DRM_COLOROP_FLAG_ALLOW_BYPASS); > + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, > + DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > > @@ -64,7 +65,8 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, DRM_COLOROP_FLAG_ALLOW_BYPASS); > + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, > + DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > > @@ -80,7 +82,7 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, supported_tfs, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, supported_tfs, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > diff --git a/include/drm/drm_colorop.h b/include/drm/drm_colorop.h > index a3a32f9f918c..45d1b1d3faf9 100644 > --- a/include/drm/drm_colorop.h > +++ b/include/drm/drm_colorop.h > @@ -187,6 +187,19 @@ struct drm_colorop_state { > struct drm_atomic_state *state; > }; > > +/** > + * struct drm_colorop_funcs - driver colorop control functions > + */ > +struct drm_colorop_funcs { > + /** > + * @destroy: > + * > + * Clean up colorop resources. This is called at driver unload time > + * through drm_mode_config_cleanup() > + */ > + void (*destroy)(struct drm_colorop *colorop); > +}; > + > /** > * struct drm_colorop - DRM color operation control structure > * > @@ -362,6 +375,8 @@ struct drm_colorop { > */ > struct drm_property *next_property; > > + /** @funcs: colorop control functions */ > + const struct drm_colorop_funcs *funcs; > }; > > #define obj_to_colorop(x) container_of(x, struct drm_colorop, base) > @@ -390,17 +405,22 @@ void drm_colorop_pipeline_destroy(struct drm_device *dev); > void drm_colorop_cleanup(struct drm_colorop *colorop); > > int drm_plane_colorop_curve_1d_init(struct drm_device *dev, struct drm_colorop *colorop, > - struct drm_plane *plane, u64 supported_tfs, uint32_t flags); > + struct drm_plane *plane, const struct drm_colorop_funcs *funcs, > + u64 supported_tfs, uint32_t flags); > int drm_plane_colorop_curve_1d_lut_init(struct drm_device *dev, struct drm_colorop *colorop, > - struct drm_plane *plane, uint32_t lut_size, > + struct drm_plane *plane, > + const struct drm_colorop_funcs *funcs, > + uint32_t lut_size, > enum drm_colorop_lut1d_interpolation_type interpolation, > uint32_t flags); > int drm_plane_colorop_ctm_3x4_init(struct drm_device *dev, struct drm_colorop *colorop, > - struct drm_plane *plane, uint32_t flags); > + struct drm_plane *plane, const struct drm_colorop_funcs *funcs, > + uint32_t flags); > int drm_plane_colorop_mult_init(struct drm_device *dev, struct drm_colorop *colorop, > - struct drm_plane *plane, uint32_t flags); > + struct drm_plane *plane, const struct drm_colorop_funcs *funcs, > + uint32_t flags); > int drm_plane_colorop_3dlut_init(struct drm_device *dev, struct drm_colorop *colorop, > - struct drm_plane *plane, > + struct drm_plane *plane, const struct drm_colorop_funcs *funcs, > uint32_t lut_size, > enum drm_colorop_lut3d_interpolation_type interpolation, > uint32_t flags); ^ permalink raw reply [flat|nested] 51+ messages in thread
* Re: [PATCH 05/13] drm: Allow driver-managed destruction of colorop objects 2026-01-07 0:02 ` Alex Hung @ 2026-01-08 14:11 ` Borah, Chaitanya Kumar 2026-01-08 17:15 ` Alex Hung 0 siblings, 1 reply; 51+ messages in thread From: Borah, Chaitanya Kumar @ 2026-01-08 14:11 UTC (permalink / raw) To: Alex Hung, dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper On 1/7/2026 5:32 AM, Alex Hung wrote: > It is a nitpick, but is it better to have patch 6 first, and then > separate changes to drm to a single patch, and move the changes in > amdgpu, vkms and i915 in the following corresponding patches (7, 8 and 9)? > > We can avoid passing NULL to struct drm_colorop_funcs *funcs. Thank you very much, Alex, for the review. I structured the patches this way to keep each patch buildable and to keep the existing behavior intact until all changes are in place. Once the prototypes of the init functions are changed, all call sites need to be updated. I couldn’t find a way to keep the DRM changes isolated while also preserving per-patch buildability. If I am missing something here, please let me know. I can respin accordingly. In any case, I can move patch 6 ahead of this one. == Chaitanya > > Otherwise it looks good to me. > > Reviewed-by: Alex Hung <alex.hung@amd.com> > > On 12/18/25 23:56, Chaitanya Kumar Borah wrote: >> Some drivers might want to embed struct drm_colorop inside >> driver-specific objects, similar to planes or CRTCs. In such >> cases, freeing only the drm_colorop is incorrect. >> >> Add a drm_colorop_funcs callback to allow drivers to provide a destroy >> hook that cleans up the full enclosing object. Make changes in helper >> functions to accept helper functions as argument. Pass NULL for now >> to retain current behavior. >> >> Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> >> --- >> .../amd/display/amdgpu_dm/amdgpu_dm_colorop.c | 18 ++++++----- >> drivers/gpu/drm/drm_colorop.c | 31 +++++++++++++------ >> .../drm/i915/display/intel_color_pipeline.c | 8 ++--- >> drivers/gpu/drm/vkms/vkms_colorop.c | 10 +++--- >> include/drm/drm_colorop.h | 30 +++++++++++++++--- >> 5 files changed, 66 insertions(+), 31 deletions(-) >> >> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c >> b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c >> index a2de3bba8346..dfdb4fb4219f 100644 >> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c >> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c >> @@ -72,7 +72,7 @@ int amdgpu_dm_initialize_default_pipeline(struct >> drm_plane *plane, struct drm_pr >> goto cleanup; >> } >> - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, >> + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, >> amdgpu_dm_supported_degam_tfs, >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> if (ret) >> @@ -89,7 +89,7 @@ int amdgpu_dm_initialize_default_pipeline(struct >> drm_plane *plane, struct drm_pr >> goto cleanup; >> } >> - ret = drm_plane_colorop_mult_init(dev, ops[i], plane, >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> + ret = drm_plane_colorop_mult_init(dev, ops[i], plane, NULL, >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> if (ret) >> goto cleanup; >> @@ -104,7 +104,8 @@ int amdgpu_dm_initialize_default_pipeline(struct >> drm_plane *plane, struct drm_pr >> goto cleanup; >> } >> - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, >> + DRM_COLOROP_FLAG_ALLOW_BYPASS); >> if (ret) >> goto cleanup; >> @@ -120,7 +121,7 @@ int amdgpu_dm_initialize_default_pipeline(struct >> drm_plane *plane, struct drm_pr >> goto cleanup; >> } >> - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, >> + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, >> amdgpu_dm_supported_shaper_tfs, >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> if (ret) >> @@ -137,7 +138,8 @@ int amdgpu_dm_initialize_default_pipeline(struct >> drm_plane *plane, struct drm_pr >> goto cleanup; >> } >> - ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, >> MAX_COLOR_LUT_ENTRIES, >> + ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, >> NULL, >> + MAX_COLOR_LUT_ENTRIES, >> DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> if (ret) >> @@ -154,7 +156,7 @@ int amdgpu_dm_initialize_default_pipeline(struct >> drm_plane *plane, struct drm_pr >> goto cleanup; >> } >> - ret = drm_plane_colorop_3dlut_init(dev, ops[i], plane, >> LUT3D_SIZE, >> + ret = drm_plane_colorop_3dlut_init(dev, ops[i], plane, NULL, >> LUT3D_SIZE, >> DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> if (ret) >> @@ -172,7 +174,7 @@ int amdgpu_dm_initialize_default_pipeline(struct >> drm_plane *plane, struct drm_pr >> goto cleanup; >> } >> - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, >> + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, >> amdgpu_dm_supported_blnd_tfs, >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> if (ret) >> @@ -189,7 +191,7 @@ int amdgpu_dm_initialize_default_pipeline(struct >> drm_plane *plane, struct drm_pr >> goto cleanup; >> } >> - ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, >> MAX_COLOR_LUT_ENTRIES, >> + ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, >> NULL, MAX_COLOR_LUT_ENTRIES, >> DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> if (ret) >> diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/ >> drm_colorop.c >> index 44eb823585d2..efe61bdd9b24 100644 >> --- a/drivers/gpu/drm/drm_colorop.c >> +++ b/drivers/gpu/drm/drm_colorop.c >> @@ -93,7 +93,8 @@ static const struct drm_prop_enum_list >> drm_colorop_lut3d_interpolation_list[] = >> /* Init Helpers */ >> static int drm_plane_colorop_init(struct drm_device *dev, struct >> drm_colorop *colorop, >> - struct drm_plane *plane, enum drm_colorop_type type, >> + struct drm_plane *plane, const struct >> drm_colorop_funcs *funcs, >> + enum drm_colorop_type type, >> uint32_t flags) >> { >> struct drm_mode_config *config = &dev->mode_config; >> @@ -109,6 +110,7 @@ static int drm_plane_colorop_init(struct >> drm_device *dev, struct drm_colorop *co >> colorop->type = type; >> colorop->plane = plane; >> colorop->next = NULL; >> + colorop->funcs = funcs; >> list_add_tail(&colorop->head, &config->colorop_list); >> colorop->index = config->num_colorop++; >> @@ -203,6 +205,7 @@ EXPORT_SYMBOL(drm_colorop_pipeline_destroy); >> * @dev: DRM device >> * @colorop: The drm_colorop object to initialize >> * @plane: The associated drm_plane >> + * @funcs: control functions for the new colorop >> * @supported_tfs: A bitfield of supported >> drm_plane_colorop_curve_1d_init enum values, >> * created using BIT(curve_type) and combined with >> the OR '|' >> * operator. >> @@ -210,7 +213,8 @@ EXPORT_SYMBOL(drm_colorop_pipeline_destroy); >> * @return zero on success, -E value on failure >> */ >> int drm_plane_colorop_curve_1d_init(struct drm_device *dev, struct >> drm_colorop *colorop, >> - struct drm_plane *plane, u64 supported_tfs, >> uint32_t flags) >> + struct drm_plane *plane, const struct >> drm_colorop_funcs *funcs, >> + u64 supported_tfs, uint32_t flags) >> { >> struct drm_prop_enum_list enum_list[DRM_COLOROP_1D_CURVE_COUNT]; >> int i, len; >> @@ -231,7 +235,7 @@ int drm_plane_colorop_curve_1d_init(struct >> drm_device *dev, struct drm_colorop * >> return -EINVAL; >> } >> - ret = drm_plane_colorop_init(dev, colorop, plane, >> DRM_COLOROP_1D_CURVE, flags); >> + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, >> DRM_COLOROP_1D_CURVE, flags); >> if (ret) >> return ret; >> @@ -288,20 +292,23 @@ static int drm_colorop_create_data_prop(struct >> drm_device *dev, struct drm_color >> * @dev: DRM device >> * @colorop: The drm_colorop object to initialize >> * @plane: The associated drm_plane >> + * @funcs: control functions for new colorop >> * @lut_size: LUT size supported by driver >> * @interpolation: 1D LUT interpolation type >> * @flags: bitmask of misc, see DRM_COLOROP_FLAG_* defines. >> * @return zero on success, -E value on failure >> */ >> int drm_plane_colorop_curve_1d_lut_init(struct drm_device *dev, >> struct drm_colorop *colorop, >> - struct drm_plane *plane, uint32_t lut_size, >> + struct drm_plane *plane, >> + const struct drm_colorop_funcs *funcs, >> + uint32_t lut_size, >> enum drm_colorop_lut1d_interpolation_type >> interpolation, >> uint32_t flags) >> { >> struct drm_property *prop; >> int ret; >> - ret = drm_plane_colorop_init(dev, colorop, plane, >> DRM_COLOROP_1D_LUT, flags); >> + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, >> DRM_COLOROP_1D_LUT, flags); >> if (ret) >> return ret; >> @@ -339,11 +346,12 @@ int drm_plane_colorop_curve_1d_lut_init(struct >> drm_device *dev, struct drm_color >> EXPORT_SYMBOL(drm_plane_colorop_curve_1d_lut_init); >> int drm_plane_colorop_ctm_3x4_init(struct drm_device *dev, struct >> drm_colorop *colorop, >> - struct drm_plane *plane, uint32_t flags) >> + struct drm_plane *plane, const struct >> drm_colorop_funcs *funcs, >> + uint32_t flags) >> { >> int ret; >> - ret = drm_plane_colorop_init(dev, colorop, plane, >> DRM_COLOROP_CTM_3X4, flags); >> + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, >> DRM_COLOROP_CTM_3X4, flags); >> if (ret) >> return ret; >> @@ -363,16 +371,18 @@ EXPORT_SYMBOL(drm_plane_colorop_ctm_3x4_init); >> * @dev: DRM device >> * @colorop: The drm_colorop object to initialize >> * @plane: The associated drm_plane >> + * @funcs: control functions for the new colorop >> * @flags: bitmask of misc, see DRM_COLOROP_FLAG_* defines. >> * @return zero on success, -E value on failure >> */ >> int drm_plane_colorop_mult_init(struct drm_device *dev, struct >> drm_colorop *colorop, >> - struct drm_plane *plane, uint32_t flags) >> + struct drm_plane *plane, const struct >> drm_colorop_funcs *funcs, >> + uint32_t flags) >> { >> struct drm_property *prop; >> int ret; >> - ret = drm_plane_colorop_init(dev, colorop, plane, >> DRM_COLOROP_MULTIPLIER, flags); >> + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, >> DRM_COLOROP_MULTIPLIER, flags); >> if (ret) >> return ret; >> @@ -391,6 +401,7 @@ EXPORT_SYMBOL(drm_plane_colorop_mult_init); >> int drm_plane_colorop_3dlut_init(struct drm_device *dev, struct >> drm_colorop *colorop, >> struct drm_plane *plane, >> + const struct drm_colorop_funcs *funcs, >> uint32_t lut_size, >> enum drm_colorop_lut3d_interpolation_type >> interpolation, >> uint32_t flags) >> @@ -398,7 +409,7 @@ int drm_plane_colorop_3dlut_init(struct drm_device >> *dev, struct drm_colorop *col >> struct drm_property *prop; >> int ret; >> - ret = drm_plane_colorop_init(dev, colorop, plane, >> DRM_COLOROP_3D_LUT, flags); >> + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, >> DRM_COLOROP_3D_LUT, flags); >> if (ret) >> return ret; >> diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c b/ >> drivers/gpu/drm/i915/display/intel_color_pipeline.c >> index 04af552b3648..d3d73d60727c 100644 >> --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c >> +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c >> @@ -25,7 +25,7 @@ int _intel_color_pipeline_plane_init(struct >> drm_plane *plane, struct drm_prop_en >> colorop = intel_colorop_create(INTEL_PLANE_CB_PRE_CSC_LUT); >> - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, >> plane, >> + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, >> plane, NULL, >> PLANE_DEGAMMA_SIZE, >> DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> @@ -39,7 +39,7 @@ int _intel_color_pipeline_plane_init(struct >> drm_plane *plane, struct drm_prop_en >> prev_op = &colorop->base; >> colorop = intel_colorop_create(INTEL_PLANE_CB_CSC); >> - ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, >> + ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, >> NULL, >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> if (ret) >> return ret; >> @@ -52,7 +52,7 @@ int _intel_color_pipeline_plane_init(struct >> drm_plane *plane, struct drm_prop_en >> plane->type == DRM_PLANE_TYPE_PRIMARY) { >> colorop = intel_colorop_create(INTEL_PLANE_CB_3DLUT); >> - ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, >> plane, 17, >> + ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, >> plane, NULL, 17, >> DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, >> true); >> if (ret) >> @@ -64,7 +64,7 @@ int _intel_color_pipeline_plane_init(struct >> drm_plane *plane, struct drm_prop_en >> } >> colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT); >> - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, >> plane, >> + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, >> plane, NULL, >> PLANE_GAMMA_SIZE, >> DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> diff --git a/drivers/gpu/drm/vkms/vkms_colorop.c b/drivers/gpu/drm/ >> vkms/vkms_colorop.c >> index d03a1f2e9c41..9e9dd0494628 100644 >> --- a/drivers/gpu/drm/vkms/vkms_colorop.c >> +++ b/drivers/gpu/drm/vkms/vkms_colorop.c >> @@ -31,7 +31,7 @@ static int vkms_initialize_color_pipeline(struct >> drm_plane *plane, struct drm_pr >> goto cleanup; >> } >> - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, >> supported_tfs, >> + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, >> supported_tfs, >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> if (ret) >> goto cleanup; >> @@ -48,7 +48,8 @@ static int vkms_initialize_color_pipeline(struct >> drm_plane *plane, struct drm_pr >> goto cleanup; >> } >> - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, >> + DRM_COLOROP_FLAG_ALLOW_BYPASS); >> if (ret) >> goto cleanup; >> @@ -64,7 +65,8 @@ static int vkms_initialize_color_pipeline(struct >> drm_plane *plane, struct drm_pr >> goto cleanup; >> } >> - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, >> + DRM_COLOROP_FLAG_ALLOW_BYPASS); >> if (ret) >> goto cleanup; >> @@ -80,7 +82,7 @@ static int vkms_initialize_color_pipeline(struct >> drm_plane *plane, struct drm_pr >> goto cleanup; >> } >> - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, >> supported_tfs, >> + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, >> supported_tfs, >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> if (ret) >> goto cleanup; >> diff --git a/include/drm/drm_colorop.h b/include/drm/drm_colorop.h >> index a3a32f9f918c..45d1b1d3faf9 100644 >> --- a/include/drm/drm_colorop.h >> +++ b/include/drm/drm_colorop.h >> @@ -187,6 +187,19 @@ struct drm_colorop_state { >> struct drm_atomic_state *state; >> }; >> +/** >> + * struct drm_colorop_funcs - driver colorop control functions >> + */ >> +struct drm_colorop_funcs { >> + /** >> + * @destroy: >> + * >> + * Clean up colorop resources. This is called at driver unload time >> + * through drm_mode_config_cleanup() >> + */ >> + void (*destroy)(struct drm_colorop *colorop); >> +}; >> + >> /** >> * struct drm_colorop - DRM color operation control structure >> * >> @@ -362,6 +375,8 @@ struct drm_colorop { >> */ >> struct drm_property *next_property; >> + /** @funcs: colorop control functions */ >> + const struct drm_colorop_funcs *funcs; >> }; >> #define obj_to_colorop(x) container_of(x, struct drm_colorop, base) >> @@ -390,17 +405,22 @@ void drm_colorop_pipeline_destroy(struct >> drm_device *dev); >> void drm_colorop_cleanup(struct drm_colorop *colorop); >> int drm_plane_colorop_curve_1d_init(struct drm_device *dev, struct >> drm_colorop *colorop, >> - struct drm_plane *plane, u64 supported_tfs, >> uint32_t flags); >> + struct drm_plane *plane, const struct >> drm_colorop_funcs *funcs, >> + u64 supported_tfs, uint32_t flags); >> int drm_plane_colorop_curve_1d_lut_init(struct drm_device *dev, >> struct drm_colorop *colorop, >> - struct drm_plane *plane, uint32_t lut_size, >> + struct drm_plane *plane, >> + const struct drm_colorop_funcs *funcs, >> + uint32_t lut_size, >> enum drm_colorop_lut1d_interpolation_type >> interpolation, >> uint32_t flags); >> int drm_plane_colorop_ctm_3x4_init(struct drm_device *dev, struct >> drm_colorop *colorop, >> - struct drm_plane *plane, uint32_t flags); >> + struct drm_plane *plane, const struct >> drm_colorop_funcs *funcs, >> + uint32_t flags); >> int drm_plane_colorop_mult_init(struct drm_device *dev, struct >> drm_colorop *colorop, >> - struct drm_plane *plane, uint32_t flags); >> + struct drm_plane *plane, const struct >> drm_colorop_funcs *funcs, >> + uint32_t flags); >> int drm_plane_colorop_3dlut_init(struct drm_device *dev, struct >> drm_colorop *colorop, >> - struct drm_plane *plane, >> + struct drm_plane *plane, const struct >> drm_colorop_funcs *funcs, >> uint32_t lut_size, >> enum drm_colorop_lut3d_interpolation_type >> interpolation, >> uint32_t flags); > ^ permalink raw reply [flat|nested] 51+ messages in thread
* Re: [PATCH 05/13] drm: Allow driver-managed destruction of colorop objects 2026-01-08 14:11 ` Borah, Chaitanya Kumar @ 2026-01-08 17:15 ` Alex Hung 0 siblings, 0 replies; 51+ messages in thread From: Alex Hung @ 2026-01-08 17:15 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper On 1/8/26 07:11, Borah, Chaitanya Kumar wrote: > > On 1/7/2026 5:32 AM, Alex Hung wrote: >> It is a nitpick, but is it better to have patch 6 first, and then >> separate changes to drm to a single patch, and move the changes in >> amdgpu, vkms and i915 in the following corresponding patches (7, 8 and >> 9)? >> >> We can avoid passing NULL to struct drm_colorop_funcs *funcs. > > Thank you very much, Alex, for the review. > > I structured the patches this way to keep each patch buildable and to > keep the existing behavior intact until all changes are in place. > > Once the prototypes of the init functions are changed, all call sites > need to be updated. I couldn’t find a way to keep the DRM changes > isolated while also preserving per-patch buildability. If I am missing > something here, please let me know. I can respin accordingly. > > In any case, I can move patch 6 ahead of this one. Sounds good to me. > > == > Chaitanya > >> >> Otherwise it looks good to me. >> >> Reviewed-by: Alex Hung <alex.hung@amd.com> >> >> On 12/18/25 23:56, Chaitanya Kumar Borah wrote: >>> Some drivers might want to embed struct drm_colorop inside >>> driver-specific objects, similar to planes or CRTCs. In such >>> cases, freeing only the drm_colorop is incorrect. >>> >>> Add a drm_colorop_funcs callback to allow drivers to provide a destroy >>> hook that cleans up the full enclosing object. Make changes in helper >>> functions to accept helper functions as argument. Pass NULL for now >>> to retain current behavior. >>> >>> Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> >>> --- >>> .../amd/display/amdgpu_dm/amdgpu_dm_colorop.c | 18 ++++++----- >>> drivers/gpu/drm/drm_colorop.c | 31 +++++++++++++------ >>> .../drm/i915/display/intel_color_pipeline.c | 8 ++--- >>> drivers/gpu/drm/vkms/vkms_colorop.c | 10 +++--- >>> include/drm/drm_colorop.h | 30 +++++++++++++++--- >>> 5 files changed, 66 insertions(+), 31 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/ >>> amdgpu_dm_colorop.c b/drivers/gpu/drm/amd/display/amdgpu_dm/ >>> amdgpu_dm_colorop.c >>> index a2de3bba8346..dfdb4fb4219f 100644 >>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c >>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c >>> @@ -72,7 +72,7 @@ int amdgpu_dm_initialize_default_pipeline(struct >>> drm_plane *plane, struct drm_pr >>> goto cleanup; >>> } >>> - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, >>> + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, >>> amdgpu_dm_supported_degam_tfs, >>> DRM_COLOROP_FLAG_ALLOW_BYPASS); >>> if (ret) >>> @@ -89,7 +89,7 @@ int amdgpu_dm_initialize_default_pipeline(struct >>> drm_plane *plane, struct drm_pr >>> goto cleanup; >>> } >>> - ret = drm_plane_colorop_mult_init(dev, ops[i], plane, >>> DRM_COLOROP_FLAG_ALLOW_BYPASS); >>> + ret = drm_plane_colorop_mult_init(dev, ops[i], plane, NULL, >>> DRM_COLOROP_FLAG_ALLOW_BYPASS); >>> if (ret) >>> goto cleanup; >>> @@ -104,7 +104,8 @@ int amdgpu_dm_initialize_default_pipeline(struct >>> drm_plane *plane, struct drm_pr >>> goto cleanup; >>> } >>> - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, >>> DRM_COLOROP_FLAG_ALLOW_BYPASS); >>> + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, >>> + DRM_COLOROP_FLAG_ALLOW_BYPASS); >>> if (ret) >>> goto cleanup; >>> @@ -120,7 +121,7 @@ int amdgpu_dm_initialize_default_pipeline(struct >>> drm_plane *plane, struct drm_pr >>> goto cleanup; >>> } >>> - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, >>> + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, >>> amdgpu_dm_supported_shaper_tfs, >>> DRM_COLOROP_FLAG_ALLOW_BYPASS); >>> if (ret) >>> @@ -137,7 +138,8 @@ int amdgpu_dm_initialize_default_pipeline(struct >>> drm_plane *plane, struct drm_pr >>> goto cleanup; >>> } >>> - ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], >>> plane, MAX_COLOR_LUT_ENTRIES, >>> + ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], >>> plane, NULL, >>> + MAX_COLOR_LUT_ENTRIES, >>> DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, >>> DRM_COLOROP_FLAG_ALLOW_BYPASS); >>> if (ret) >>> @@ -154,7 +156,7 @@ int amdgpu_dm_initialize_default_pipeline(struct >>> drm_plane *plane, struct drm_pr >>> goto cleanup; >>> } >>> - ret = drm_plane_colorop_3dlut_init(dev, ops[i], plane, >>> LUT3D_SIZE, >>> + ret = drm_plane_colorop_3dlut_init(dev, ops[i], plane, NULL, >>> LUT3D_SIZE, >>> DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, >>> DRM_COLOROP_FLAG_ALLOW_BYPASS); >>> if (ret) >>> @@ -172,7 +174,7 @@ int amdgpu_dm_initialize_default_pipeline(struct >>> drm_plane *plane, struct drm_pr >>> goto cleanup; >>> } >>> - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, >>> + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, >>> amdgpu_dm_supported_blnd_tfs, >>> DRM_COLOROP_FLAG_ALLOW_BYPASS); >>> if (ret) >>> @@ -189,7 +191,7 @@ int amdgpu_dm_initialize_default_pipeline(struct >>> drm_plane *plane, struct drm_pr >>> goto cleanup; >>> } >>> - ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, >>> MAX_COLOR_LUT_ENTRIES, >>> + ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, >>> NULL, MAX_COLOR_LUT_ENTRIES, >>> DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, >>> DRM_COLOROP_FLAG_ALLOW_BYPASS); >>> if (ret) >>> diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/ >>> drm_colorop.c >>> index 44eb823585d2..efe61bdd9b24 100644 >>> --- a/drivers/gpu/drm/drm_colorop.c >>> +++ b/drivers/gpu/drm/drm_colorop.c >>> @@ -93,7 +93,8 @@ static const struct drm_prop_enum_list >>> drm_colorop_lut3d_interpolation_list[] = >>> /* Init Helpers */ >>> static int drm_plane_colorop_init(struct drm_device *dev, struct >>> drm_colorop *colorop, >>> - struct drm_plane *plane, enum drm_colorop_type type, >>> + struct drm_plane *plane, const struct >>> drm_colorop_funcs *funcs, >>> + enum drm_colorop_type type, >>> uint32_t flags) >>> { >>> struct drm_mode_config *config = &dev->mode_config; >>> @@ -109,6 +110,7 @@ static int drm_plane_colorop_init(struct >>> drm_device *dev, struct drm_colorop *co >>> colorop->type = type; >>> colorop->plane = plane; >>> colorop->next = NULL; >>> + colorop->funcs = funcs; >>> list_add_tail(&colorop->head, &config->colorop_list); >>> colorop->index = config->num_colorop++; >>> @@ -203,6 +205,7 @@ EXPORT_SYMBOL(drm_colorop_pipeline_destroy); >>> * @dev: DRM device >>> * @colorop: The drm_colorop object to initialize >>> * @plane: The associated drm_plane >>> + * @funcs: control functions for the new colorop >>> * @supported_tfs: A bitfield of supported >>> drm_plane_colorop_curve_1d_init enum values, >>> * created using BIT(curve_type) and combined with >>> the OR '|' >>> * operator. >>> @@ -210,7 +213,8 @@ EXPORT_SYMBOL(drm_colorop_pipeline_destroy); >>> * @return zero on success, -E value on failure >>> */ >>> int drm_plane_colorop_curve_1d_init(struct drm_device *dev, struct >>> drm_colorop *colorop, >>> - struct drm_plane *plane, u64 supported_tfs, >>> uint32_t flags) >>> + struct drm_plane *plane, const struct >>> drm_colorop_funcs *funcs, >>> + u64 supported_tfs, uint32_t flags) >>> { >>> struct drm_prop_enum_list enum_list[DRM_COLOROP_1D_CURVE_COUNT]; >>> int i, len; >>> @@ -231,7 +235,7 @@ int drm_plane_colorop_curve_1d_init(struct >>> drm_device *dev, struct drm_colorop * >>> return -EINVAL; >>> } >>> - ret = drm_plane_colorop_init(dev, colorop, plane, >>> DRM_COLOROP_1D_CURVE, flags); >>> + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, >>> DRM_COLOROP_1D_CURVE, flags); >>> if (ret) >>> return ret; >>> @@ -288,20 +292,23 @@ static int drm_colorop_create_data_prop(struct >>> drm_device *dev, struct drm_color >>> * @dev: DRM device >>> * @colorop: The drm_colorop object to initialize >>> * @plane: The associated drm_plane >>> + * @funcs: control functions for new colorop >>> * @lut_size: LUT size supported by driver >>> * @interpolation: 1D LUT interpolation type >>> * @flags: bitmask of misc, see DRM_COLOROP_FLAG_* defines. >>> * @return zero on success, -E value on failure >>> */ >>> int drm_plane_colorop_curve_1d_lut_init(struct drm_device *dev, >>> struct drm_colorop *colorop, >>> - struct drm_plane *plane, uint32_t lut_size, >>> + struct drm_plane *plane, >>> + const struct drm_colorop_funcs *funcs, >>> + uint32_t lut_size, >>> enum drm_colorop_lut1d_interpolation_type >>> interpolation, >>> uint32_t flags) >>> { >>> struct drm_property *prop; >>> int ret; >>> - ret = drm_plane_colorop_init(dev, colorop, plane, >>> DRM_COLOROP_1D_LUT, flags); >>> + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, >>> DRM_COLOROP_1D_LUT, flags); >>> if (ret) >>> return ret; >>> @@ -339,11 +346,12 @@ int drm_plane_colorop_curve_1d_lut_init(struct >>> drm_device *dev, struct drm_color >>> EXPORT_SYMBOL(drm_plane_colorop_curve_1d_lut_init); >>> int drm_plane_colorop_ctm_3x4_init(struct drm_device *dev, struct >>> drm_colorop *colorop, >>> - struct drm_plane *plane, uint32_t flags) >>> + struct drm_plane *plane, const struct >>> drm_colorop_funcs *funcs, >>> + uint32_t flags) >>> { >>> int ret; >>> - ret = drm_plane_colorop_init(dev, colorop, plane, >>> DRM_COLOROP_CTM_3X4, flags); >>> + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, >>> DRM_COLOROP_CTM_3X4, flags); >>> if (ret) >>> return ret; >>> @@ -363,16 +371,18 @@ EXPORT_SYMBOL(drm_plane_colorop_ctm_3x4_init); >>> * @dev: DRM device >>> * @colorop: The drm_colorop object to initialize >>> * @plane: The associated drm_plane >>> + * @funcs: control functions for the new colorop >>> * @flags: bitmask of misc, see DRM_COLOROP_FLAG_* defines. >>> * @return zero on success, -E value on failure >>> */ >>> int drm_plane_colorop_mult_init(struct drm_device *dev, struct >>> drm_colorop *colorop, >>> - struct drm_plane *plane, uint32_t flags) >>> + struct drm_plane *plane, const struct >>> drm_colorop_funcs *funcs, >>> + uint32_t flags) >>> { >>> struct drm_property *prop; >>> int ret; >>> - ret = drm_plane_colorop_init(dev, colorop, plane, >>> DRM_COLOROP_MULTIPLIER, flags); >>> + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, >>> DRM_COLOROP_MULTIPLIER, flags); >>> if (ret) >>> return ret; >>> @@ -391,6 +401,7 @@ EXPORT_SYMBOL(drm_plane_colorop_mult_init); >>> int drm_plane_colorop_3dlut_init(struct drm_device *dev, struct >>> drm_colorop *colorop, >>> struct drm_plane *plane, >>> + const struct drm_colorop_funcs *funcs, >>> uint32_t lut_size, >>> enum drm_colorop_lut3d_interpolation_type >>> interpolation, >>> uint32_t flags) >>> @@ -398,7 +409,7 @@ int drm_plane_colorop_3dlut_init(struct >>> drm_device *dev, struct drm_colorop *col >>> struct drm_property *prop; >>> int ret; >>> - ret = drm_plane_colorop_init(dev, colorop, plane, >>> DRM_COLOROP_3D_LUT, flags); >>> + ret = drm_plane_colorop_init(dev, colorop, plane, funcs, >>> DRM_COLOROP_3D_LUT, flags); >>> if (ret) >>> return ret; >>> diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c b/ >>> drivers/gpu/drm/i915/display/intel_color_pipeline.c >>> index 04af552b3648..d3d73d60727c 100644 >>> --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c >>> +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c >>> @@ -25,7 +25,7 @@ int _intel_color_pipeline_plane_init(struct >>> drm_plane *plane, struct drm_prop_en >>> colorop = intel_colorop_create(INTEL_PLANE_CB_PRE_CSC_LUT); >>> - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, >>> plane, >>> + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, >>> plane, NULL, >>> PLANE_DEGAMMA_SIZE, >>> DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, >>> DRM_COLOROP_FLAG_ALLOW_BYPASS); >>> @@ -39,7 +39,7 @@ int _intel_color_pipeline_plane_init(struct >>> drm_plane *plane, struct drm_prop_en >>> prev_op = &colorop->base; >>> colorop = intel_colorop_create(INTEL_PLANE_CB_CSC); >>> - ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, >>> + ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, >>> NULL, >>> DRM_COLOROP_FLAG_ALLOW_BYPASS); >>> if (ret) >>> return ret; >>> @@ -52,7 +52,7 @@ int _intel_color_pipeline_plane_init(struct >>> drm_plane *plane, struct drm_prop_en >>> plane->type == DRM_PLANE_TYPE_PRIMARY) { >>> colorop = intel_colorop_create(INTEL_PLANE_CB_3DLUT); >>> - ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, >>> plane, 17, >>> + ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, >>> plane, NULL, 17, >>> >>> DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, >>> true); >>> if (ret) >>> @@ -64,7 +64,7 @@ int _intel_color_pipeline_plane_init(struct >>> drm_plane *plane, struct drm_prop_en >>> } >>> colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT); >>> - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, >>> plane, >>> + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, >>> plane, NULL, >>> PLANE_GAMMA_SIZE, >>> DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, >>> DRM_COLOROP_FLAG_ALLOW_BYPASS); >>> diff --git a/drivers/gpu/drm/vkms/vkms_colorop.c b/drivers/gpu/drm/ >>> vkms/vkms_colorop.c >>> index d03a1f2e9c41..9e9dd0494628 100644 >>> --- a/drivers/gpu/drm/vkms/vkms_colorop.c >>> +++ b/drivers/gpu/drm/vkms/vkms_colorop.c >>> @@ -31,7 +31,7 @@ static int vkms_initialize_color_pipeline(struct >>> drm_plane *plane, struct drm_pr >>> goto cleanup; >>> } >>> - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, >>> supported_tfs, >>> + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, >>> supported_tfs, >>> DRM_COLOROP_FLAG_ALLOW_BYPASS); >>> if (ret) >>> goto cleanup; >>> @@ -48,7 +48,8 @@ static int vkms_initialize_color_pipeline(struct >>> drm_plane *plane, struct drm_pr >>> goto cleanup; >>> } >>> - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, >>> DRM_COLOROP_FLAG_ALLOW_BYPASS); >>> + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, >>> + DRM_COLOROP_FLAG_ALLOW_BYPASS); >>> if (ret) >>> goto cleanup; >>> @@ -64,7 +65,8 @@ static int vkms_initialize_color_pipeline(struct >>> drm_plane *plane, struct drm_pr >>> goto cleanup; >>> } >>> - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, >>> DRM_COLOROP_FLAG_ALLOW_BYPASS); >>> + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, >>> + DRM_COLOROP_FLAG_ALLOW_BYPASS); >>> if (ret) >>> goto cleanup; >>> @@ -80,7 +82,7 @@ static int vkms_initialize_color_pipeline(struct >>> drm_plane *plane, struct drm_pr >>> goto cleanup; >>> } >>> - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, >>> supported_tfs, >>> + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, >>> supported_tfs, >>> DRM_COLOROP_FLAG_ALLOW_BYPASS); >>> if (ret) >>> goto cleanup; >>> diff --git a/include/drm/drm_colorop.h b/include/drm/drm_colorop.h >>> index a3a32f9f918c..45d1b1d3faf9 100644 >>> --- a/include/drm/drm_colorop.h >>> +++ b/include/drm/drm_colorop.h >>> @@ -187,6 +187,19 @@ struct drm_colorop_state { >>> struct drm_atomic_state *state; >>> }; >>> +/** >>> + * struct drm_colorop_funcs - driver colorop control functions >>> + */ >>> +struct drm_colorop_funcs { >>> + /** >>> + * @destroy: >>> + * >>> + * Clean up colorop resources. This is called at driver unload time >>> + * through drm_mode_config_cleanup() >>> + */ >>> + void (*destroy)(struct drm_colorop *colorop); >>> +}; >>> + >>> /** >>> * struct drm_colorop - DRM color operation control structure >>> * >>> @@ -362,6 +375,8 @@ struct drm_colorop { >>> */ >>> struct drm_property *next_property; >>> + /** @funcs: colorop control functions */ >>> + const struct drm_colorop_funcs *funcs; >>> }; >>> #define obj_to_colorop(x) container_of(x, struct drm_colorop, base) >>> @@ -390,17 +405,22 @@ void drm_colorop_pipeline_destroy(struct >>> drm_device *dev); >>> void drm_colorop_cleanup(struct drm_colorop *colorop); >>> int drm_plane_colorop_curve_1d_init(struct drm_device *dev, struct >>> drm_colorop *colorop, >>> - struct drm_plane *plane, u64 supported_tfs, >>> uint32_t flags); >>> + struct drm_plane *plane, const struct >>> drm_colorop_funcs *funcs, >>> + u64 supported_tfs, uint32_t flags); >>> int drm_plane_colorop_curve_1d_lut_init(struct drm_device *dev, >>> struct drm_colorop *colorop, >>> - struct drm_plane *plane, uint32_t lut_size, >>> + struct drm_plane *plane, >>> + const struct drm_colorop_funcs *funcs, >>> + uint32_t lut_size, >>> enum drm_colorop_lut1d_interpolation_type >>> interpolation, >>> uint32_t flags); >>> int drm_plane_colorop_ctm_3x4_init(struct drm_device *dev, struct >>> drm_colorop *colorop, >>> - struct drm_plane *plane, uint32_t flags); >>> + struct drm_plane *plane, const struct >>> drm_colorop_funcs *funcs, >>> + uint32_t flags); >>> int drm_plane_colorop_mult_init(struct drm_device *dev, struct >>> drm_colorop *colorop, >>> - struct drm_plane *plane, uint32_t flags); >>> + struct drm_plane *plane, const struct >>> drm_colorop_funcs *funcs, >>> + uint32_t flags); >>> int drm_plane_colorop_3dlut_init(struct drm_device *dev, struct >>> drm_colorop *colorop, >>> - struct drm_plane *plane, >>> + struct drm_plane *plane, const struct >>> drm_colorop_funcs *funcs, >>> uint32_t lut_size, >>> enum drm_colorop_lut3d_interpolation_type >>> interpolation, >>> uint32_t flags); >> > ^ permalink raw reply [flat|nested] 51+ messages in thread
* [PATCH 06/13] drm/colorop: Add destroy helper for colorop objects 2025-12-19 6:56 [PATCH 00/13] drm: Color pipeline teardown and follow-up fixes/improvements Chaitanya Kumar Borah ` (4 preceding siblings ...) 2025-12-19 6:56 ` [PATCH 05/13] drm: Allow driver-managed destruction of colorop objects Chaitanya Kumar Borah @ 2025-12-19 6:56 ` Chaitanya Kumar Borah 2026-01-05 9:16 ` Kandpal, Suraj ` (2 more replies) 2025-12-19 6:56 ` [PATCH 07/13] drm/amd/display: Hook up colorop destroy helper for plane pipelines Chaitanya Kumar Borah ` (11 subsequent siblings) 17 siblings, 3 replies; 51+ messages in thread From: Chaitanya Kumar Borah @ 2025-12-19 6:56 UTC (permalink / raw) To: dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, alex.hung, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper Add a helper that performs common cleanup and frees the associated object. This can be used by drivers if they do not require any driver-specific teardown. Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> --- drivers/gpu/drm/drm_colorop.c | 12 ++++++++++++ include/drm/drm_colorop.h | 10 ++++++++++ 2 files changed, 22 insertions(+) diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/drm_colorop.c index efe61bdd9b24..4b27804bb0bd 100644 --- a/drivers/gpu/drm/drm_colorop.c +++ b/drivers/gpu/drm/drm_colorop.c @@ -180,6 +180,18 @@ void drm_colorop_cleanup(struct drm_colorop *colorop) } EXPORT_SYMBOL(drm_colorop_cleanup); +/** + * drm_colorop_destroy() - Helper for colorop destruction + * + * @colorop: colorop to destroy + */ +void drm_colorop_destroy(struct drm_colorop *colorop) +{ + drm_colorop_cleanup(colorop); + kfree(colorop); +} +EXPORT_SYMBOL(drm_colorop_destroy); + /** * drm_colorop_pipeline_destroy - Helper for color pipeline destruction * diff --git a/include/drm/drm_colorop.h b/include/drm/drm_colorop.h index 45d1b1d3faf9..ee6454b08b2d 100644 --- a/include/drm/drm_colorop.h +++ b/include/drm/drm_colorop.h @@ -440,6 +440,16 @@ void drm_colorop_atomic_destroy_state(struct drm_colorop *colorop, */ void drm_colorop_reset(struct drm_colorop *colorop); +/** + * drm_colorop_destroy - destroy colorop + * @colorop: drm colorop + * + * Destroys @colorop by performing common DRM cleanup and freeing the + * colorop object. This can be used by drivers if they do not + * require any driver-specific teardown. + */ +void drm_colorop_destroy(struct drm_colorop *colorop); + /** * drm_colorop_index - find the index of a registered colorop * @colorop: colorop to find index for -- 2.25.1 ^ permalink raw reply related [flat|nested] 51+ messages in thread
* RE: [PATCH 06/13] drm/colorop: Add destroy helper for colorop objects 2025-12-19 6:56 ` [PATCH 06/13] drm/colorop: Add destroy helper for " Chaitanya Kumar Borah @ 2026-01-05 9:16 ` Kandpal, Suraj 2026-01-06 11:07 ` Shankar, Uma 2026-01-07 0:02 ` Alex Hung 2 siblings, 0 replies; 51+ messages in thread From: Kandpal, Suraj @ 2026-01-05 9:16 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, Shankar, Uma, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D > Subject: [PATCH 06/13] drm/colorop: Add destroy helper for colorop objects > > Add a helper that performs common cleanup and frees the associated object. > This can be used by drivers if they do not require any driver-specific teardown. > > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> LGTM, Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com> > --- > drivers/gpu/drm/drm_colorop.c | 12 ++++++++++++ > include/drm/drm_colorop.h | 10 ++++++++++ > 2 files changed, 22 insertions(+) > > diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/drm_colorop.c > index efe61bdd9b24..4b27804bb0bd 100644 > --- a/drivers/gpu/drm/drm_colorop.c > +++ b/drivers/gpu/drm/drm_colorop.c > @@ -180,6 +180,18 @@ void drm_colorop_cleanup(struct drm_colorop > *colorop) } EXPORT_SYMBOL(drm_colorop_cleanup); > > +/** > + * drm_colorop_destroy() - Helper for colorop destruction > + * > + * @colorop: colorop to destroy > + */ > +void drm_colorop_destroy(struct drm_colorop *colorop) { > + drm_colorop_cleanup(colorop); > + kfree(colorop); > +} > +EXPORT_SYMBOL(drm_colorop_destroy); > + > /** > * drm_colorop_pipeline_destroy - Helper for color pipeline destruction > * > diff --git a/include/drm/drm_colorop.h b/include/drm/drm_colorop.h index > 45d1b1d3faf9..ee6454b08b2d 100644 > --- a/include/drm/drm_colorop.h > +++ b/include/drm/drm_colorop.h > @@ -440,6 +440,16 @@ void drm_colorop_atomic_destroy_state(struct > drm_colorop *colorop, > */ > void drm_colorop_reset(struct drm_colorop *colorop); > > +/** > + * drm_colorop_destroy - destroy colorop > + * @colorop: drm colorop > + * > + * Destroys @colorop by performing common DRM cleanup and freeing the > + * colorop object. This can be used by drivers if they do not > + * require any driver-specific teardown. > + */ > +void drm_colorop_destroy(struct drm_colorop *colorop); > + > /** > * drm_colorop_index - find the index of a registered colorop > * @colorop: colorop to find index for > -- > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* RE: [PATCH 06/13] drm/colorop: Add destroy helper for colorop objects 2025-12-19 6:56 ` [PATCH 06/13] drm/colorop: Add destroy helper for " Chaitanya Kumar Borah 2026-01-05 9:16 ` Kandpal, Suraj @ 2026-01-06 11:07 ` Shankar, Uma 2026-01-07 0:02 ` Alex Hung 2 siblings, 0 replies; 51+ messages in thread From: Shankar, Uma @ 2026-01-06 11:07 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, Kandpal, Suraj, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D > -----Original Message----- > From: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com> > Sent: Friday, December 19, 2025 12:26 PM > To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel- > xe@lists.freedesktop.org; amd-gfx@lists.freedesktop.org > Cc: harry.wentland@amd.com; jani.nikula@linux.intel.com; > louis.chauvet@bootlin.com; mwen@igalia.com; contact@emersion.fr; > alex.hung@amd.com; daniels@collabora.com; Shankar, Uma > <uma.shankar@intel.com>; Kandpal, Suraj <suraj.kandpal@intel.com>; > nfraprado@collabora.com; ville.syrjala@linux.intel.com; Roper, Matthew D > <matthew.d.roper@intel.com> > Subject: [PATCH 06/13] drm/colorop: Add destroy helper for colorop objects > > Add a helper that performs common cleanup and frees the associated object. This > can be used by drivers if they do not require any driver-specific teardown. Looks Good to me. Reviewed-by: Uma Shankar <uma.shankar@intel.com> > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > drivers/gpu/drm/drm_colorop.c | 12 ++++++++++++ > include/drm/drm_colorop.h | 10 ++++++++++ > 2 files changed, 22 insertions(+) > > diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/drm_colorop.c index > efe61bdd9b24..4b27804bb0bd 100644 > --- a/drivers/gpu/drm/drm_colorop.c > +++ b/drivers/gpu/drm/drm_colorop.c > @@ -180,6 +180,18 @@ void drm_colorop_cleanup(struct drm_colorop *colorop) > } EXPORT_SYMBOL(drm_colorop_cleanup); > > +/** > + * drm_colorop_destroy() - Helper for colorop destruction > + * > + * @colorop: colorop to destroy > + */ > +void drm_colorop_destroy(struct drm_colorop *colorop) { > + drm_colorop_cleanup(colorop); > + kfree(colorop); > +} > +EXPORT_SYMBOL(drm_colorop_destroy); > + > /** > * drm_colorop_pipeline_destroy - Helper for color pipeline destruction > * > diff --git a/include/drm/drm_colorop.h b/include/drm/drm_colorop.h index > 45d1b1d3faf9..ee6454b08b2d 100644 > --- a/include/drm/drm_colorop.h > +++ b/include/drm/drm_colorop.h > @@ -440,6 +440,16 @@ void drm_colorop_atomic_destroy_state(struct > drm_colorop *colorop, > */ > void drm_colorop_reset(struct drm_colorop *colorop); > > +/** > + * drm_colorop_destroy - destroy colorop > + * @colorop: drm colorop > + * > + * Destroys @colorop by performing common DRM cleanup and freeing the > + * colorop object. This can be used by drivers if they do not > + * require any driver-specific teardown. > + */ > +void drm_colorop_destroy(struct drm_colorop *colorop); > + > /** > * drm_colorop_index - find the index of a registered colorop > * @colorop: colorop to find index for > -- > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* Re: [PATCH 06/13] drm/colorop: Add destroy helper for colorop objects 2025-12-19 6:56 ` [PATCH 06/13] drm/colorop: Add destroy helper for " Chaitanya Kumar Borah 2026-01-05 9:16 ` Kandpal, Suraj 2026-01-06 11:07 ` Shankar, Uma @ 2026-01-07 0:02 ` Alex Hung 2 siblings, 0 replies; 51+ messages in thread From: Alex Hung @ 2026-01-07 0:02 UTC (permalink / raw) To: Chaitanya Kumar Borah, dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper Reviewed-by: Alex Hung <alex.hung@amd.com> On 12/18/25 23:56, Chaitanya Kumar Borah wrote: > Add a helper that performs common cleanup and frees the > associated object. This can be used by drivers if they do not > require any driver-specific teardown. > > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > drivers/gpu/drm/drm_colorop.c | 12 ++++++++++++ > include/drm/drm_colorop.h | 10 ++++++++++ > 2 files changed, 22 insertions(+) > > diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/drm_colorop.c > index efe61bdd9b24..4b27804bb0bd 100644 > --- a/drivers/gpu/drm/drm_colorop.c > +++ b/drivers/gpu/drm/drm_colorop.c > @@ -180,6 +180,18 @@ void drm_colorop_cleanup(struct drm_colorop *colorop) > } > EXPORT_SYMBOL(drm_colorop_cleanup); > > +/** > + * drm_colorop_destroy() - Helper for colorop destruction > + * > + * @colorop: colorop to destroy > + */ > +void drm_colorop_destroy(struct drm_colorop *colorop) > +{ > + drm_colorop_cleanup(colorop); > + kfree(colorop); > +} > +EXPORT_SYMBOL(drm_colorop_destroy); > + > /** > * drm_colorop_pipeline_destroy - Helper for color pipeline destruction > * > diff --git a/include/drm/drm_colorop.h b/include/drm/drm_colorop.h > index 45d1b1d3faf9..ee6454b08b2d 100644 > --- a/include/drm/drm_colorop.h > +++ b/include/drm/drm_colorop.h > @@ -440,6 +440,16 @@ void drm_colorop_atomic_destroy_state(struct drm_colorop *colorop, > */ > void drm_colorop_reset(struct drm_colorop *colorop); > > +/** > + * drm_colorop_destroy - destroy colorop > + * @colorop: drm colorop > + * > + * Destroys @colorop by performing common DRM cleanup and freeing the > + * colorop object. This can be used by drivers if they do not > + * require any driver-specific teardown. > + */ > +void drm_colorop_destroy(struct drm_colorop *colorop); > + > /** > * drm_colorop_index - find the index of a registered colorop > * @colorop: colorop to find index for ^ permalink raw reply [flat|nested] 51+ messages in thread
* [PATCH 07/13] drm/amd/display: Hook up colorop destroy helper for plane pipelines 2025-12-19 6:56 [PATCH 00/13] drm: Color pipeline teardown and follow-up fixes/improvements Chaitanya Kumar Borah ` (5 preceding siblings ...) 2025-12-19 6:56 ` [PATCH 06/13] drm/colorop: Add destroy helper for " Chaitanya Kumar Borah @ 2025-12-19 6:56 ` Chaitanya Kumar Borah 2026-01-06 11:10 ` Shankar, Uma 2026-01-07 0:03 ` Alex Hung 2025-12-19 6:56 ` [PATCH 08/13] drm/vkms: " Chaitanya Kumar Borah ` (10 subsequent siblings) 17 siblings, 2 replies; 51+ messages in thread From: Chaitanya Kumar Borah @ 2025-12-19 6:56 UTC (permalink / raw) To: dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, alex.hung, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper Provide a drm_colorop_funcs instance for amdgpu_dm color pipeline objects and hook up the common drm_colorop_destroy() helper as the destroy callback. Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> --- .../amd/display/amdgpu_dm/amdgpu_dm_colorop.c | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c index dfdb4fb4219f..5130962193d9 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c @@ -55,6 +55,10 @@ const u64 amdgpu_dm_supported_blnd_tfs = #define LUT3D_SIZE 17 +static const struct drm_colorop_funcs dm_colorop_funcs = { + .destroy = drm_colorop_destroy, +}; + int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_prop_enum_list *list) { struct drm_colorop *ops[MAX_COLOR_PIPELINE_OPS]; @@ -72,7 +76,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, &dm_colorop_funcs, amdgpu_dm_supported_degam_tfs, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) @@ -89,7 +93,8 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_mult_init(dev, ops[i], plane, NULL, DRM_COLOROP_FLAG_ALLOW_BYPASS); + ret = drm_plane_colorop_mult_init(dev, ops[i], plane, &dm_colorop_funcs, + DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) goto cleanup; @@ -104,7 +109,8 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, + &dm_colorop_funcs, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) goto cleanup; @@ -121,7 +127,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, &dm_colorop_funcs, amdgpu_dm_supported_shaper_tfs, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) @@ -138,7 +144,8 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, NULL, + ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, + &dm_colorop_funcs, MAX_COLOR_LUT_ENTRIES, DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, DRM_COLOROP_FLAG_ALLOW_BYPASS); @@ -156,7 +163,8 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_3dlut_init(dev, ops[i], plane, NULL, LUT3D_SIZE, + ret = drm_plane_colorop_3dlut_init(dev, ops[i], plane, + &dm_colorop_funcs, LUT3D_SIZE, DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) @@ -174,7 +182,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, &dm_colorop_funcs, amdgpu_dm_supported_blnd_tfs, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) @@ -191,7 +199,8 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, NULL, MAX_COLOR_LUT_ENTRIES, + ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, &dm_colorop_funcs, + MAX_COLOR_LUT_ENTRIES, DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) -- 2.25.1 ^ permalink raw reply related [flat|nested] 51+ messages in thread
* RE: [PATCH 07/13] drm/amd/display: Hook up colorop destroy helper for plane pipelines 2025-12-19 6:56 ` [PATCH 07/13] drm/amd/display: Hook up colorop destroy helper for plane pipelines Chaitanya Kumar Borah @ 2026-01-06 11:10 ` Shankar, Uma 2026-01-07 0:03 ` Alex Hung 1 sibling, 0 replies; 51+ messages in thread From: Shankar, Uma @ 2026-01-06 11:10 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, Kandpal, Suraj, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D > -----Original Message----- > From: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com> > Sent: Friday, December 19, 2025 12:26 PM > To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel- > xe@lists.freedesktop.org; amd-gfx@lists.freedesktop.org > Cc: harry.wentland@amd.com; jani.nikula@linux.intel.com; > louis.chauvet@bootlin.com; mwen@igalia.com; contact@emersion.fr; > alex.hung@amd.com; daniels@collabora.com; Shankar, Uma > <uma.shankar@intel.com>; Kandpal, Suraj <suraj.kandpal@intel.com>; > nfraprado@collabora.com; ville.syrjala@linux.intel.com; Roper, Matthew D > <matthew.d.roper@intel.com> > Subject: [PATCH 07/13] drm/amd/display: Hook up colorop destroy helper for > plane pipelines > > Provide a drm_colorop_funcs instance for amdgpu_dm color pipeline objects and > hook up the common drm_colorop_destroy() helper as the destroy callback. Looks Good to me. Reviewed-by: Uma Shankar <uma.shankar@intel.com> > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > .../amd/display/amdgpu_dm/amdgpu_dm_colorop.c | 25 +++++++++++++------ > 1 file changed, 17 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > index dfdb4fb4219f..5130962193d9 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > @@ -55,6 +55,10 @@ const u64 amdgpu_dm_supported_blnd_tfs = > > #define LUT3D_SIZE 17 > > +static const struct drm_colorop_funcs dm_colorop_funcs = { > + .destroy = drm_colorop_destroy, > +}; > + > int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct > drm_prop_enum_list *list) { > struct drm_colorop *ops[MAX_COLOR_PIPELINE_OPS]; @@ -72,7 +76,7 > @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct > drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, > +&dm_colorop_funcs, > amdgpu_dm_supported_degam_tfs, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -89,7 +93,8 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane > *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_mult_init(dev, ops[i], plane, NULL, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > + ret = drm_plane_colorop_mult_init(dev, ops[i], plane, &dm_colorop_funcs, > + > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > > @@ -104,7 +109,8 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, > + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, > + &dm_colorop_funcs, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > @@ -121,7 +127,7 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, > +&dm_colorop_funcs, > > amdgpu_dm_supported_shaper_tfs, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -138,7 +144,8 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, > NULL, > + ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, > + &dm_colorop_funcs, > > MAX_COLOR_LUT_ENTRIES, > > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > @@ -156,7 +163,8 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_3dlut_init(dev, ops[i], plane, NULL, > LUT3D_SIZE, > + ret = drm_plane_colorop_3dlut_init(dev, ops[i], plane, > + &dm_colorop_funcs, LUT3D_SIZE, > > DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -174,7 +182,7 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, > +&dm_colorop_funcs, > amdgpu_dm_supported_blnd_tfs, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -191,7 +199,8 @@ int amdgpu_dm_initialize_default_pipeline(struct > drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, NULL, > MAX_COLOR_LUT_ENTRIES, > + ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, > &dm_colorop_funcs, > + MAX_COLOR_LUT_ENTRIES, > > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > -- > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* Re: [PATCH 07/13] drm/amd/display: Hook up colorop destroy helper for plane pipelines 2025-12-19 6:56 ` [PATCH 07/13] drm/amd/display: Hook up colorop destroy helper for plane pipelines Chaitanya Kumar Borah 2026-01-06 11:10 ` Shankar, Uma @ 2026-01-07 0:03 ` Alex Hung 1 sibling, 0 replies; 51+ messages in thread From: Alex Hung @ 2026-01-07 0:03 UTC (permalink / raw) To: Chaitanya Kumar Borah, dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper See my nitpick comments for patch 6 Otherwise it looks to me. Reviewed-by: Alex Hung <alex.hung@amd.com> On 12/18/25 23:56, Chaitanya Kumar Borah wrote: > Provide a drm_colorop_funcs instance for amdgpu_dm color pipeline > objects and hook up the common drm_colorop_destroy() helper as the > destroy callback. > > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > .../amd/display/amdgpu_dm/amdgpu_dm_colorop.c | 25 +++++++++++++------ > 1 file changed, 17 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > index dfdb4fb4219f..5130962193d9 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > @@ -55,6 +55,10 @@ const u64 amdgpu_dm_supported_blnd_tfs = > > #define LUT3D_SIZE 17 > > +static const struct drm_colorop_funcs dm_colorop_funcs = { > + .destroy = drm_colorop_destroy, > +}; > + > int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_prop_enum_list *list) > { > struct drm_colorop *ops[MAX_COLOR_PIPELINE_OPS]; > @@ -72,7 +76,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, &dm_colorop_funcs, > amdgpu_dm_supported_degam_tfs, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -89,7 +93,8 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_mult_init(dev, ops[i], plane, NULL, DRM_COLOROP_FLAG_ALLOW_BYPASS); > + ret = drm_plane_colorop_mult_init(dev, ops[i], plane, &dm_colorop_funcs, > + DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > > @@ -104,7 +109,8 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, > + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, > + &dm_colorop_funcs, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > @@ -121,7 +127,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, &dm_colorop_funcs, > amdgpu_dm_supported_shaper_tfs, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -138,7 +144,8 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, NULL, > + ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, > + &dm_colorop_funcs, > MAX_COLOR_LUT_ENTRIES, > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > @@ -156,7 +163,8 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_3dlut_init(dev, ops[i], plane, NULL, LUT3D_SIZE, > + ret = drm_plane_colorop_3dlut_init(dev, ops[i], plane, > + &dm_colorop_funcs, LUT3D_SIZE, > DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -174,7 +182,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, &dm_colorop_funcs, > amdgpu_dm_supported_blnd_tfs, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > @@ -191,7 +199,8 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, NULL, MAX_COLOR_LUT_ENTRIES, > + ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, &dm_colorop_funcs, > + MAX_COLOR_LUT_ENTRIES, > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) ^ permalink raw reply [flat|nested] 51+ messages in thread
* [PATCH 08/13] drm/vkms: Hook up colorop destroy helper for plane pipelines 2025-12-19 6:56 [PATCH 00/13] drm: Color pipeline teardown and follow-up fixes/improvements Chaitanya Kumar Borah ` (6 preceding siblings ...) 2025-12-19 6:56 ` [PATCH 07/13] drm/amd/display: Hook up colorop destroy helper for plane pipelines Chaitanya Kumar Borah @ 2025-12-19 6:56 ` Chaitanya Kumar Borah 2026-01-06 11:11 ` Shankar, Uma 2026-01-07 0:04 ` Alex Hung 2025-12-19 6:56 ` [PATCH 09/13] drm/i915/display: Hook up intel_colorop_destroy Chaitanya Kumar Borah ` (9 subsequent siblings) 17 siblings, 2 replies; 51+ messages in thread From: Chaitanya Kumar Borah @ 2025-12-19 6:56 UTC (permalink / raw) To: dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, alex.hung, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper Provide a drm_colorop_funcs instance for vkms color pipeline objects and hook up the common drm_colorop_destroy() helper as the destroy callback. Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> --- drivers/gpu/drm/vkms/vkms_colorop.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/vkms/vkms_colorop.c b/drivers/gpu/drm/vkms/vkms_colorop.c index 9e9dd0494628..ba826ad384b7 100644 --- a/drivers/gpu/drm/vkms/vkms_colorop.c +++ b/drivers/gpu/drm/vkms/vkms_colorop.c @@ -12,6 +12,10 @@ static const u64 supported_tfs = BIT(DRM_COLOROP_1D_CURVE_SRGB_EOTF) | BIT(DRM_COLOROP_1D_CURVE_SRGB_INV_EOTF); +static const struct drm_colorop_funcs vkms_colorop_funcs = { + .destroy = drm_colorop_destroy, +}; + #define MAX_COLOR_PIPELINE_OPS 4 static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_prop_enum_list *list) @@ -31,7 +35,8 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, supported_tfs, + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, &vkms_colorop_funcs, + supported_tfs, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) goto cleanup; @@ -48,7 +53,7 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, &vkms_colorop_funcs, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) goto cleanup; @@ -65,7 +70,7 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, &vkms_colorop_funcs, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) goto cleanup; @@ -82,7 +87,8 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr goto cleanup; } - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, supported_tfs, + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, &vkms_colorop_funcs, + supported_tfs, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) goto cleanup; -- 2.25.1 ^ permalink raw reply related [flat|nested] 51+ messages in thread
* RE: [PATCH 08/13] drm/vkms: Hook up colorop destroy helper for plane pipelines 2025-12-19 6:56 ` [PATCH 08/13] drm/vkms: " Chaitanya Kumar Borah @ 2026-01-06 11:11 ` Shankar, Uma 2026-01-07 0:04 ` Alex Hung 1 sibling, 0 replies; 51+ messages in thread From: Shankar, Uma @ 2026-01-06 11:11 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, Kandpal, Suraj, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D > -----Original Message----- > From: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com> > Sent: Friday, December 19, 2025 12:26 PM > To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel- > xe@lists.freedesktop.org; amd-gfx@lists.freedesktop.org > Cc: harry.wentland@amd.com; jani.nikula@linux.intel.com; > louis.chauvet@bootlin.com; mwen@igalia.com; contact@emersion.fr; > alex.hung@amd.com; daniels@collabora.com; Shankar, Uma > <uma.shankar@intel.com>; Kandpal, Suraj <suraj.kandpal@intel.com>; > nfraprado@collabora.com; ville.syrjala@linux.intel.com; Roper, Matthew D > <matthew.d.roper@intel.com> > Subject: [PATCH 08/13] drm/vkms: Hook up colorop destroy helper for plane > pipelines > > Provide a drm_colorop_funcs instance for vkms color pipeline objects and hook up > the common drm_colorop_destroy() helper as the destroy callback. Looks Good to me. Reviewed-by: Uma Shankar <uma.shankar@intel.com> > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > drivers/gpu/drm/vkms/vkms_colorop.c | 14 ++++++++++---- > 1 file changed, 10 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/vkms/vkms_colorop.c > b/drivers/gpu/drm/vkms/vkms_colorop.c > index 9e9dd0494628..ba826ad384b7 100644 > --- a/drivers/gpu/drm/vkms/vkms_colorop.c > +++ b/drivers/gpu/drm/vkms/vkms_colorop.c > @@ -12,6 +12,10 @@ static const u64 supported_tfs = > BIT(DRM_COLOROP_1D_CURVE_SRGB_EOTF) | > BIT(DRM_COLOROP_1D_CURVE_SRGB_INV_EOTF); > > +static const struct drm_colorop_funcs vkms_colorop_funcs = { > + .destroy = drm_colorop_destroy, > +}; > + > #define MAX_COLOR_PIPELINE_OPS 4 > > static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct > drm_prop_enum_list *list) @@ -31,7 +35,8 @@ static int > vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, > supported_tfs, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, > &vkms_colorop_funcs, > + supported_tfs, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > @@ -48,7 +53,7 @@ static int vkms_initialize_color_pipeline(struct drm_plane > *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, > + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, > +&vkms_colorop_funcs, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > @@ -65,7 +70,7 @@ static int vkms_initialize_color_pipeline(struct drm_plane > *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, > + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, > +&vkms_colorop_funcs, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > @@ -82,7 +87,8 @@ static int vkms_initialize_color_pipeline(struct drm_plane > *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, > supported_tfs, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, > &vkms_colorop_funcs, > + supported_tfs, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > -- > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* Re: [PATCH 08/13] drm/vkms: Hook up colorop destroy helper for plane pipelines 2025-12-19 6:56 ` [PATCH 08/13] drm/vkms: " Chaitanya Kumar Borah 2026-01-06 11:11 ` Shankar, Uma @ 2026-01-07 0:04 ` Alex Hung 1 sibling, 0 replies; 51+ messages in thread From: Alex Hung @ 2026-01-07 0:04 UTC (permalink / raw) To: Chaitanya Kumar Borah, dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper See my nitpick comments for patch 6 Otherwise it looks to me. Reviewed-by: Alex Hung <alex.hung@amd.com> On 12/18/25 23:56, Chaitanya Kumar Borah wrote: > Provide a drm_colorop_funcs instance for vkms color pipeline > objects and hook up the common drm_colorop_destroy() helper as the > destroy callback. > > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > drivers/gpu/drm/vkms/vkms_colorop.c | 14 ++++++++++---- > 1 file changed, 10 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/vkms/vkms_colorop.c b/drivers/gpu/drm/vkms/vkms_colorop.c > index 9e9dd0494628..ba826ad384b7 100644 > --- a/drivers/gpu/drm/vkms/vkms_colorop.c > +++ b/drivers/gpu/drm/vkms/vkms_colorop.c > @@ -12,6 +12,10 @@ static const u64 supported_tfs = > BIT(DRM_COLOROP_1D_CURVE_SRGB_EOTF) | > BIT(DRM_COLOROP_1D_CURVE_SRGB_INV_EOTF); > > +static const struct drm_colorop_funcs vkms_colorop_funcs = { > + .destroy = drm_colorop_destroy, > +}; > + > #define MAX_COLOR_PIPELINE_OPS 4 > > static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_prop_enum_list *list) > @@ -31,7 +35,8 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, supported_tfs, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, &vkms_colorop_funcs, > + supported_tfs, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > @@ -48,7 +53,7 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, > + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, &vkms_colorop_funcs, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > @@ -65,7 +70,7 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, NULL, > + ret = drm_plane_colorop_ctm_3x4_init(dev, ops[i], plane, &vkms_colorop_funcs, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; > @@ -82,7 +87,8 @@ static int vkms_initialize_color_pipeline(struct drm_plane *plane, struct drm_pr > goto cleanup; > } > > - ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, supported_tfs, > + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, &vkms_colorop_funcs, > + supported_tfs, > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > goto cleanup; ^ permalink raw reply [flat|nested] 51+ messages in thread
* [PATCH 09/13] drm/i915/display: Hook up intel_colorop_destroy 2025-12-19 6:56 [PATCH 00/13] drm: Color pipeline teardown and follow-up fixes/improvements Chaitanya Kumar Borah ` (7 preceding siblings ...) 2025-12-19 6:56 ` [PATCH 08/13] drm/vkms: " Chaitanya Kumar Borah @ 2025-12-19 6:56 ` Chaitanya Kumar Borah 2026-01-05 9:18 ` Kandpal, Suraj 2026-01-06 11:16 ` Shankar, Uma 2025-12-19 6:56 ` [PATCH 10/13] drm: Clean up colorop objects during mode_config cleanup Chaitanya Kumar Borah ` (8 subsequent siblings) 17 siblings, 2 replies; 51+ messages in thread From: Chaitanya Kumar Borah @ 2025-12-19 6:56 UTC (permalink / raw) To: dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, alex.hung, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper i915 embeds struct drm_colorop inside struct intel_colorop, so the default drm_colorop_destroy() helper cannot be used. Add an intel_colorop_destroy() helper that performs common DRM cleanup and frees intel_colorop object. This ensures correct teardown of plane color pipeline objects. Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> --- drivers/gpu/drm/i915/display/intel_color_pipeline.c | 13 +++++++++---- drivers/gpu/drm/i915/display/intel_colorop.c | 6 ++++++ drivers/gpu/drm/i915/display/intel_colorop.h | 1 + 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c b/drivers/gpu/drm/i915/display/intel_color_pipeline.c index d3d73d60727c..8fecc53540ba 100644 --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c @@ -13,6 +13,10 @@ #define PLANE_DEGAMMA_SIZE 128 #define PLANE_GAMMA_SIZE 32 +static const struct drm_colorop_funcs intel_colorop_funcs = { + .destroy = intel_colorop_destroy, +}; + static int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_enum_list *list, enum pipe pipe) @@ -25,7 +29,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en colorop = intel_colorop_create(INTEL_PLANE_CB_PRE_CSC_LUT); - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, NULL, + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, &intel_colorop_funcs, PLANE_DEGAMMA_SIZE, DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, DRM_COLOROP_FLAG_ALLOW_BYPASS); @@ -39,7 +43,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en prev_op = &colorop->base; colorop = intel_colorop_create(INTEL_PLANE_CB_CSC); - ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, NULL, + ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, &intel_colorop_funcs, DRM_COLOROP_FLAG_ALLOW_BYPASS); if (ret) return ret; @@ -52,7 +56,8 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en plane->type == DRM_PLANE_TYPE_PRIMARY) { colorop = intel_colorop_create(INTEL_PLANE_CB_3DLUT); - ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, plane, NULL, 17, + ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, plane, + &intel_colorop_funcs, 17, DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, true); if (ret) @@ -64,7 +69,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en } colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT); - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, NULL, + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, &intel_colorop_funcs, PLANE_GAMMA_SIZE, DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, DRM_COLOROP_FLAG_ALLOW_BYPASS); diff --git a/drivers/gpu/drm/i915/display/intel_colorop.c b/drivers/gpu/drm/i915/display/intel_colorop.c index f2fc0d8780ce..fae4383f8518 100644 --- a/drivers/gpu/drm/i915/display/intel_colorop.c +++ b/drivers/gpu/drm/i915/display/intel_colorop.c @@ -33,3 +33,9 @@ struct intel_colorop *intel_colorop_create(enum intel_color_block id) return colorop; } + +void intel_colorop_destroy(struct drm_colorop *colorop) +{ + drm_colorop_cleanup(colorop); + kfree(to_intel_colorop(colorop)); +} diff --git a/drivers/gpu/drm/i915/display/intel_colorop.h b/drivers/gpu/drm/i915/display/intel_colorop.h index 21d58eb9f3d0..79824506bbab 100644 --- a/drivers/gpu/drm/i915/display/intel_colorop.h +++ b/drivers/gpu/drm/i915/display/intel_colorop.h @@ -11,5 +11,6 @@ struct intel_colorop *to_intel_colorop(struct drm_colorop *colorop); struct intel_colorop *intel_colorop_alloc(void); struct intel_colorop *intel_colorop_create(enum intel_color_block id); +void intel_colorop_destroy(struct drm_colorop *colorop); #endif /* __INTEL_COLOROP_H__ */ -- 2.25.1 ^ permalink raw reply related [flat|nested] 51+ messages in thread
* RE: [PATCH 09/13] drm/i915/display: Hook up intel_colorop_destroy 2025-12-19 6:56 ` [PATCH 09/13] drm/i915/display: Hook up intel_colorop_destroy Chaitanya Kumar Borah @ 2026-01-05 9:18 ` Kandpal, Suraj 2026-01-06 11:16 ` Shankar, Uma 1 sibling, 0 replies; 51+ messages in thread From: Kandpal, Suraj @ 2026-01-05 9:18 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, Shankar, Uma, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D > Subject: [PATCH 09/13] drm/i915/display: Hook up intel_colorop_destroy > > i915 embeds struct drm_colorop inside struct intel_colorop, so the default > drm_colorop_destroy() helper cannot be used. Add an > intel_colorop_destroy() helper that performs common DRM cleanup and frees > intel_colorop object. > > This ensures correct teardown of plane color pipeline objects. > > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> LGTM, Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com> > --- > drivers/gpu/drm/i915/display/intel_color_pipeline.c | 13 +++++++++---- > drivers/gpu/drm/i915/display/intel_colorop.c | 6 ++++++ > drivers/gpu/drm/i915/display/intel_colorop.h | 1 + > 3 files changed, 16 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > index d3d73d60727c..8fecc53540ba 100644 > --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > @@ -13,6 +13,10 @@ > #define PLANE_DEGAMMA_SIZE 128 > #define PLANE_GAMMA_SIZE 32 > > +static const struct drm_colorop_funcs intel_colorop_funcs = { > + .destroy = intel_colorop_destroy, > +}; > + > static > int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct > drm_prop_enum_list *list, > enum pipe pipe) > @@ -25,7 +29,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane > *plane, struct drm_prop_en > > colorop = intel_colorop_create(INTEL_PLANE_CB_PRE_CSC_LUT); > > - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, > plane, NULL, > + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, > plane, > +&intel_colorop_funcs, > PLANE_DEGAMMA_SIZE, > > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); @@ -39,7 +43,7 @@ int > _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en > prev_op = &colorop->base; > > colorop = intel_colorop_create(INTEL_PLANE_CB_CSC); > - ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, > NULL, > + ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, > +&intel_colorop_funcs, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > return ret; > @@ -52,7 +56,8 @@ int _intel_color_pipeline_plane_init(struct drm_plane > *plane, struct drm_prop_en > plane->type == DRM_PLANE_TYPE_PRIMARY) { > colorop = intel_colorop_create(INTEL_PLANE_CB_3DLUT); > > - ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, > plane, NULL, 17, > + ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, > plane, > + &intel_colorop_funcs, 17, > > DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, > true); > if (ret) > @@ -64,7 +69,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane > *plane, struct drm_prop_en > } > > colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT); > - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, > plane, NULL, > + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, > plane, > +&intel_colorop_funcs, > PLANE_GAMMA_SIZE, > > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); diff --git > a/drivers/gpu/drm/i915/display/intel_colorop.c > b/drivers/gpu/drm/i915/display/intel_colorop.c > index f2fc0d8780ce..fae4383f8518 100644 > --- a/drivers/gpu/drm/i915/display/intel_colorop.c > +++ b/drivers/gpu/drm/i915/display/intel_colorop.c > @@ -33,3 +33,9 @@ struct intel_colorop *intel_colorop_create(enum > intel_color_block id) > > return colorop; > } > + > +void intel_colorop_destroy(struct drm_colorop *colorop) { > + drm_colorop_cleanup(colorop); > + kfree(to_intel_colorop(colorop)); > +} > diff --git a/drivers/gpu/drm/i915/display/intel_colorop.h > b/drivers/gpu/drm/i915/display/intel_colorop.h > index 21d58eb9f3d0..79824506bbab 100644 > --- a/drivers/gpu/drm/i915/display/intel_colorop.h > +++ b/drivers/gpu/drm/i915/display/intel_colorop.h > @@ -11,5 +11,6 @@ > struct intel_colorop *to_intel_colorop(struct drm_colorop *colorop); struct > intel_colorop *intel_colorop_alloc(void); struct intel_colorop > *intel_colorop_create(enum intel_color_block id); > +void intel_colorop_destroy(struct drm_colorop *colorop); > > #endif /* __INTEL_COLOROP_H__ */ > -- > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* RE: [PATCH 09/13] drm/i915/display: Hook up intel_colorop_destroy 2025-12-19 6:56 ` [PATCH 09/13] drm/i915/display: Hook up intel_colorop_destroy Chaitanya Kumar Borah 2026-01-05 9:18 ` Kandpal, Suraj @ 2026-01-06 11:16 ` Shankar, Uma 1 sibling, 0 replies; 51+ messages in thread From: Shankar, Uma @ 2026-01-06 11:16 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, Kandpal, Suraj, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D > -----Original Message----- > From: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com> > Sent: Friday, December 19, 2025 12:26 PM > To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel- > xe@lists.freedesktop.org; amd-gfx@lists.freedesktop.org > Cc: harry.wentland@amd.com; jani.nikula@linux.intel.com; > louis.chauvet@bootlin.com; mwen@igalia.com; contact@emersion.fr; > alex.hung@amd.com; daniels@collabora.com; Shankar, Uma > <uma.shankar@intel.com>; Kandpal, Suraj <suraj.kandpal@intel.com>; > nfraprado@collabora.com; ville.syrjala@linux.intel.com; Roper, Matthew D > <matthew.d.roper@intel.com> > Subject: [PATCH 09/13] drm/i915/display: Hook up intel_colorop_destroy > > i915 embeds struct drm_colorop inside struct intel_colorop, so the default > drm_colorop_destroy() helper cannot be used. Add an > intel_colorop_destroy() helper that performs common DRM cleanup and frees > intel_colorop object. > > This ensures correct teardown of plane color pipeline objects. Looks Good to me. Reviewed-by: Uma Shankar <uma.shankar@intel.com> > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > drivers/gpu/drm/i915/display/intel_color_pipeline.c | 13 +++++++++---- > drivers/gpu/drm/i915/display/intel_colorop.c | 6 ++++++ > drivers/gpu/drm/i915/display/intel_colorop.h | 1 + > 3 files changed, 16 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > index d3d73d60727c..8fecc53540ba 100644 > --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > @@ -13,6 +13,10 @@ > #define PLANE_DEGAMMA_SIZE 128 > #define PLANE_GAMMA_SIZE 32 > > +static const struct drm_colorop_funcs intel_colorop_funcs = { > + .destroy = intel_colorop_destroy, > +}; > + > static > int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct > drm_prop_enum_list *list, > enum pipe pipe) > @@ -25,7 +29,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, > struct drm_prop_en > > colorop = intel_colorop_create(INTEL_PLANE_CB_PRE_CSC_LUT); > > - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, > NULL, > + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, > +&intel_colorop_funcs, > PLANE_DEGAMMA_SIZE, > > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); @@ -39,7 +43,7 @@ int > _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en > prev_op = &colorop->base; > > colorop = intel_colorop_create(INTEL_PLANE_CB_CSC); > - ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, NULL, > + ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, > +&intel_colorop_funcs, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > if (ret) > return ret; > @@ -52,7 +56,8 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, > struct drm_prop_en > plane->type == DRM_PLANE_TYPE_PRIMARY) { > colorop = intel_colorop_create(INTEL_PLANE_CB_3DLUT); > > - ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, plane, > NULL, 17, > + ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, plane, > + &intel_colorop_funcs, 17, > > DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, > true); > if (ret) > @@ -64,7 +69,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, > struct drm_prop_en > } > > colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT); > - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, > NULL, > + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, > +&intel_colorop_funcs, > PLANE_GAMMA_SIZE, > > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > > DRM_COLOROP_FLAG_ALLOW_BYPASS); diff --git > a/drivers/gpu/drm/i915/display/intel_colorop.c > b/drivers/gpu/drm/i915/display/intel_colorop.c > index f2fc0d8780ce..fae4383f8518 100644 > --- a/drivers/gpu/drm/i915/display/intel_colorop.c > +++ b/drivers/gpu/drm/i915/display/intel_colorop.c > @@ -33,3 +33,9 @@ struct intel_colorop *intel_colorop_create(enum > intel_color_block id) > > return colorop; > } > + > +void intel_colorop_destroy(struct drm_colorop *colorop) { > + drm_colorop_cleanup(colorop); > + kfree(to_intel_colorop(colorop)); > +} > diff --git a/drivers/gpu/drm/i915/display/intel_colorop.h > b/drivers/gpu/drm/i915/display/intel_colorop.h > index 21d58eb9f3d0..79824506bbab 100644 > --- a/drivers/gpu/drm/i915/display/intel_colorop.h > +++ b/drivers/gpu/drm/i915/display/intel_colorop.h > @@ -11,5 +11,6 @@ > struct intel_colorop *to_intel_colorop(struct drm_colorop *colorop); struct > intel_colorop *intel_colorop_alloc(void); struct intel_colorop > *intel_colorop_create(enum intel_color_block id); > +void intel_colorop_destroy(struct drm_colorop *colorop); > > #endif /* __INTEL_COLOROP_H__ */ > -- > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* [PATCH 10/13] drm: Clean up colorop objects during mode_config cleanup 2025-12-19 6:56 [PATCH 00/13] drm: Color pipeline teardown and follow-up fixes/improvements Chaitanya Kumar Borah ` (8 preceding siblings ...) 2025-12-19 6:56 ` [PATCH 09/13] drm/i915/display: Hook up intel_colorop_destroy Chaitanya Kumar Borah @ 2025-12-19 6:56 ` Chaitanya Kumar Borah 2026-01-05 9:20 ` Kandpal, Suraj ` (2 more replies) 2025-12-19 6:56 ` [PATCH 11/13] drm/vkms: Remove drm_colorop_pipeline_destroy() from vkms_destroy() Chaitanya Kumar Borah ` (7 subsequent siblings) 17 siblings, 3 replies; 51+ messages in thread From: Chaitanya Kumar Borah @ 2025-12-19 6:56 UTC (permalink / raw) To: dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, alex.hung, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper Tear down all registered drm_colorop objects during drm_mode_config_cleanup() by invoking their destroy callbacks. This ensures proper cleanup of color pipeline objects during DRM device removal. Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> --- drivers/gpu/drm/drm_mode_config.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c index d12db9b0bab8..84ae8a23a367 100644 --- a/drivers/gpu/drm/drm_mode_config.c +++ b/drivers/gpu/drm/drm_mode_config.c @@ -524,6 +524,7 @@ void drm_mode_config_cleanup(struct drm_device *dev) struct drm_property *property, *pt; struct drm_property_blob *blob, *bt; struct drm_plane *plane, *plt; + struct drm_colorop *colorop, *copt; list_for_each_entry_safe(encoder, enct, &dev->mode_config.encoder_list, head) { @@ -553,6 +554,11 @@ void drm_mode_config_cleanup(struct drm_device *dev) drm_property_destroy(dev, property); } + list_for_each_entry_safe(colorop, copt, &dev->mode_config.colorop_list, + head) { + colorop->funcs->destroy(colorop); + } + list_for_each_entry_safe(plane, plt, &dev->mode_config.plane_list, head) { plane->funcs->destroy(plane); -- 2.25.1 ^ permalink raw reply related [flat|nested] 51+ messages in thread
* RE: [PATCH 10/13] drm: Clean up colorop objects during mode_config cleanup 2025-12-19 6:56 ` [PATCH 10/13] drm: Clean up colorop objects during mode_config cleanup Chaitanya Kumar Borah @ 2026-01-05 9:20 ` Kandpal, Suraj 2026-01-06 11:20 ` Shankar, Uma 2026-01-07 0:04 ` Alex Hung 2 siblings, 0 replies; 51+ messages in thread From: Kandpal, Suraj @ 2026-01-05 9:20 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, Shankar, Uma, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D > Subject: [PATCH 10/13] drm: Clean up colorop objects during mode_config > cleanup > > Tear down all registered drm_colorop objects during > drm_mode_config_cleanup() by invoking their destroy callbacks. > > This ensures proper cleanup of color pipeline objects during DRM device > removal. > > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> LGTM, Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com> > --- > drivers/gpu/drm/drm_mode_config.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/gpu/drm/drm_mode_config.c > b/drivers/gpu/drm/drm_mode_config.c > index d12db9b0bab8..84ae8a23a367 100644 > --- a/drivers/gpu/drm/drm_mode_config.c > +++ b/drivers/gpu/drm/drm_mode_config.c > @@ -524,6 +524,7 @@ void drm_mode_config_cleanup(struct drm_device > *dev) > struct drm_property *property, *pt; > struct drm_property_blob *blob, *bt; > struct drm_plane *plane, *plt; > + struct drm_colorop *colorop, *copt; > > list_for_each_entry_safe(encoder, enct, &dev- > >mode_config.encoder_list, > head) { > @@ -553,6 +554,11 @@ void drm_mode_config_cleanup(struct drm_device > *dev) > drm_property_destroy(dev, property); > } > > + list_for_each_entry_safe(colorop, copt, &dev- > >mode_config.colorop_list, > + head) { > + colorop->funcs->destroy(colorop); > + } > + > list_for_each_entry_safe(plane, plt, &dev->mode_config.plane_list, > head) { > plane->funcs->destroy(plane); > -- > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* RE: [PATCH 10/13] drm: Clean up colorop objects during mode_config cleanup 2025-12-19 6:56 ` [PATCH 10/13] drm: Clean up colorop objects during mode_config cleanup Chaitanya Kumar Borah 2026-01-05 9:20 ` Kandpal, Suraj @ 2026-01-06 11:20 ` Shankar, Uma 2026-01-07 0:04 ` Alex Hung 2 siblings, 0 replies; 51+ messages in thread From: Shankar, Uma @ 2026-01-06 11:20 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, Kandpal, Suraj, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D > -----Original Message----- > From: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com> > Sent: Friday, December 19, 2025 12:26 PM > To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel- > xe@lists.freedesktop.org; amd-gfx@lists.freedesktop.org > Cc: harry.wentland@amd.com; jani.nikula@linux.intel.com; > louis.chauvet@bootlin.com; mwen@igalia.com; contact@emersion.fr; > alex.hung@amd.com; daniels@collabora.com; Shankar, Uma > <uma.shankar@intel.com>; Kandpal, Suraj <suraj.kandpal@intel.com>; > nfraprado@collabora.com; ville.syrjala@linux.intel.com; Roper, Matthew D > <matthew.d.roper@intel.com> > Subject: [PATCH 10/13] drm: Clean up colorop objects during mode_config > cleanup > > Tear down all registered drm_colorop objects during > drm_mode_config_cleanup() by invoking their destroy callbacks. > > This ensures proper cleanup of color pipeline objects during DRM device removal. Looks Good to me. Reviewed-by: Uma Shankar <uma.shankar@intel.com> > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > drivers/gpu/drm/drm_mode_config.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/gpu/drm/drm_mode_config.c > b/drivers/gpu/drm/drm_mode_config.c > index d12db9b0bab8..84ae8a23a367 100644 > --- a/drivers/gpu/drm/drm_mode_config.c > +++ b/drivers/gpu/drm/drm_mode_config.c > @@ -524,6 +524,7 @@ void drm_mode_config_cleanup(struct drm_device *dev) > struct drm_property *property, *pt; > struct drm_property_blob *blob, *bt; > struct drm_plane *plane, *plt; > + struct drm_colorop *colorop, *copt; > > list_for_each_entry_safe(encoder, enct, &dev->mode_config.encoder_list, > head) { > @@ -553,6 +554,11 @@ void drm_mode_config_cleanup(struct drm_device *dev) > drm_property_destroy(dev, property); > } > > + list_for_each_entry_safe(colorop, copt, &dev->mode_config.colorop_list, > + head) { > + colorop->funcs->destroy(colorop); > + } > + > list_for_each_entry_safe(plane, plt, &dev->mode_config.plane_list, > head) { > plane->funcs->destroy(plane); > -- > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* Re: [PATCH 10/13] drm: Clean up colorop objects during mode_config cleanup 2025-12-19 6:56 ` [PATCH 10/13] drm: Clean up colorop objects during mode_config cleanup Chaitanya Kumar Borah 2026-01-05 9:20 ` Kandpal, Suraj 2026-01-06 11:20 ` Shankar, Uma @ 2026-01-07 0:04 ` Alex Hung 2 siblings, 0 replies; 51+ messages in thread From: Alex Hung @ 2026-01-07 0:04 UTC (permalink / raw) To: Chaitanya Kumar Borah, dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper Reviewed-by: Alex Hung <alex.hung@amd.com> On 12/18/25 23:56, Chaitanya Kumar Borah wrote: > Tear down all registered drm_colorop objects during > drm_mode_config_cleanup() by invoking their destroy callbacks. > > This ensures proper cleanup of color pipeline objects during DRM device > removal. > > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > drivers/gpu/drm/drm_mode_config.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c > index d12db9b0bab8..84ae8a23a367 100644 > --- a/drivers/gpu/drm/drm_mode_config.c > +++ b/drivers/gpu/drm/drm_mode_config.c > @@ -524,6 +524,7 @@ void drm_mode_config_cleanup(struct drm_device *dev) > struct drm_property *property, *pt; > struct drm_property_blob *blob, *bt; > struct drm_plane *plane, *plt; > + struct drm_colorop *colorop, *copt; > > list_for_each_entry_safe(encoder, enct, &dev->mode_config.encoder_list, > head) { > @@ -553,6 +554,11 @@ void drm_mode_config_cleanup(struct drm_device *dev) > drm_property_destroy(dev, property); > } > > + list_for_each_entry_safe(colorop, copt, &dev->mode_config.colorop_list, > + head) { > + colorop->funcs->destroy(colorop); > + } > + > list_for_each_entry_safe(plane, plt, &dev->mode_config.plane_list, > head) { > plane->funcs->destroy(plane); ^ permalink raw reply [flat|nested] 51+ messages in thread
* [PATCH 11/13] drm/vkms: Remove drm_colorop_pipeline_destroy() from vkms_destroy() 2025-12-19 6:56 [PATCH 00/13] drm: Color pipeline teardown and follow-up fixes/improvements Chaitanya Kumar Borah ` (9 preceding siblings ...) 2025-12-19 6:56 ` [PATCH 10/13] drm: Clean up colorop objects during mode_config cleanup Chaitanya Kumar Borah @ 2025-12-19 6:56 ` Chaitanya Kumar Borah 2026-01-06 11:21 ` Shankar, Uma 2025-12-19 6:56 ` [PATCH 12/13] drm/colorop: Use destroy callback for color pipeline teardown Chaitanya Kumar Borah ` (6 subsequent siblings) 17 siblings, 1 reply; 51+ messages in thread From: Chaitanya Kumar Borah @ 2025-12-19 6:56 UTC (permalink / raw) To: dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, alex.hung, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper Now that colorops are cleaned from drm_mode_config_cleanup(), remove drm_colorop_pipeline_destroy() from vkms_destroy(). Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> --- drivers/gpu/drm/vkms/vkms_drv.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c index dd1402f43773..351e17b5885c 100644 --- a/drivers/gpu/drm/vkms/vkms_drv.c +++ b/drivers/gpu/drm/vkms/vkms_drv.c @@ -258,7 +258,6 @@ void vkms_destroy(struct vkms_config *config) fdev = config->dev->faux_dev; - drm_colorop_pipeline_destroy(&config->dev->drm); drm_dev_unregister(&config->dev->drm); drm_atomic_helper_shutdown(&config->dev->drm); devres_release_group(&fdev->dev, NULL); -- 2.25.1 ^ permalink raw reply related [flat|nested] 51+ messages in thread
* RE: [PATCH 11/13] drm/vkms: Remove drm_colorop_pipeline_destroy() from vkms_destroy() 2025-12-19 6:56 ` [PATCH 11/13] drm/vkms: Remove drm_colorop_pipeline_destroy() from vkms_destroy() Chaitanya Kumar Borah @ 2026-01-06 11:21 ` Shankar, Uma 0 siblings, 0 replies; 51+ messages in thread From: Shankar, Uma @ 2026-01-06 11:21 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, Kandpal, Suraj, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D > -----Original Message----- > From: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com> > Sent: Friday, December 19, 2025 12:26 PM > To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel- > xe@lists.freedesktop.org; amd-gfx@lists.freedesktop.org > Cc: harry.wentland@amd.com; jani.nikula@linux.intel.com; > louis.chauvet@bootlin.com; mwen@igalia.com; contact@emersion.fr; > alex.hung@amd.com; daniels@collabora.com; Shankar, Uma > <uma.shankar@intel.com>; Kandpal, Suraj <suraj.kandpal@intel.com>; > nfraprado@collabora.com; ville.syrjala@linux.intel.com; Roper, Matthew D > <matthew.d.roper@intel.com> > Subject: [PATCH 11/13] drm/vkms: Remove drm_colorop_pipeline_destroy() from > vkms_destroy() > > Now that colorops are cleaned from drm_mode_config_cleanup(), remove > drm_colorop_pipeline_destroy() from vkms_destroy(). Looks Good to me. Reviewed-by: Uma Shankar <uma.shankar@intel.com> > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > drivers/gpu/drm/vkms/vkms_drv.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c > index dd1402f43773..351e17b5885c 100644 > --- a/drivers/gpu/drm/vkms/vkms_drv.c > +++ b/drivers/gpu/drm/vkms/vkms_drv.c > @@ -258,7 +258,6 @@ void vkms_destroy(struct vkms_config *config) > > fdev = config->dev->faux_dev; > > - drm_colorop_pipeline_destroy(&config->dev->drm); > drm_dev_unregister(&config->dev->drm); > drm_atomic_helper_shutdown(&config->dev->drm); > devres_release_group(&fdev->dev, NULL); > -- > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* [PATCH 12/13] drm/colorop: Use destroy callback for color pipeline teardown 2025-12-19 6:56 [PATCH 00/13] drm: Color pipeline teardown and follow-up fixes/improvements Chaitanya Kumar Borah ` (10 preceding siblings ...) 2025-12-19 6:56 ` [PATCH 11/13] drm/vkms: Remove drm_colorop_pipeline_destroy() from vkms_destroy() Chaitanya Kumar Borah @ 2025-12-19 6:56 ` Chaitanya Kumar Borah 2026-01-05 9:27 ` Kandpal, Suraj ` (2 more replies) 2025-12-19 6:56 ` [PATCH 13/13] drm/i915/color: Add failure handling in plane color pipeline init Chaitanya Kumar Borah ` (5 subsequent siblings) 17 siblings, 3 replies; 51+ messages in thread From: Chaitanya Kumar Borah @ 2025-12-19 6:56 UTC (permalink / raw) To: dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, alex.hung, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper Switch drm_colorop_pipeline_destroy() to use the driver-provided destroy callback instead of directly calling drm_colorop_cleanup() and freeing the object. This allows drivers that embed struct drm_colorop in driver-specific objects to perform correct teardown. Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> --- drivers/gpu/drm/drm_colorop.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/drm_colorop.c index 4b27804bb0bd..fafe45b93ff8 100644 --- a/drivers/gpu/drm/drm_colorop.c +++ b/drivers/gpu/drm/drm_colorop.c @@ -205,8 +205,7 @@ void drm_colorop_pipeline_destroy(struct drm_device *dev) struct drm_colorop *colorop, *next; list_for_each_entry_safe(colorop, next, &config->colorop_list, head) { - drm_colorop_cleanup(colorop); - kfree(colorop); + colorop->funcs->destroy(colorop); } } EXPORT_SYMBOL(drm_colorop_pipeline_destroy); -- 2.25.1 ^ permalink raw reply related [flat|nested] 51+ messages in thread
* RE: [PATCH 12/13] drm/colorop: Use destroy callback for color pipeline teardown 2025-12-19 6:56 ` [PATCH 12/13] drm/colorop: Use destroy callback for color pipeline teardown Chaitanya Kumar Borah @ 2026-01-05 9:27 ` Kandpal, Suraj 2026-01-06 11:23 ` Shankar, Uma 2026-01-07 0:05 ` Alex Hung 2 siblings, 0 replies; 51+ messages in thread From: Kandpal, Suraj @ 2026-01-05 9:27 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, Shankar, Uma, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D > Subject: [PATCH 12/13] drm/colorop: Use destroy callback for color pipeline > teardown > > Switch drm_colorop_pipeline_destroy() to use the driver-provided destroy > callback instead of directly calling drm_colorop_cleanup() and freeing the > object. > > This allows drivers that embed struct drm_colorop in driver-specific objects to > perform correct teardown. LGTM, Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com> > > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > drivers/gpu/drm/drm_colorop.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/drm_colorop.c > index 4b27804bb0bd..fafe45b93ff8 100644 > --- a/drivers/gpu/drm/drm_colorop.c > +++ b/drivers/gpu/drm/drm_colorop.c > @@ -205,8 +205,7 @@ void drm_colorop_pipeline_destroy(struct drm_device > *dev) > struct drm_colorop *colorop, *next; > > list_for_each_entry_safe(colorop, next, &config->colorop_list, head) { > - drm_colorop_cleanup(colorop); > - kfree(colorop); > + colorop->funcs->destroy(colorop); > } > } > EXPORT_SYMBOL(drm_colorop_pipeline_destroy); > -- > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* RE: [PATCH 12/13] drm/colorop: Use destroy callback for color pipeline teardown 2025-12-19 6:56 ` [PATCH 12/13] drm/colorop: Use destroy callback for color pipeline teardown Chaitanya Kumar Borah 2026-01-05 9:27 ` Kandpal, Suraj @ 2026-01-06 11:23 ` Shankar, Uma 2026-01-07 0:05 ` Alex Hung 2 siblings, 0 replies; 51+ messages in thread From: Shankar, Uma @ 2026-01-06 11:23 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, Kandpal, Suraj, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D > -----Original Message----- > From: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com> > Sent: Friday, December 19, 2025 12:26 PM > To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel- > xe@lists.freedesktop.org; amd-gfx@lists.freedesktop.org > Cc: harry.wentland@amd.com; jani.nikula@linux.intel.com; > louis.chauvet@bootlin.com; mwen@igalia.com; contact@emersion.fr; > alex.hung@amd.com; daniels@collabora.com; Shankar, Uma > <uma.shankar@intel.com>; Kandpal, Suraj <suraj.kandpal@intel.com>; > nfraprado@collabora.com; ville.syrjala@linux.intel.com; Roper, Matthew D > <matthew.d.roper@intel.com> > Subject: [PATCH 12/13] drm/colorop: Use destroy callback for color pipeline > teardown > > Switch drm_colorop_pipeline_destroy() to use the driver-provided destroy callback > instead of directly calling drm_colorop_cleanup() and freeing the object. > > This allows drivers that embed struct drm_colorop in driver-specific objects to > perform correct teardown. Looks Good to me. Reviewed-by: Uma Shankar <uma.shankar@intel.com> > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > drivers/gpu/drm/drm_colorop.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/drm_colorop.c index > 4b27804bb0bd..fafe45b93ff8 100644 > --- a/drivers/gpu/drm/drm_colorop.c > +++ b/drivers/gpu/drm/drm_colorop.c > @@ -205,8 +205,7 @@ void drm_colorop_pipeline_destroy(struct drm_device > *dev) > struct drm_colorop *colorop, *next; > > list_for_each_entry_safe(colorop, next, &config->colorop_list, head) { > - drm_colorop_cleanup(colorop); > - kfree(colorop); > + colorop->funcs->destroy(colorop); > } > } > EXPORT_SYMBOL(drm_colorop_pipeline_destroy); > -- > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* Re: [PATCH 12/13] drm/colorop: Use destroy callback for color pipeline teardown 2025-12-19 6:56 ` [PATCH 12/13] drm/colorop: Use destroy callback for color pipeline teardown Chaitanya Kumar Borah 2026-01-05 9:27 ` Kandpal, Suraj 2026-01-06 11:23 ` Shankar, Uma @ 2026-01-07 0:05 ` Alex Hung 2 siblings, 0 replies; 51+ messages in thread From: Alex Hung @ 2026-01-07 0:05 UTC (permalink / raw) To: Chaitanya Kumar Borah, dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper Reviewed-by: Alex Hung <alex.hung@amd.com> On 12/18/25 23:56, Chaitanya Kumar Borah wrote: > Switch drm_colorop_pipeline_destroy() to use the driver-provided > destroy callback instead of directly calling drm_colorop_cleanup() > and freeing the object. > > This allows drivers that embed struct drm_colorop in driver-specific > objects to perform correct teardown. > > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > drivers/gpu/drm/drm_colorop.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/drm_colorop.c > index 4b27804bb0bd..fafe45b93ff8 100644 > --- a/drivers/gpu/drm/drm_colorop.c > +++ b/drivers/gpu/drm/drm_colorop.c > @@ -205,8 +205,7 @@ void drm_colorop_pipeline_destroy(struct drm_device *dev) > struct drm_colorop *colorop, *next; > > list_for_each_entry_safe(colorop, next, &config->colorop_list, head) { > - drm_colorop_cleanup(colorop); > - kfree(colorop); > + colorop->funcs->destroy(colorop); > } > } > EXPORT_SYMBOL(drm_colorop_pipeline_destroy); ^ permalink raw reply [flat|nested] 51+ messages in thread
* [PATCH 13/13] drm/i915/color: Add failure handling in plane color pipeline init 2025-12-19 6:56 [PATCH 00/13] drm: Color pipeline teardown and follow-up fixes/improvements Chaitanya Kumar Borah ` (11 preceding siblings ...) 2025-12-19 6:56 ` [PATCH 12/13] drm/colorop: Use destroy callback for color pipeline teardown Chaitanya Kumar Borah @ 2025-12-19 6:56 ` Chaitanya Kumar Borah 2026-01-06 3:55 ` Kandpal, Suraj 2025-12-19 7:19 ` ✗ CI.checkpatch: warning for drm: Color pipeline teardown and follow-up fixes/improvements Patchwork ` (4 subsequent siblings) 17 siblings, 1 reply; 51+ messages in thread From: Chaitanya Kumar Borah @ 2025-12-19 6:56 UTC (permalink / raw) To: dri-devel, intel-gfx, intel-xe, amd-gfx Cc: harry.wentland, jani.nikula, louis.chauvet, mwen, contact, alex.hung, daniels, uma.shankar, suraj.kandpal, nfraprado, ville.syrjala, matthew.d.roper The plane color pipeline initialization built up multiple colorop blocks inline, but did not reliably clean up partially constructed pipelines when an intermediate step failed. This could lead to leaked colorop objects and fragile error handling as the pipeline grows. Refactor the pipeline construction to use a common helper for adding colorop blocks. This centralizes allocation, initialization, and teardown logic, allowing the caller to reliably unwind all previously created colorops on failure. Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> --- .../drm/i915/display/intel_color_pipeline.c | 142 ++++++++++++------ 1 file changed, 100 insertions(+), 42 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c b/drivers/gpu/drm/i915/display/intel_color_pipeline.c index 8fecc53540ba..035ec3f022cd 100644 --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c @@ -2,6 +2,8 @@ /* * Copyright © 2025 Intel Corporation */ +#include <drm/drm_print.h> + #include "intel_color.h" #include "intel_colorop.h" #include "intel_color_pipeline.h" @@ -10,6 +12,7 @@ #include "skl_universal_plane.h" #define MAX_COLOR_PIPELINES 1 +#define MAX_COLOROP 4 #define PLANE_DEGAMMA_SIZE 128 #define PLANE_GAMMA_SIZE 32 @@ -18,69 +21,124 @@ static const struct drm_colorop_funcs intel_colorop_funcs = { }; static -int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_enum_list *list, - enum pipe pipe) +struct intel_colorop *intel_color_pipeline_plane_add_colorop(struct drm_plane *plane, + struct intel_colorop *prev, + enum intel_color_block id) { struct drm_device *dev = plane->dev; - struct intel_display *display = to_intel_display(dev); - struct drm_colorop *prev_op; struct intel_colorop *colorop; int ret; - colorop = intel_colorop_create(INTEL_PLANE_CB_PRE_CSC_LUT); - - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, &intel_colorop_funcs, - PLANE_DEGAMMA_SIZE, - DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, - DRM_COLOROP_FLAG_ALLOW_BYPASS); + colorop = intel_colorop_create(id); + + if (IS_ERR(colorop)) + return colorop; + + switch (id) { + case INTEL_PLANE_CB_PRE_CSC_LUT: + ret = drm_plane_colorop_curve_1d_lut_init(dev, + &colorop->base, plane, + &intel_colorop_funcs, + PLANE_DEGAMMA_SIZE, + DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, + DRM_COLOROP_FLAG_ALLOW_BYPASS); + break; + case INTEL_PLANE_CB_CSC: + ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, + &intel_colorop_funcs, + DRM_COLOROP_FLAG_ALLOW_BYPASS); + break; + case INTEL_PLANE_CB_3DLUT: + ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, plane, + &intel_colorop_funcs, 17, + DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, + true); + break; + case INTEL_PLANE_CB_POST_CSC_LUT: + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, + &intel_colorop_funcs, + PLANE_GAMMA_SIZE, + DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, + DRM_COLOROP_FLAG_ALLOW_BYPASS); + break; + default: + drm_err(plane->dev, "Invalid colorop id [%d]", id); + ret = -EINVAL; + } if (ret) - return ret; + goto cleanup; - list->type = colorop->base.base.id; + if (prev) + drm_colorop_set_next_property(&prev->base, &colorop->base); - /* TODO: handle failures and clean up */ - prev_op = &colorop->base; + return colorop; - colorop = intel_colorop_create(INTEL_PLANE_CB_CSC); - ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, &intel_colorop_funcs, - DRM_COLOROP_FLAG_ALLOW_BYPASS); - if (ret) - return ret; +cleanup: + intel_colorop_destroy(&colorop->base); + return ERR_PTR(ret); +} - drm_colorop_set_next_property(prev_op, &colorop->base); - prev_op = &colorop->base; +static +int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_enum_list *list, + enum pipe pipe) +{ + struct drm_device *dev = plane->dev; + struct intel_display *display = to_intel_display(dev); + struct intel_colorop *colorop[MAX_COLOROP]; + int ret = 0; + int i = 0; - if (DISPLAY_VER(display) >= 35 && - intel_color_crtc_has_3dlut(display, pipe) && - plane->type == DRM_PLANE_TYPE_PRIMARY) { - colorop = intel_colorop_create(INTEL_PLANE_CB_3DLUT); + colorop[i] = intel_color_pipeline_plane_add_colorop(plane, NULL, + INTEL_PLANE_CB_PRE_CSC_LUT); + + if (IS_ERR(colorop[i])) { + ret = PTR_ERR(colorop[i]); + goto cleanup; + } + i++; - ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, plane, - &intel_colorop_funcs, 17, - DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, - true); - if (ret) - return ret; - drm_colorop_set_next_property(prev_op, &colorop->base); + colorop[i] = intel_color_pipeline_plane_add_colorop(plane, colorop[i - 1], + INTEL_PLANE_CB_CSC); - prev_op = &colorop->base; + if (IS_ERR(colorop[i])) { + ret = PTR_ERR(colorop[i]); + goto cleanup; } - colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT); - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane, &intel_colorop_funcs, - PLANE_GAMMA_SIZE, - DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, - DRM_COLOROP_FLAG_ALLOW_BYPASS); - if (ret) - return ret; + i++; - drm_colorop_set_next_property(prev_op, &colorop->base); + if (DISPLAY_VER(display) >= 35 && + intel_color_crtc_has_3dlut(display, pipe) && + plane->type == DRM_PLANE_TYPE_PRIMARY) { + colorop[i] = intel_color_pipeline_plane_add_colorop(plane, colorop[i - 1], + INTEL_PLANE_CB_3DLUT); + + if (IS_ERR(colorop[i])) { + ret = PTR_ERR(colorop[i]); + goto cleanup; + } + i++; + } - list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", list->type); + colorop[i] = intel_color_pipeline_plane_add_colorop(plane, colorop[i - 1], + INTEL_PLANE_CB_POST_CSC_LUT); + if (IS_ERR(colorop[i])) { + ret = PTR_ERR(colorop[i]); + goto cleanup; + } + i++; + + list->type = colorop[0]->base.base.id; + list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", colorop[0]->base.base.id); return 0; + +cleanup: + while (--i >= 0) + intel_colorop_destroy(&colorop[i]->base); + return ret; } int intel_color_pipeline_plane_init(struct drm_plane *plane, enum pipe pipe) -- 2.25.1 ^ permalink raw reply related [flat|nested] 51+ messages in thread
* RE: [PATCH 13/13] drm/i915/color: Add failure handling in plane color pipeline init 2025-12-19 6:56 ` [PATCH 13/13] drm/i915/color: Add failure handling in plane color pipeline init Chaitanya Kumar Borah @ 2026-01-06 3:55 ` Kandpal, Suraj 2026-01-06 11:57 ` Shankar, Uma 2026-01-09 8:49 ` Borah, Chaitanya Kumar 0 siblings, 2 replies; 51+ messages in thread From: Kandpal, Suraj @ 2026-01-06 3:55 UTC (permalink / raw) To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, Shankar, Uma, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D, Nautiyal, Ankit K > Subject: [PATCH 13/13] drm/i915/color: Add failure handling in plane color > pipeline init > > The plane color pipeline initialization built up multiple colorop blocks inline, > but did not reliably clean up partially constructed pipelines when an > intermediate step failed. This could lead to leaked colorop objects and fragile > error handling as the pipeline grows. > > Refactor the pipeline construction to use a common helper for adding colorop > blocks. This centralizes allocation, initialization, and teardown logic, allowing > the caller to reliably unwind all previously created colorops on failure. > > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > --- > .../drm/i915/display/intel_color_pipeline.c | 142 ++++++++++++------ > 1 file changed, 100 insertions(+), 42 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > index 8fecc53540ba..035ec3f022cd 100644 > --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > @@ -2,6 +2,8 @@ > /* > * Copyright © 2025 Intel Corporation > */ > +#include <drm/drm_print.h> > + > #include "intel_color.h" > #include "intel_colorop.h" > #include "intel_color_pipeline.h" > @@ -10,6 +12,7 @@ > #include "skl_universal_plane.h" > > #define MAX_COLOR_PIPELINES 1 > +#define MAX_COLOROP 4 > #define PLANE_DEGAMMA_SIZE 128 > #define PLANE_GAMMA_SIZE 32 > > @@ -18,69 +21,124 @@ static const struct drm_colorop_funcs > intel_colorop_funcs = { }; > > static > -int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct > drm_prop_enum_list *list, > - enum pipe pipe) > +struct intel_colorop *intel_color_pipeline_plane_add_colorop(struct > drm_plane *plane, > + struct > intel_colorop *prev, > + enum > intel_color_block id) > { Seems like you just added a new function and then changed the function _intel_color_pipeline_plane_init but git format-patch messed this patch up bit Maybe try use --patience option to make this patch more readable. > struct drm_device *dev = plane->dev; > - struct intel_display *display = to_intel_display(dev); > - struct drm_colorop *prev_op; > struct intel_colorop *colorop; > int ret; > > - colorop = intel_colorop_create(INTEL_PLANE_CB_PRE_CSC_LUT); > - > - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, > plane, &intel_colorop_funcs, > - PLANE_DEGAMMA_SIZE, > - > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > - > DRM_COLOROP_FLAG_ALLOW_BYPASS); > + colorop = intel_colorop_create(id); > + > + if (IS_ERR(colorop)) > + return colorop; > + > + switch (id) { > + case INTEL_PLANE_CB_PRE_CSC_LUT: > + ret = drm_plane_colorop_curve_1d_lut_init(dev, > + &colorop->base, > plane, > + > &intel_colorop_funcs, > + > PLANE_DEGAMMA_SIZE, > + > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > + > DRM_COLOROP_FLAG_ALLOW_BYPASS); > + break; > + case INTEL_PLANE_CB_CSC: > + ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, > plane, > + &intel_colorop_funcs, > + > DRM_COLOROP_FLAG_ALLOW_BYPASS); > + break; > + case INTEL_PLANE_CB_3DLUT: > + ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, > plane, > + &intel_colorop_funcs, 17, > + > DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, > + true); > + break; > + case INTEL_PLANE_CB_POST_CSC_LUT: > + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop- > >base, plane, > + > &intel_colorop_funcs, > + > PLANE_GAMMA_SIZE, > + > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > + > DRM_COLOROP_FLAG_ALLOW_BYPASS); > + break; > + default: > + drm_err(plane->dev, "Invalid colorop id [%d]", id); > + ret = -EINVAL; > + } > > if (ret) > - return ret; > + goto cleanup; > > - list->type = colorop->base.base.id; > + if (prev) > + drm_colorop_set_next_property(&prev->base, &colorop- > >base); > > - /* TODO: handle failures and clean up */ > - prev_op = &colorop->base; > + return colorop; > > - colorop = intel_colorop_create(INTEL_PLANE_CB_CSC); > - ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, > &intel_colorop_funcs, > - > DRM_COLOROP_FLAG_ALLOW_BYPASS); > - if (ret) > - return ret; > +cleanup: > + intel_colorop_destroy(&colorop->base); > + return ERR_PTR(ret); > +} > > - drm_colorop_set_next_property(prev_op, &colorop->base); > - prev_op = &colorop->base; > +static > +int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct > drm_prop_enum_list *list, > + enum pipe pipe) > +{ > + struct drm_device *dev = plane->dev; > + struct intel_display *display = to_intel_display(dev); > + struct intel_colorop *colorop[MAX_COLOROP]; > + int ret = 0; > + int i = 0; > > - if (DISPLAY_VER(display) >= 35 && > - intel_color_crtc_has_3dlut(display, pipe) && > - plane->type == DRM_PLANE_TYPE_PRIMARY) { > - colorop = intel_colorop_create(INTEL_PLANE_CB_3DLUT); > + colorop[i] = intel_color_pipeline_plane_add_colorop(plane, NULL, > + > INTEL_PLANE_CB_PRE_CSC_LUT); > + > + if (IS_ERR(colorop[i])) { > + ret = PTR_ERR(colorop[i]); > + goto cleanup; > + } > + i++; I see a lot of repeated code maybe we can get this done via a loop static const enum intel_colorop_type pipeline[] = { INTEL_PLANE_CB_PRE_CSC_LUT, INTEL_PLANE_CB_CSC, INTEL_PLANE_CB_3DLUT, INTEL_PLANE_CB_POST_CSC_LUT, }; for (n = 0; n < ARRAY_SIZE(pipeline); n++) { if (pipeline[n] == INTEL_PLANE_CB_3DLUT && (DISPLAY_VER(display) < 35 || plane->type != DRM_PLANE_TYPE_PRIMARY || !intel_color_crtc_has_3dlut(display, pipe))) continue; ret = add_plane_colorop(plane, colorop, &i, &prev, pipeline[n]); if (ret) goto cleanup; } Where add_plane_colorop is static int add_plane_colorop(struct drm_plane *plane, struct intel_colorop **colorop, int *i, struct intel_colorop **prev, enum intel_colorop_type type) { colorop[*i] = intel_color_pipeline_plane_add_colorop(plane, *prev, type); if (IS_ERR(colorop[*i])) return PTR_ERR(colorop[*i]); *prev = colorop[*i]; (*i)++; return 0; } Regards, Suraj Kandpal > > - ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, > plane, > - &intel_colorop_funcs, 17, > - > DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, > - true); > - if (ret) > - return ret; > > - drm_colorop_set_next_property(prev_op, &colorop->base); > + colorop[i] = intel_color_pipeline_plane_add_colorop(plane, colorop[i - > 1], > + > INTEL_PLANE_CB_CSC); > > - prev_op = &colorop->base; > + if (IS_ERR(colorop[i])) { > + ret = PTR_ERR(colorop[i]); > + goto cleanup; > } > > - colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT); > - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, > plane, &intel_colorop_funcs, > - PLANE_GAMMA_SIZE, > - > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > - > DRM_COLOROP_FLAG_ALLOW_BYPASS); > - if (ret) > - return ret; > + i++; > > - drm_colorop_set_next_property(prev_op, &colorop->base); > + if (DISPLAY_VER(display) >= 35 && > + intel_color_crtc_has_3dlut(display, pipe) && > + plane->type == DRM_PLANE_TYPE_PRIMARY) { > + colorop[i] = intel_color_pipeline_plane_add_colorop(plane, > colorop[i - 1], > + > INTEL_PLANE_CB_3DLUT); > + > + if (IS_ERR(colorop[i])) { > + ret = PTR_ERR(colorop[i]); > + goto cleanup; > + } > + i++; > + } > > - list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", list->type); > + colorop[i] = intel_color_pipeline_plane_add_colorop(plane, colorop[i - > 1], > + > INTEL_PLANE_CB_POST_CSC_LUT); > + if (IS_ERR(colorop[i])) { > + ret = PTR_ERR(colorop[i]); > + goto cleanup; > + } > + i++; > + > + list->type = colorop[0]->base.base.id; > + list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", > +colorop[0]->base.base.id); > > return 0; > + > +cleanup: > + while (--i >= 0) > + intel_colorop_destroy(&colorop[i]->base); > + return ret; > } > > int intel_color_pipeline_plane_init(struct drm_plane *plane, enum pipe pipe) > -- > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* RE: [PATCH 13/13] drm/i915/color: Add failure handling in plane color pipeline init 2026-01-06 3:55 ` Kandpal, Suraj @ 2026-01-06 11:57 ` Shankar, Uma 2026-01-09 8:49 ` Borah, Chaitanya Kumar 1 sibling, 0 replies; 51+ messages in thread From: Shankar, Uma @ 2026-01-06 11:57 UTC (permalink / raw) To: Kandpal, Suraj, Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D, Nautiyal, Ankit K > -----Original Message----- > From: Kandpal, Suraj <suraj.kandpal@intel.com> > Sent: Tuesday, January 6, 2026 9:25 AM > To: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com>; dri- > devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel- > xe@lists.freedesktop.org; amd-gfx@lists.freedesktop.org > Cc: harry.wentland@amd.com; jani.nikula@linux.intel.com; > louis.chauvet@bootlin.com; mwen@igalia.com; contact@emersion.fr; > alex.hung@amd.com; daniels@collabora.com; Shankar, Uma > <uma.shankar@intel.com>; nfraprado@collabora.com; > ville.syrjala@linux.intel.com; Roper, Matthew D <matthew.d.roper@intel.com>; > Nautiyal, Ankit K <ankit.k.nautiyal@intel.com> > Subject: RE: [PATCH 13/13] drm/i915/color: Add failure handling in plane color > pipeline init > > > Subject: [PATCH 13/13] drm/i915/color: Add failure handling in plane > > color pipeline init > > > > The plane color pipeline initialization built up multiple colorop > > blocks inline, but did not reliably clean up partially constructed > > pipelines when an intermediate step failed. This could lead to leaked > > colorop objects and fragile error handling as the pipeline grows. > > > > Refactor the pipeline construction to use a common helper for adding > > colorop blocks. This centralizes allocation, initialization, and > > teardown logic, allowing the caller to reliably unwind all previously created > colorops on failure. > > > > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > > --- > > .../drm/i915/display/intel_color_pipeline.c | 142 ++++++++++++------ > > 1 file changed, 100 insertions(+), 42 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > > b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > > index 8fecc53540ba..035ec3f022cd 100644 > > --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c > > +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c > > @@ -2,6 +2,8 @@ > > /* > > * Copyright © 2025 Intel Corporation > > */ > > +#include <drm/drm_print.h> > > + > > #include "intel_color.h" > > #include "intel_colorop.h" > > #include "intel_color_pipeline.h" > > @@ -10,6 +12,7 @@ > > #include "skl_universal_plane.h" > > > > #define MAX_COLOR_PIPELINES 1 > > +#define MAX_COLOROP 4 > > #define PLANE_DEGAMMA_SIZE 128 > > #define PLANE_GAMMA_SIZE 32 > > > > @@ -18,69 +21,124 @@ static const struct drm_colorop_funcs > > intel_colorop_funcs = { }; > > > > static > > -int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct > > drm_prop_enum_list *list, > > - enum pipe pipe) > > +struct intel_colorop *intel_color_pipeline_plane_add_colorop(struct > > drm_plane *plane, > > + struct > > intel_colorop *prev, > > + enum > > intel_color_block id) > > { > > Seems like you just added a new function and then changed the function > _intel_color_pipeline_plane_init but git format-patch messed this patch up bit > Maybe try use --patience option to make this patch more readable. Yeah the refactor created some weirdness but logically looks ok. Check if it can be made more readable. Maybe break it in 2 patches if required, one to introduce the helper and next using the new helper. > > struct drm_device *dev = plane->dev; > > - struct intel_display *display = to_intel_display(dev); > > - struct drm_colorop *prev_op; > > struct intel_colorop *colorop; > > int ret; > > > > - colorop = intel_colorop_create(INTEL_PLANE_CB_PRE_CSC_LUT); > > - > > - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, > > plane, &intel_colorop_funcs, > > - PLANE_DEGAMMA_SIZE, > > - > > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > > - > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > > + colorop = intel_colorop_create(id); > > + > > + if (IS_ERR(colorop)) > > + return colorop; > > + > > + switch (id) { > > + case INTEL_PLANE_CB_PRE_CSC_LUT: > > + ret = drm_plane_colorop_curve_1d_lut_init(dev, > > + &colorop->base, > > plane, > > + > > &intel_colorop_funcs, > > + > > PLANE_DEGAMMA_SIZE, > > + > > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > > + > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > > + break; > > + case INTEL_PLANE_CB_CSC: > > + ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, > > plane, > > + &intel_colorop_funcs, > > + > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > > + break; > > + case INTEL_PLANE_CB_3DLUT: > > + ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, > > plane, > > + &intel_colorop_funcs, 17, > > + > > DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, > > + true); > > + break; > > + case INTEL_PLANE_CB_POST_CSC_LUT: > > + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop- > > >base, plane, > > + > > &intel_colorop_funcs, > > + > > PLANE_GAMMA_SIZE, > > + > > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > > + > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > > + break; > > + default: > > + drm_err(plane->dev, "Invalid colorop id [%d]", id); > > + ret = -EINVAL; > > + } > > > > if (ret) > > - return ret; > > + goto cleanup; > > > > - list->type = colorop->base.base.id; > > + if (prev) > > + drm_colorop_set_next_property(&prev->base, &colorop- > > >base); > > > > - /* TODO: handle failures and clean up */ > > - prev_op = &colorop->base; > > + return colorop; > > > > - colorop = intel_colorop_create(INTEL_PLANE_CB_CSC); > > - ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, > > &intel_colorop_funcs, > > - > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > > - if (ret) > > - return ret; > > +cleanup: > > + intel_colorop_destroy(&colorop->base); > > + return ERR_PTR(ret); > > +} > > > > - drm_colorop_set_next_property(prev_op, &colorop->base); > > - prev_op = &colorop->base; > > +static > > +int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct > > drm_prop_enum_list *list, > > + enum pipe pipe) > > +{ > > + struct drm_device *dev = plane->dev; > > + struct intel_display *display = to_intel_display(dev); > > + struct intel_colorop *colorop[MAX_COLOROP]; > > + int ret = 0; > > + int i = 0; > > > > - if (DISPLAY_VER(display) >= 35 && > > - intel_color_crtc_has_3dlut(display, pipe) && > > - plane->type == DRM_PLANE_TYPE_PRIMARY) { > > - colorop = intel_colorop_create(INTEL_PLANE_CB_3DLUT); > > + colorop[i] = intel_color_pipeline_plane_add_colorop(plane, NULL, > > + > > INTEL_PLANE_CB_PRE_CSC_LUT); > > + > > + if (IS_ERR(colorop[i])) { > > + ret = PTR_ERR(colorop[i]); > > + goto cleanup; > > + } > > + i++; > > I see a lot of repeated code maybe we can get this done via a loop static const > enum intel_colorop_type pipeline[] = { > INTEL_PLANE_CB_PRE_CSC_LUT, > INTEL_PLANE_CB_CSC, > INTEL_PLANE_CB_3DLUT, > INTEL_PLANE_CB_POST_CSC_LUT, > }; > > for (n = 0; n < ARRAY_SIZE(pipeline); n++) { > if (pipeline[n] == INTEL_PLANE_CB_3DLUT && > (DISPLAY_VER(display) < 35 || > plane->type != DRM_PLANE_TYPE_PRIMARY || > !intel_color_crtc_has_3dlut(display, pipe))) > continue; > > ret = add_plane_colorop(plane, colorop, &i, &prev, pipeline[n]); > if (ret) > goto cleanup; > } > > Where add_plane_colorop is > > static int > add_plane_colorop(struct drm_plane *plane, > struct intel_colorop **colorop, > int *i, > struct intel_colorop **prev, > enum intel_colorop_type type) { > colorop[*i] = intel_color_pipeline_plane_add_colorop(plane, *prev, type); > if (IS_ERR(colorop[*i])) > return PTR_ERR(colorop[*i]); > > *prev = colorop[*i]; > (*i)++; > > return 0; > } This can be explored, we can create pipeline wise array entries and traverse them in loop to make it clearer and more concise. To create a specific pipeline, we can just pass the array. Overall changes in the series look good to me. Thanks for working on fixing the leaks. Regards, Uma Shankar > > > > - ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, > > plane, > > - &intel_colorop_funcs, 17, > > - > > DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, > > - true); > > - if (ret) > > - return ret; > > > > - drm_colorop_set_next_property(prev_op, &colorop->base); > > + colorop[i] = intel_color_pipeline_plane_add_colorop(plane, colorop[i > > +- > > 1], > > + > > INTEL_PLANE_CB_CSC); > > > > - prev_op = &colorop->base; > > + if (IS_ERR(colorop[i])) { > > + ret = PTR_ERR(colorop[i]); > > + goto cleanup; > > } > > > > - colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT); > > - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, > > plane, &intel_colorop_funcs, > > - PLANE_GAMMA_SIZE, > > - > > DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, > > - > > DRM_COLOROP_FLAG_ALLOW_BYPASS); > > - if (ret) > > - return ret; > > + i++; > > > > - drm_colorop_set_next_property(prev_op, &colorop->base); > > + if (DISPLAY_VER(display) >= 35 && > > + intel_color_crtc_has_3dlut(display, pipe) && > > + plane->type == DRM_PLANE_TYPE_PRIMARY) { > > + colorop[i] = intel_color_pipeline_plane_add_colorop(plane, > > colorop[i - 1], > > + > > INTEL_PLANE_CB_3DLUT); > > + > > + if (IS_ERR(colorop[i])) { > > + ret = PTR_ERR(colorop[i]); > > + goto cleanup; > > + } > > + i++; > > + } > > > > - list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", list->type); > > + colorop[i] = intel_color_pipeline_plane_add_colorop(plane, colorop[i > > +- > > 1], > > + > > INTEL_PLANE_CB_POST_CSC_LUT); > > + if (IS_ERR(colorop[i])) { > > + ret = PTR_ERR(colorop[i]); > > + goto cleanup; > > + } > > + i++; > > + > > + list->type = colorop[0]->base.base.id; > > + list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", > > +colorop[0]->base.base.id); > > > > return 0; > > + > > +cleanup: > > + while (--i >= 0) > > + intel_colorop_destroy(&colorop[i]->base); > > + return ret; > > } > > > > int intel_color_pipeline_plane_init(struct drm_plane *plane, enum > > pipe pipe) > > -- > > 2.25.1 ^ permalink raw reply [flat|nested] 51+ messages in thread
* Re: [PATCH 13/13] drm/i915/color: Add failure handling in plane color pipeline init 2026-01-06 3:55 ` Kandpal, Suraj 2026-01-06 11:57 ` Shankar, Uma @ 2026-01-09 8:49 ` Borah, Chaitanya Kumar 1 sibling, 0 replies; 51+ messages in thread From: Borah, Chaitanya Kumar @ 2026-01-09 8:49 UTC (permalink / raw) To: Kandpal, Suraj, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: harry.wentland@amd.com, jani.nikula@linux.intel.com, louis.chauvet@bootlin.com, mwen@igalia.com, contact@emersion.fr, alex.hung@amd.com, daniels@collabora.com, Shankar, Uma, nfraprado@collabora.com, ville.syrjala@linux.intel.com, Roper, Matthew D, Nautiyal, Ankit K On 1/6/2026 9:25 AM, Kandpal, Suraj wrote: >> Subject: [PATCH 13/13] drm/i915/color: Add failure handling in plane color >> pipeline init >> >> The plane color pipeline initialization built up multiple colorop blocks inline, >> but did not reliably clean up partially constructed pipelines when an >> intermediate step failed. This could lead to leaked colorop objects and fragile >> error handling as the pipeline grows. >> >> Refactor the pipeline construction to use a common helper for adding colorop >> blocks. This centralizes allocation, initialization, and teardown logic, allowing >> the caller to reliably unwind all previously created colorops on failure. >> >> Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> >> --- >> .../drm/i915/display/intel_color_pipeline.c | 142 ++++++++++++------ >> 1 file changed, 100 insertions(+), 42 deletions(-) >> >> diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c >> b/drivers/gpu/drm/i915/display/intel_color_pipeline.c >> index 8fecc53540ba..035ec3f022cd 100644 >> --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c >> +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c >> @@ -2,6 +2,8 @@ >> /* >> * Copyright © 2025 Intel Corporation >> */ >> +#include <drm/drm_print.h> >> + >> #include "intel_color.h" >> #include "intel_colorop.h" >> #include "intel_color_pipeline.h" >> @@ -10,6 +12,7 @@ >> #include "skl_universal_plane.h" >> >> #define MAX_COLOR_PIPELINES 1 >> +#define MAX_COLOROP 4 >> #define PLANE_DEGAMMA_SIZE 128 >> #define PLANE_GAMMA_SIZE 32 >> >> @@ -18,69 +21,124 @@ static const struct drm_colorop_funcs >> intel_colorop_funcs = { }; >> >> static >> -int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct >> drm_prop_enum_list *list, >> - enum pipe pipe) >> +struct intel_colorop *intel_color_pipeline_plane_add_colorop(struct >> drm_plane *plane, >> + struct >> intel_colorop *prev, >> + enum >> intel_color_block id) >> { > > Seems like you just added a new function and then changed the function > _intel_color_pipeline_plane_init but git format-patch messed this patch up bit > Maybe try use --patience option to make this patch more readable. > I used it on the v2 but did not help much :/ May be I am missing something. >> struct drm_device *dev = plane->dev; >> - struct intel_display *display = to_intel_display(dev); >> - struct drm_colorop *prev_op; >> struct intel_colorop *colorop; >> int ret; >> >> - colorop = intel_colorop_create(INTEL_PLANE_CB_PRE_CSC_LUT); >> - >> - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, >> plane, &intel_colorop_funcs, >> - PLANE_DEGAMMA_SIZE, >> - >> DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, >> - >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> + colorop = intel_colorop_create(id); >> + >> + if (IS_ERR(colorop)) >> + return colorop; >> + >> + switch (id) { >> + case INTEL_PLANE_CB_PRE_CSC_LUT: >> + ret = drm_plane_colorop_curve_1d_lut_init(dev, >> + &colorop->base, >> plane, >> + >> &intel_colorop_funcs, >> + >> PLANE_DEGAMMA_SIZE, >> + >> DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, >> + >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> + break; >> + case INTEL_PLANE_CB_CSC: >> + ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, >> plane, >> + &intel_colorop_funcs, >> + >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> + break; >> + case INTEL_PLANE_CB_3DLUT: >> + ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, >> plane, >> + &intel_colorop_funcs, 17, >> + >> DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, >> + true); >> + break; >> + case INTEL_PLANE_CB_POST_CSC_LUT: >> + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop- >>> base, plane, >> + >> &intel_colorop_funcs, >> + >> PLANE_GAMMA_SIZE, >> + >> DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, >> + >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> + break; >> + default: >> + drm_err(plane->dev, "Invalid colorop id [%d]", id); >> + ret = -EINVAL; >> + } >> >> if (ret) >> - return ret; >> + goto cleanup; >> >> - list->type = colorop->base.base.id; >> + if (prev) >> + drm_colorop_set_next_property(&prev->base, &colorop- >>> base); >> >> - /* TODO: handle failures and clean up */ >> - prev_op = &colorop->base; >> + return colorop; >> >> - colorop = intel_colorop_create(INTEL_PLANE_CB_CSC); >> - ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane, >> &intel_colorop_funcs, >> - >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> - if (ret) >> - return ret; >> +cleanup: >> + intel_colorop_destroy(&colorop->base); >> + return ERR_PTR(ret); >> +} >> >> - drm_colorop_set_next_property(prev_op, &colorop->base); >> - prev_op = &colorop->base; >> +static >> +int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct >> drm_prop_enum_list *list, >> + enum pipe pipe) >> +{ >> + struct drm_device *dev = plane->dev; >> + struct intel_display *display = to_intel_display(dev); >> + struct intel_colorop *colorop[MAX_COLOROP]; >> + int ret = 0; >> + int i = 0; >> >> - if (DISPLAY_VER(display) >= 35 && >> - intel_color_crtc_has_3dlut(display, pipe) && >> - plane->type == DRM_PLANE_TYPE_PRIMARY) { >> - colorop = intel_colorop_create(INTEL_PLANE_CB_3DLUT); >> + colorop[i] = intel_color_pipeline_plane_add_colorop(plane, NULL, >> + >> INTEL_PLANE_CB_PRE_CSC_LUT); >> + >> + if (IS_ERR(colorop[i])) { >> + ret = PTR_ERR(colorop[i]); >> + goto cleanup; >> + } >> + i++; > > I see a lot of repeated code maybe we can get this done via a loop > static const enum intel_colorop_type pipeline[] = { > INTEL_PLANE_CB_PRE_CSC_LUT, > INTEL_PLANE_CB_CSC, > INTEL_PLANE_CB_3DLUT, > INTEL_PLANE_CB_POST_CSC_LUT, > }; > > for (n = 0; n < ARRAY_SIZE(pipeline); n++) { > if (pipeline[n] == INTEL_PLANE_CB_3DLUT && > (DISPLAY_VER(display) < 35 || > plane->type != DRM_PLANE_TYPE_PRIMARY || > !intel_color_crtc_has_3dlut(display, pipe))) > continue; > > ret = add_plane_colorop(plane, colorop, &i, &prev, pipeline[n]); > if (ret) > goto cleanup; > } > > Where add_plane_colorop is > > static int > add_plane_colorop(struct drm_plane *plane, > struct intel_colorop **colorop, > int *i, > struct intel_colorop **prev, > enum intel_colorop_type type) > { > colorop[*i] = intel_color_pipeline_plane_add_colorop(plane, *prev, type); > if (IS_ERR(colorop[*i])) > return PTR_ERR(colorop[*i]); > > *prev = colorop[*i]; > (*i)++; > > return 0; > } Sounds like a good idea, thank you. Implemented a version of this in v2 https://lore.kernel.org/intel-gfx/20260109081728.478844-14-chaitanya.kumar.borah@intel.com/T/#u > > Regards, > Suraj Kandpal > >> >> - ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, >> plane, >> - &intel_colorop_funcs, 17, >> - >> DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, >> - true); >> - if (ret) >> - return ret; >> >> - drm_colorop_set_next_property(prev_op, &colorop->base); >> + colorop[i] = intel_color_pipeline_plane_add_colorop(plane, colorop[i - >> 1], >> + >> INTEL_PLANE_CB_CSC); >> >> - prev_op = &colorop->base; >> + if (IS_ERR(colorop[i])) { >> + ret = PTR_ERR(colorop[i]); >> + goto cleanup; >> } >> >> - colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT); >> - ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, >> plane, &intel_colorop_funcs, >> - PLANE_GAMMA_SIZE, >> - >> DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR, >> - >> DRM_COLOROP_FLAG_ALLOW_BYPASS); >> - if (ret) >> - return ret; >> + i++; >> >> - drm_colorop_set_next_property(prev_op, &colorop->base); >> + if (DISPLAY_VER(display) >= 35 && >> + intel_color_crtc_has_3dlut(display, pipe) && >> + plane->type == DRM_PLANE_TYPE_PRIMARY) { >> + colorop[i] = intel_color_pipeline_plane_add_colorop(plane, >> colorop[i - 1], >> + >> INTEL_PLANE_CB_3DLUT); >> + >> + if (IS_ERR(colorop[i])) { >> + ret = PTR_ERR(colorop[i]); >> + goto cleanup; >> + } >> + i++; >> + } >> >> - list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", list->type); >> + colorop[i] = intel_color_pipeline_plane_add_colorop(plane, colorop[i - >> 1], >> + >> INTEL_PLANE_CB_POST_CSC_LUT); >> + if (IS_ERR(colorop[i])) { >> + ret = PTR_ERR(colorop[i]); >> + goto cleanup; >> + } >> + i++; >> + >> + list->type = colorop[0]->base.base.id; >> + list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", >> +colorop[0]->base.base.id); >> >> return 0; >> + >> +cleanup: >> + while (--i >= 0) >> + intel_colorop_destroy(&colorop[i]->base); >> + return ret; >> } >> >> int intel_color_pipeline_plane_init(struct drm_plane *plane, enum pipe pipe) >> -- >> 2.25.1 > ^ permalink raw reply [flat|nested] 51+ messages in thread
* ✗ CI.checkpatch: warning for drm: Color pipeline teardown and follow-up fixes/improvements 2025-12-19 6:56 [PATCH 00/13] drm: Color pipeline teardown and follow-up fixes/improvements Chaitanya Kumar Borah ` (12 preceding siblings ...) 2025-12-19 6:56 ` [PATCH 13/13] drm/i915/color: Add failure handling in plane color pipeline init Chaitanya Kumar Borah @ 2025-12-19 7:19 ` Patchwork 2025-12-19 7:20 ` ✓ CI.KUnit: success " Patchwork ` (3 subsequent siblings) 17 siblings, 0 replies; 51+ messages in thread From: Patchwork @ 2025-12-19 7:19 UTC (permalink / raw) To: Chaitanya Kumar Borah; +Cc: intel-xe == Series Details == Series: drm: Color pipeline teardown and follow-up fixes/improvements URL : https://patchwork.freedesktop.org/series/159263/ State : warning == Summary == + KERNEL=/kernel + git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt Cloning into 'mt'... warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/ + git -C mt rev-list -n1 origin/master 5f54f403acc61a45ad2b4d68dfd74b336dce1968 + cd /kernel + git config --global --add safe.directory /kernel + git log -n1 commit 60151363ce5c12d168c3912680217b36fabd66dc Author: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> Date: Fri Dec 19 12:26:14 2025 +0530 drm/i915/color: Add failure handling in plane color pipeline init The plane color pipeline initialization built up multiple colorop blocks inline, but did not reliably clean up partially constructed pipelines when an intermediate step failed. This could lead to leaked colorop objects and fragile error handling as the pipeline grows. Refactor the pipeline construction to use a common helper for adding colorop blocks. This centralizes allocation, initialization, and teardown logic, allowing the caller to reliably unwind all previously created colorops on failure. Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> + /mt/dim checkpatch 515e6667d13b3a1ea3192f275982df95854ac89b drm-intel d629d33dd2b0 drm/i915/color: Place 3D LUT after CSC in plane color pipeline 19409e158009 drm/amd/display: Fix color pipeline enum name leak 7dec3c0dcb01 drm/vkms: Fix color pipeline enum name leak 0c121aee40f6 drm/i915/display: Fix color pipeline enum name leak bb8420ade837 drm: Allow driver-managed destruction of colorop objects -:55: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis #55: FILE: drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c:125: + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, NULL, amdgpu_dm_supported_shaper_tfs, -:64: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis #64: FILE: drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c:142: + ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, NULL, + MAX_COLOR_LUT_ENTRIES, -:74: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis #74: FILE: drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c:160: + ret = drm_plane_colorop_3dlut_init(dev, ops[i], plane, NULL, LUT3D_SIZE, DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, -:158: CHECK:PREFER_KERNEL_TYPES: Prefer kernel type 'u32' over 'uint32_t' #158: FILE: drivers/gpu/drm/drm_colorop.c:304: + uint32_t lut_size, -:349: CHECK:PREFER_KERNEL_TYPES: Prefer kernel type 'u32' over 'uint32_t' #349: FILE: include/drm/drm_colorop.h:413: + uint32_t lut_size, total: 0 errors, 0 warnings, 5 checks, 300 lines checked 00796c7e46a2 drm/colorop: Add destroy helper for colorop objects c0c4c2adc221 drm/amd/display: Hook up colorop destroy helper for plane pipelines -:63: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis #63: FILE: drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c:131: + ret = drm_plane_colorop_curve_1d_init(dev, ops[i], plane, &dm_colorop_funcs, amdgpu_dm_supported_shaper_tfs, -:72: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis #72: FILE: drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c:148: + ret = drm_plane_colorop_curve_1d_lut_init(dev, ops[i], plane, + &dm_colorop_funcs, -:82: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis #82: FILE: drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c:167: + ret = drm_plane_colorop_3dlut_init(dev, ops[i], plane, + &dm_colorop_funcs, LUT3D_SIZE, total: 0 errors, 0 warnings, 3 checks, 79 lines checked 175270567018 drm/vkms: Hook up colorop destroy helper for plane pipelines 0ec1dc33dbf7 drm/i915/display: Hook up intel_colorop_destroy 4ed7ae3eb47f drm: Clean up colorop objects during mode_config cleanup 734093c5bf82 drm/vkms: Remove drm_colorop_pipeline_destroy() from vkms_destroy() c4b50a56994d drm/colorop: Use destroy callback for color pipeline teardown 60151363ce5c drm/i915/color: Add failure handling in plane color pipeline init ^ permalink raw reply [flat|nested] 51+ messages in thread
* ✓ CI.KUnit: success for drm: Color pipeline teardown and follow-up fixes/improvements 2025-12-19 6:56 [PATCH 00/13] drm: Color pipeline teardown and follow-up fixes/improvements Chaitanya Kumar Borah ` (13 preceding siblings ...) 2025-12-19 7:19 ` ✗ CI.checkpatch: warning for drm: Color pipeline teardown and follow-up fixes/improvements Patchwork @ 2025-12-19 7:20 ` Patchwork 2025-12-19 7:35 ` ✗ CI.checksparse: warning " Patchwork ` (2 subsequent siblings) 17 siblings, 0 replies; 51+ messages in thread From: Patchwork @ 2025-12-19 7:20 UTC (permalink / raw) To: Chaitanya Kumar Borah; +Cc: intel-xe == Series Details == Series: drm: Color pipeline teardown and follow-up fixes/improvements URL : https://patchwork.freedesktop.org/series/159263/ State : success == Summary == + trap cleanup EXIT + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig [07:19:25] Configuring KUnit Kernel ... Generating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [07:19:29] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48 [07:20:01] Starting KUnit Kernel (1/1)... [07:20:01] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [07:20:01] ================== guc_buf (11 subtests) =================== [07:20:01] [PASSED] test_smallest [07:20:01] [PASSED] test_largest [07:20:01] [PASSED] test_granular [07:20:01] [PASSED] test_unique [07:20:01] [PASSED] test_overlap [07:20:01] [PASSED] test_reusable [07:20:01] [PASSED] test_too_big [07:20:01] [PASSED] test_flush [07:20:01] [PASSED] test_lookup [07:20:01] [PASSED] test_data [07:20:01] [PASSED] test_class [07:20:01] ===================== [PASSED] guc_buf ===================== [07:20:01] =================== guc_dbm (7 subtests) =================== [07:20:01] [PASSED] test_empty [07:20:01] [PASSED] test_default [07:20:01] ======================== test_size ======================== [07:20:01] [PASSED] 4 [07:20:01] [PASSED] 8 [07:20:01] [PASSED] 32 [07:20:01] [PASSED] 256 [07:20:01] ==================== [PASSED] test_size ==================== [07:20:01] ======================= test_reuse ======================== [07:20:01] [PASSED] 4 [07:20:01] [PASSED] 8 [07:20:01] [PASSED] 32 [07:20:01] [PASSED] 256 [07:20:01] =================== [PASSED] test_reuse ==================== [07:20:01] =================== test_range_overlap ==================== [07:20:01] [PASSED] 4 [07:20:01] [PASSED] 8 [07:20:01] [PASSED] 32 [07:20:01] [PASSED] 256 [07:20:01] =============== [PASSED] test_range_overlap ================ [07:20:01] =================== test_range_compact ==================== [07:20:01] [PASSED] 4 [07:20:01] [PASSED] 8 [07:20:01] [PASSED] 32 [07:20:01] [PASSED] 256 [07:20:01] =============== [PASSED] test_range_compact ================ [07:20:01] ==================== test_range_spare ===================== [07:20:01] [PASSED] 4 [07:20:01] [PASSED] 8 [07:20:01] [PASSED] 32 [07:20:01] [PASSED] 256 [07:20:01] ================ [PASSED] test_range_spare ================= [07:20:01] ===================== [PASSED] guc_dbm ===================== [07:20:01] =================== guc_idm (6 subtests) =================== [07:20:01] [PASSED] bad_init [07:20:01] [PASSED] no_init [07:20:01] [PASSED] init_fini [07:20:01] [PASSED] check_used [07:20:01] [PASSED] check_quota [07:20:01] [PASSED] check_all [07:20:01] ===================== [PASSED] guc_idm ===================== [07:20:01] ================== no_relay (3 subtests) =================== [07:20:01] [PASSED] xe_drops_guc2pf_if_not_ready [07:20:01] [PASSED] xe_drops_guc2vf_if_not_ready [07:20:01] [PASSED] xe_rejects_send_if_not_ready [07:20:01] ==================== [PASSED] no_relay ===================== [07:20:01] ================== pf_relay (14 subtests) ================== [07:20:01] [PASSED] pf_rejects_guc2pf_too_short [07:20:01] [PASSED] pf_rejects_guc2pf_too_long [07:20:01] [PASSED] pf_rejects_guc2pf_no_payload [07:20:01] [PASSED] pf_fails_no_payload [07:20:01] [PASSED] pf_fails_bad_origin [07:20:01] [PASSED] pf_fails_bad_type [07:20:01] [PASSED] pf_txn_reports_error [07:20:01] [PASSED] pf_txn_sends_pf2guc [07:20:01] [PASSED] pf_sends_pf2guc [07:20:01] [SKIPPED] pf_loopback_nop [07:20:01] [SKIPPED] pf_loopback_echo [07:20:01] [SKIPPED] pf_loopback_fail [07:20:01] [SKIPPED] pf_loopback_busy [07:20:01] [SKIPPED] pf_loopback_retry [07:20:01] ==================== [PASSED] pf_relay ===================== [07:20:01] ================== vf_relay (3 subtests) =================== [07:20:01] [PASSED] vf_rejects_guc2vf_too_short [07:20:01] [PASSED] vf_rejects_guc2vf_too_long [07:20:01] [PASSED] vf_rejects_guc2vf_no_payload [07:20:01] ==================== [PASSED] vf_relay ===================== [07:20:01] ================ pf_gt_config (6 subtests) ================= [07:20:01] [PASSED] fair_contexts_1vf [07:20:01] [PASSED] fair_doorbells_1vf [07:20:01] [PASSED] fair_ggtt_1vf [07:20:01] ====================== fair_contexts ====================== [07:20:01] [PASSED] 1 VF [07:20:01] [PASSED] 2 VFs [07:20:01] [PASSED] 3 VFs [07:20:01] [PASSED] 4 VFs [07:20:01] [PASSED] 5 VFs [07:20:01] [PASSED] 6 VFs [07:20:01] [PASSED] 7 VFs [07:20:01] [PASSED] 8 VFs [07:20:01] [PASSED] 9 VFs [07:20:01] [PASSED] 10 VFs [07:20:01] [PASSED] 11 VFs [07:20:01] [PASSED] 12 VFs [07:20:01] [PASSED] 13 VFs [07:20:01] [PASSED] 14 VFs [07:20:01] [PASSED] 15 VFs [07:20:01] [PASSED] 16 VFs [07:20:01] [PASSED] 17 VFs [07:20:01] [PASSED] 18 VFs [07:20:01] [PASSED] 19 VFs [07:20:01] [PASSED] 20 VFs [07:20:01] [PASSED] 21 VFs [07:20:01] [PASSED] 22 VFs [07:20:01] [PASSED] 23 VFs [07:20:01] [PASSED] 24 VFs [07:20:01] [PASSED] 25 VFs [07:20:01] [PASSED] 26 VFs [07:20:01] [PASSED] 27 VFs [07:20:01] [PASSED] 28 VFs [07:20:01] [PASSED] 29 VFs [07:20:01] [PASSED] 30 VFs [07:20:01] [PASSED] 31 VFs [07:20:01] [PASSED] 32 VFs [07:20:01] [PASSED] 33 VFs [07:20:01] [PASSED] 34 VFs [07:20:01] [PASSED] 35 VFs [07:20:01] [PASSED] 36 VFs [07:20:01] [PASSED] 37 VFs [07:20:01] [PASSED] 38 VFs [07:20:01] [PASSED] 39 VFs [07:20:01] [PASSED] 40 VFs [07:20:01] [PASSED] 41 VFs [07:20:01] [PASSED] 42 VFs [07:20:01] [PASSED] 43 VFs [07:20:01] [PASSED] 44 VFs [07:20:01] [PASSED] 45 VFs [07:20:01] [PASSED] 46 VFs [07:20:01] [PASSED] 47 VFs [07:20:01] [PASSED] 48 VFs [07:20:01] [PASSED] 49 VFs [07:20:01] [PASSED] 50 VFs [07:20:01] [PASSED] 51 VFs [07:20:01] [PASSED] 52 VFs [07:20:01] [PASSED] 53 VFs [07:20:01] [PASSED] 54 VFs [07:20:01] [PASSED] 55 VFs [07:20:01] [PASSED] 56 VFs [07:20:01] [PASSED] 57 VFs [07:20:01] [PASSED] 58 VFs [07:20:01] [PASSED] 59 VFs [07:20:01] [PASSED] 60 VFs [07:20:01] [PASSED] 61 VFs [07:20:01] [PASSED] 62 VFs [07:20:01] [PASSED] 63 VFs [07:20:01] ================== [PASSED] fair_contexts ================== [07:20:01] ===================== fair_doorbells ====================== [07:20:01] [PASSED] 1 VF [07:20:01] [PASSED] 2 VFs [07:20:01] [PASSED] 3 VFs [07:20:01] [PASSED] 4 VFs [07:20:01] [PASSED] 5 VFs [07:20:01] [PASSED] 6 VFs [07:20:01] [PASSED] 7 VFs [07:20:01] [PASSED] 8 VFs [07:20:01] [PASSED] 9 VFs [07:20:01] [PASSED] 10 VFs [07:20:01] [PASSED] 11 VFs [07:20:01] [PASSED] 12 VFs [07:20:01] [PASSED] 13 VFs [07:20:01] [PASSED] 14 VFs [07:20:01] [PASSED] 15 VFs [07:20:01] [PASSED] 16 VFs [07:20:01] [PASSED] 17 VFs [07:20:01] [PASSED] 18 VFs [07:20:01] [PASSED] 19 VFs [07:20:01] [PASSED] 20 VFs [07:20:01] [PASSED] 21 VFs [07:20:01] [PASSED] 22 VFs [07:20:01] [PASSED] 23 VFs [07:20:01] [PASSED] 24 VFs [07:20:01] [PASSED] 25 VFs [07:20:01] [PASSED] 26 VFs [07:20:01] [PASSED] 27 VFs [07:20:01] [PASSED] 28 VFs [07:20:01] [PASSED] 29 VFs [07:20:01] [PASSED] 30 VFs [07:20:01] [PASSED] 31 VFs [07:20:01] [PASSED] 32 VFs [07:20:01] [PASSED] 33 VFs [07:20:01] [PASSED] 34 VFs [07:20:01] [PASSED] 35 VFs [07:20:01] [PASSED] 36 VFs [07:20:01] [PASSED] 37 VFs [07:20:01] [PASSED] 38 VFs [07:20:01] [PASSED] 39 VFs [07:20:01] [PASSED] 40 VFs [07:20:01] [PASSED] 41 VFs [07:20:01] [PASSED] 42 VFs [07:20:01] [PASSED] 43 VFs [07:20:01] [PASSED] 44 VFs [07:20:01] [PASSED] 45 VFs [07:20:01] [PASSED] 46 VFs [07:20:01] [PASSED] 47 VFs [07:20:01] [PASSED] 48 VFs [07:20:01] [PASSED] 49 VFs [07:20:01] [PASSED] 50 VFs [07:20:01] [PASSED] 51 VFs [07:20:01] [PASSED] 52 VFs [07:20:01] [PASSED] 53 VFs [07:20:01] [PASSED] 54 VFs [07:20:01] [PASSED] 55 VFs [07:20:01] [PASSED] 56 VFs [07:20:01] [PASSED] 57 VFs [07:20:01] [PASSED] 58 VFs [07:20:01] [PASSED] 59 VFs [07:20:01] [PASSED] 60 VFs [07:20:01] [PASSED] 61 VFs [07:20:01] [PASSED] 62 VFs [07:20:01] [PASSED] 63 VFs [07:20:01] ================= [PASSED] fair_doorbells ================== [07:20:01] ======================== fair_ggtt ======================== [07:20:01] [PASSED] 1 VF [07:20:01] [PASSED] 2 VFs [07:20:01] [PASSED] 3 VFs [07:20:01] [PASSED] 4 VFs [07:20:01] [PASSED] 5 VFs [07:20:01] [PASSED] 6 VFs [07:20:01] [PASSED] 7 VFs [07:20:01] [PASSED] 8 VFs [07:20:01] [PASSED] 9 VFs [07:20:01] [PASSED] 10 VFs [07:20:01] [PASSED] 11 VFs [07:20:01] [PASSED] 12 VFs [07:20:01] [PASSED] 13 VFs [07:20:01] [PASSED] 14 VFs [07:20:01] [PASSED] 15 VFs [07:20:01] [PASSED] 16 VFs [07:20:01] [PASSED] 17 VFs [07:20:01] [PASSED] 18 VFs [07:20:01] [PASSED] 19 VFs [07:20:01] [PASSED] 20 VFs [07:20:01] [PASSED] 21 VFs [07:20:01] [PASSED] 22 VFs [07:20:01] [PASSED] 23 VFs [07:20:01] [PASSED] 24 VFs [07:20:01] [PASSED] 25 VFs [07:20:01] [PASSED] 26 VFs [07:20:01] [PASSED] 27 VFs [07:20:01] [PASSED] 28 VFs [07:20:01] [PASSED] 29 VFs [07:20:01] [PASSED] 30 VFs [07:20:01] [PASSED] 31 VFs [07:20:01] [PASSED] 32 VFs [07:20:01] [PASSED] 33 VFs [07:20:01] [PASSED] 34 VFs [07:20:01] [PASSED] 35 VFs [07:20:01] [PASSED] 36 VFs [07:20:01] [PASSED] 37 VFs [07:20:01] [PASSED] 38 VFs [07:20:01] [PASSED] 39 VFs [07:20:01] [PASSED] 40 VFs [07:20:01] [PASSED] 41 VFs [07:20:01] [PASSED] 42 VFs [07:20:01] [PASSED] 43 VFs [07:20:01] [PASSED] 44 VFs [07:20:01] [PASSED] 45 VFs [07:20:01] [PASSED] 46 VFs [07:20:01] [PASSED] 47 VFs [07:20:01] [PASSED] 48 VFs [07:20:01] [PASSED] 49 VFs [07:20:01] [PASSED] 50 VFs [07:20:01] [PASSED] 51 VFs [07:20:01] [PASSED] 52 VFs [07:20:01] [PASSED] 53 VFs [07:20:01] [PASSED] 54 VFs [07:20:01] [PASSED] 55 VFs [07:20:01] [PASSED] 56 VFs [07:20:01] [PASSED] 57 VFs [07:20:01] [PASSED] 58 VFs [07:20:01] [PASSED] 59 VFs [07:20:01] [PASSED] 60 VFs [07:20:01] [PASSED] 61 VFs [07:20:01] [PASSED] 62 VFs [07:20:01] [PASSED] 63 VFs [07:20:01] ==================== [PASSED] fair_ggtt ==================== [07:20:01] ================== [PASSED] pf_gt_config =================== [07:20:01] ===================== lmtt (1 subtest) ===================== [07:20:01] ======================== test_ops ========================= [07:20:01] [PASSED] 2-level [07:20:01] [PASSED] multi-level [07:20:01] ==================== [PASSED] test_ops ===================== [07:20:01] ====================== [PASSED] lmtt ======================= [07:20:01] ================= pf_service (11 subtests) ================= [07:20:01] [PASSED] pf_negotiate_any [07:20:01] [PASSED] pf_negotiate_base_match [07:20:01] [PASSED] pf_negotiate_base_newer [07:20:01] [PASSED] pf_negotiate_base_next [07:20:01] [SKIPPED] pf_negotiate_base_older [07:20:01] [PASSED] pf_negotiate_base_prev [07:20:01] [PASSED] pf_negotiate_latest_match [07:20:01] [PASSED] pf_negotiate_latest_newer [07:20:01] [PASSED] pf_negotiate_latest_next [07:20:01] [SKIPPED] pf_negotiate_latest_older [07:20:01] [SKIPPED] pf_negotiate_latest_prev [07:20:01] =================== [PASSED] pf_service ==================== [07:20:01] ================= xe_guc_g2g (2 subtests) ================== [07:20:01] ============== xe_live_guc_g2g_kunit_default ============== [07:20:01] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ========== [07:20:01] ============== xe_live_guc_g2g_kunit_allmem =============== [07:20:01] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ========== [07:20:01] =================== [SKIPPED] xe_guc_g2g =================== [07:20:01] =================== xe_mocs (2 subtests) =================== [07:20:01] ================ xe_live_mocs_kernel_kunit ================ [07:20:01] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============ [07:20:01] ================ xe_live_mocs_reset_kunit ================= [07:20:01] ============ [SKIPPED] xe_live_mocs_reset_kunit ============ [07:20:01] ==================== [SKIPPED] xe_mocs ===================== [07:20:01] ================= xe_migrate (2 subtests) ================== [07:20:01] ================= xe_migrate_sanity_kunit ================= [07:20:01] ============ [SKIPPED] xe_migrate_sanity_kunit ============= [07:20:01] ================== xe_validate_ccs_kunit ================== [07:20:01] ============= [SKIPPED] xe_validate_ccs_kunit ============== [07:20:01] =================== [SKIPPED] xe_migrate =================== [07:20:01] ================== xe_dma_buf (1 subtest) ================== [07:20:01] ==================== xe_dma_buf_kunit ===================== [07:20:01] ================ [SKIPPED] xe_dma_buf_kunit ================ [07:20:01] =================== [SKIPPED] xe_dma_buf =================== [07:20:01] ================= xe_bo_shrink (1 subtest) ================= [07:20:01] =================== xe_bo_shrink_kunit ==================== [07:20:01] =============== [SKIPPED] xe_bo_shrink_kunit =============== [07:20:01] ================== [SKIPPED] xe_bo_shrink ================== [07:20:01] ==================== xe_bo (2 subtests) ==================== [07:20:01] ================== xe_ccs_migrate_kunit =================== [07:20:01] ============== [SKIPPED] xe_ccs_migrate_kunit ============== [07:20:01] ==================== xe_bo_evict_kunit ==================== [07:20:01] =============== [SKIPPED] xe_bo_evict_kunit ================ [07:20:01] ===================== [SKIPPED] xe_bo ====================== [07:20:01] ==================== args (13 subtests) ==================== [07:20:01] [PASSED] count_args_test [07:20:01] [PASSED] call_args_example [07:20:01] [PASSED] call_args_test [07:20:01] [PASSED] drop_first_arg_example [07:20:01] [PASSED] drop_first_arg_test [07:20:01] [PASSED] first_arg_example [07:20:01] [PASSED] first_arg_test [07:20:01] [PASSED] last_arg_example [07:20:01] [PASSED] last_arg_test [07:20:01] [PASSED] pick_arg_example [07:20:01] [PASSED] if_args_example [07:20:01] [PASSED] if_args_test [07:20:01] [PASSED] sep_comma_example [07:20:01] ====================== [PASSED] args ======================= [07:20:01] =================== xe_pci (3 subtests) ==================== [07:20:01] ==================== check_graphics_ip ==================== [07:20:01] [PASSED] 12.00 Xe_LP [07:20:01] [PASSED] 12.10 Xe_LP+ [07:20:01] [PASSED] 12.55 Xe_HPG [07:20:01] [PASSED] 12.60 Xe_HPC [07:20:01] [PASSED] 12.70 Xe_LPG [07:20:01] [PASSED] 12.71 Xe_LPG [07:20:01] [PASSED] 12.74 Xe_LPG+ [07:20:01] [PASSED] 20.01 Xe2_HPG [07:20:01] [PASSED] 20.02 Xe2_HPG [07:20:01] [PASSED] 20.04 Xe2_LPG [07:20:01] [PASSED] 30.00 Xe3_LPG [07:20:01] [PASSED] 30.01 Xe3_LPG [07:20:01] [PASSED] 30.03 Xe3_LPG [07:20:01] [PASSED] 30.04 Xe3_LPG [07:20:01] [PASSED] 30.05 Xe3_LPG [07:20:01] [PASSED] 35.11 Xe3p_XPC [07:20:01] ================ [PASSED] check_graphics_ip ================ [07:20:01] ===================== check_media_ip ====================== [07:20:01] [PASSED] 12.00 Xe_M [07:20:01] [PASSED] 12.55 Xe_HPM [07:20:01] [PASSED] 13.00 Xe_LPM+ [07:20:01] [PASSED] 13.01 Xe2_HPM [07:20:01] [PASSED] 20.00 Xe2_LPM [07:20:01] [PASSED] 30.00 Xe3_LPM [07:20:01] [PASSED] 30.02 Xe3_LPM [07:20:01] [PASSED] 35.00 Xe3p_LPM [07:20:01] [PASSED] 35.03 Xe3p_HPM [07:20:01] ================= [PASSED] check_media_ip ================== [07:20:01] =================== check_platform_desc =================== [07:20:01] [PASSED] 0x9A60 (TIGERLAKE) [07:20:01] [PASSED] 0x9A68 (TIGERLAKE) [07:20:01] [PASSED] 0x9A70 (TIGERLAKE) [07:20:01] [PASSED] 0x9A40 (TIGERLAKE) [07:20:01] [PASSED] 0x9A49 (TIGERLAKE) [07:20:01] [PASSED] 0x9A59 (TIGERLAKE) [07:20:01] [PASSED] 0x9A78 (TIGERLAKE) [07:20:01] [PASSED] 0x9AC0 (TIGERLAKE) [07:20:01] [PASSED] 0x9AC9 (TIGERLAKE) [07:20:01] [PASSED] 0x9AD9 (TIGERLAKE) [07:20:01] [PASSED] 0x9AF8 (TIGERLAKE) [07:20:01] [PASSED] 0x4C80 (ROCKETLAKE) [07:20:01] [PASSED] 0x4C8A (ROCKETLAKE) [07:20:01] [PASSED] 0x4C8B (ROCKETLAKE) [07:20:01] [PASSED] 0x4C8C (ROCKETLAKE) [07:20:01] [PASSED] 0x4C90 (ROCKETLAKE) [07:20:01] [PASSED] 0x4C9A (ROCKETLAKE) [07:20:01] [PASSED] 0x4680 (ALDERLAKE_S) [07:20:01] [PASSED] 0x4682 (ALDERLAKE_S) [07:20:01] [PASSED] 0x4688 (ALDERLAKE_S) [07:20:01] [PASSED] 0x468A (ALDERLAKE_S) [07:20:01] [PASSED] 0x468B (ALDERLAKE_S) [07:20:01] [PASSED] 0x4690 (ALDERLAKE_S) [07:20:01] [PASSED] 0x4692 (ALDERLAKE_S) [07:20:01] [PASSED] 0x4693 (ALDERLAKE_S) [07:20:01] [PASSED] 0x46A0 (ALDERLAKE_P) [07:20:01] [PASSED] 0x46A1 (ALDERLAKE_P) [07:20:01] [PASSED] 0x46A2 (ALDERLAKE_P) [07:20:01] [PASSED] 0x46A3 (ALDERLAKE_P) [07:20:01] [PASSED] 0x46A6 (ALDERLAKE_P) [07:20:01] [PASSED] 0x46A8 (ALDERLAKE_P) [07:20:01] [PASSED] 0x46AA (ALDERLAKE_P) [07:20:01] [PASSED] 0x462A (ALDERLAKE_P) [07:20:01] [PASSED] 0x4626 (ALDERLAKE_P) [07:20:01] [PASSED] 0x4628 (ALDERLAKE_P) stty: 'standard input': Inappropriate ioctl for device [07:20:01] [PASSED] 0x46B0 (ALDERLAKE_P) [07:20:01] [PASSED] 0x46B1 (ALDERLAKE_P) [07:20:01] [PASSED] 0x46B2 (ALDERLAKE_P) [07:20:01] [PASSED] 0x46B3 (ALDERLAKE_P) [07:20:01] [PASSED] 0x46C0 (ALDERLAKE_P) [07:20:01] [PASSED] 0x46C1 (ALDERLAKE_P) [07:20:01] [PASSED] 0x46C2 (ALDERLAKE_P) [07:20:01] [PASSED] 0x46C3 (ALDERLAKE_P) [07:20:01] [PASSED] 0x46D0 (ALDERLAKE_N) [07:20:01] [PASSED] 0x46D1 (ALDERLAKE_N) [07:20:01] [PASSED] 0x46D2 (ALDERLAKE_N) [07:20:01] [PASSED] 0x46D3 (ALDERLAKE_N) [07:20:01] [PASSED] 0x46D4 (ALDERLAKE_N) [07:20:01] [PASSED] 0xA721 (ALDERLAKE_P) [07:20:01] [PASSED] 0xA7A1 (ALDERLAKE_P) [07:20:01] [PASSED] 0xA7A9 (ALDERLAKE_P) [07:20:01] [PASSED] 0xA7AC (ALDERLAKE_P) [07:20:01] [PASSED] 0xA7AD (ALDERLAKE_P) [07:20:01] [PASSED] 0xA720 (ALDERLAKE_P) [07:20:01] [PASSED] 0xA7A0 (ALDERLAKE_P) [07:20:01] [PASSED] 0xA7A8 (ALDERLAKE_P) [07:20:01] [PASSED] 0xA7AA (ALDERLAKE_P) [07:20:01] [PASSED] 0xA7AB (ALDERLAKE_P) [07:20:01] [PASSED] 0xA780 (ALDERLAKE_S) [07:20:01] [PASSED] 0xA781 (ALDERLAKE_S) [07:20:01] [PASSED] 0xA782 (ALDERLAKE_S) [07:20:01] [PASSED] 0xA783 (ALDERLAKE_S) [07:20:01] [PASSED] 0xA788 (ALDERLAKE_S) [07:20:01] [PASSED] 0xA789 (ALDERLAKE_S) [07:20:01] [PASSED] 0xA78A (ALDERLAKE_S) [07:20:01] [PASSED] 0xA78B (ALDERLAKE_S) [07:20:01] [PASSED] 0x4905 (DG1) [07:20:01] [PASSED] 0x4906 (DG1) [07:20:01] [PASSED] 0x4907 (DG1) [07:20:01] [PASSED] 0x4908 (DG1) [07:20:01] [PASSED] 0x4909 (DG1) [07:20:01] [PASSED] 0x56C0 (DG2) [07:20:01] [PASSED] 0x56C2 (DG2) [07:20:01] [PASSED] 0x56C1 (DG2) [07:20:01] [PASSED] 0x7D51 (METEORLAKE) [07:20:01] [PASSED] 0x7DD1 (METEORLAKE) [07:20:01] [PASSED] 0x7D41 (METEORLAKE) [07:20:01] [PASSED] 0x7D67 (METEORLAKE) [07:20:01] [PASSED] 0xB640 (METEORLAKE) [07:20:01] [PASSED] 0x56A0 (DG2) [07:20:01] [PASSED] 0x56A1 (DG2) [07:20:01] [PASSED] 0x56A2 (DG2) [07:20:01] [PASSED] 0x56BE (DG2) [07:20:01] [PASSED] 0x56BF (DG2) [07:20:01] [PASSED] 0x5690 (DG2) [07:20:01] [PASSED] 0x5691 (DG2) [07:20:01] [PASSED] 0x5692 (DG2) [07:20:01] [PASSED] 0x56A5 (DG2) [07:20:01] [PASSED] 0x56A6 (DG2) [07:20:01] [PASSED] 0x56B0 (DG2) [07:20:01] [PASSED] 0x56B1 (DG2) [07:20:01] [PASSED] 0x56BA (DG2) [07:20:01] [PASSED] 0x56BB (DG2) [07:20:01] [PASSED] 0x56BC (DG2) [07:20:01] [PASSED] 0x56BD (DG2) [07:20:01] [PASSED] 0x5693 (DG2) [07:20:01] [PASSED] 0x5694 (DG2) [07:20:01] [PASSED] 0x5695 (DG2) [07:20:01] [PASSED] 0x56A3 (DG2) [07:20:01] [PASSED] 0x56A4 (DG2) [07:20:01] [PASSED] 0x56B2 (DG2) [07:20:01] [PASSED] 0x56B3 (DG2) [07:20:01] [PASSED] 0x5696 (DG2) [07:20:01] [PASSED] 0x5697 (DG2) [07:20:01] [PASSED] 0xB69 (PVC) [07:20:01] [PASSED] 0xB6E (PVC) [07:20:01] [PASSED] 0xBD4 (PVC) [07:20:01] [PASSED] 0xBD5 (PVC) [07:20:01] [PASSED] 0xBD6 (PVC) [07:20:01] [PASSED] 0xBD7 (PVC) [07:20:01] [PASSED] 0xBD8 (PVC) [07:20:01] [PASSED] 0xBD9 (PVC) [07:20:01] [PASSED] 0xBDA (PVC) [07:20:01] [PASSED] 0xBDB (PVC) [07:20:01] [PASSED] 0xBE0 (PVC) [07:20:01] [PASSED] 0xBE1 (PVC) [07:20:01] [PASSED] 0xBE5 (PVC) [07:20:01] [PASSED] 0x7D40 (METEORLAKE) [07:20:01] [PASSED] 0x7D45 (METEORLAKE) [07:20:01] [PASSED] 0x7D55 (METEORLAKE) [07:20:01] [PASSED] 0x7D60 (METEORLAKE) [07:20:01] [PASSED] 0x7DD5 (METEORLAKE) [07:20:01] [PASSED] 0x6420 (LUNARLAKE) [07:20:01] [PASSED] 0x64A0 (LUNARLAKE) [07:20:01] [PASSED] 0x64B0 (LUNARLAKE) [07:20:01] [PASSED] 0xE202 (BATTLEMAGE) [07:20:01] [PASSED] 0xE209 (BATTLEMAGE) [07:20:01] [PASSED] 0xE20B (BATTLEMAGE) [07:20:01] [PASSED] 0xE20C (BATTLEMAGE) [07:20:01] [PASSED] 0xE20D (BATTLEMAGE) [07:20:01] [PASSED] 0xE210 (BATTLEMAGE) [07:20:01] [PASSED] 0xE211 (BATTLEMAGE) [07:20:01] [PASSED] 0xE212 (BATTLEMAGE) [07:20:01] [PASSED] 0xE216 (BATTLEMAGE) [07:20:01] [PASSED] 0xE220 (BATTLEMAGE) [07:20:01] [PASSED] 0xE221 (BATTLEMAGE) [07:20:01] [PASSED] 0xE222 (BATTLEMAGE) [07:20:01] [PASSED] 0xE223 (BATTLEMAGE) [07:20:01] [PASSED] 0xB080 (PANTHERLAKE) [07:20:01] [PASSED] 0xB081 (PANTHERLAKE) [07:20:01] [PASSED] 0xB082 (PANTHERLAKE) [07:20:01] [PASSED] 0xB083 (PANTHERLAKE) [07:20:01] [PASSED] 0xB084 (PANTHERLAKE) [07:20:01] [PASSED] 0xB085 (PANTHERLAKE) [07:20:01] [PASSED] 0xB086 (PANTHERLAKE) [07:20:01] [PASSED] 0xB087 (PANTHERLAKE) [07:20:01] [PASSED] 0xB08F (PANTHERLAKE) [07:20:01] [PASSED] 0xB090 (PANTHERLAKE) [07:20:01] [PASSED] 0xB0A0 (PANTHERLAKE) [07:20:01] [PASSED] 0xB0B0 (PANTHERLAKE) [07:20:01] [PASSED] 0xFD80 (PANTHERLAKE) [07:20:01] [PASSED] 0xFD81 (PANTHERLAKE) [07:20:01] [PASSED] 0xD740 (NOVALAKE_S) [07:20:01] [PASSED] 0xD741 (NOVALAKE_S) [07:20:01] [PASSED] 0xD742 (NOVALAKE_S) [07:20:01] [PASSED] 0xD743 (NOVALAKE_S) [07:20:01] [PASSED] 0xD744 (NOVALAKE_S) [07:20:01] [PASSED] 0xD745 (NOVALAKE_S) [07:20:01] [PASSED] 0x674C (CRESCENTISLAND) [07:20:01] =============== [PASSED] check_platform_desc =============== [07:20:01] ===================== [PASSED] xe_pci ====================== [07:20:01] =================== xe_rtp (2 subtests) ==================== [07:20:01] =============== xe_rtp_process_to_sr_tests ================ [07:20:01] [PASSED] coalesce-same-reg [07:20:01] [PASSED] no-match-no-add [07:20:01] [PASSED] match-or [07:20:01] [PASSED] match-or-xfail [07:20:01] [PASSED] no-match-no-add-multiple-rules [07:20:01] [PASSED] two-regs-two-entries [07:20:01] [PASSED] clr-one-set-other [07:20:01] [PASSED] set-field [07:20:01] [PASSED] conflict-duplicate [07:20:01] [PASSED] conflict-not-disjoint [07:20:01] [PASSED] conflict-reg-type [07:20:01] =========== [PASSED] xe_rtp_process_to_sr_tests ============ [07:20:01] ================== xe_rtp_process_tests =================== [07:20:01] [PASSED] active1 [07:20:01] [PASSED] active2 [07:20:01] [PASSED] active-inactive [07:20:01] [PASSED] inactive-active [07:20:01] [PASSED] inactive-1st_or_active-inactive [07:20:01] [PASSED] inactive-2nd_or_active-inactive [07:20:01] [PASSED] inactive-last_or_active-inactive [07:20:01] [PASSED] inactive-no_or_active-inactive [07:20:01] ============== [PASSED] xe_rtp_process_tests =============== [07:20:01] ===================== [PASSED] xe_rtp ====================== [07:20:01] ==================== xe_wa (1 subtest) ===================== [07:20:01] ======================== xe_wa_gt ========================= [07:20:01] [PASSED] TIGERLAKE B0 [07:20:01] [PASSED] DG1 A0 [07:20:01] [PASSED] DG1 B0 [07:20:01] [PASSED] ALDERLAKE_S A0 [07:20:01] [PASSED] ALDERLAKE_S B0 [07:20:01] [PASSED] ALDERLAKE_S C0 [07:20:01] [PASSED] ALDERLAKE_S D0 [07:20:01] [PASSED] ALDERLAKE_P A0 [07:20:01] [PASSED] ALDERLAKE_P B0 [07:20:01] [PASSED] ALDERLAKE_P C0 [07:20:01] [PASSED] ALDERLAKE_S RPLS D0 [07:20:01] [PASSED] ALDERLAKE_P RPLU E0 [07:20:01] [PASSED] DG2 G10 C0 [07:20:01] [PASSED] DG2 G11 B1 [07:20:01] [PASSED] DG2 G12 A1 [07:20:01] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0 [07:20:01] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0 [07:20:01] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0 [07:20:01] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0 [07:20:01] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0 [07:20:01] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1 [07:20:01] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0 [07:20:01] ==================== [PASSED] xe_wa_gt ===================== [07:20:01] ====================== [PASSED] xe_wa ====================== [07:20:01] ============================================================ [07:20:01] Testing complete. Ran 512 tests: passed: 494, skipped: 18 [07:20:01] Elapsed time: 36.176s total, 4.152s configuring, 31.558s building, 0.451s running + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig [07:20:01] Configuring KUnit Kernel ... Regenerating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [07:20:03] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48 [07:20:28] Starting KUnit Kernel (1/1)... [07:20:28] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [07:20:28] ============ drm_test_pick_cmdline (2 subtests) ============ [07:20:28] [PASSED] drm_test_pick_cmdline_res_1920_1080_60 [07:20:28] =============== drm_test_pick_cmdline_named =============== [07:20:28] [PASSED] NTSC [07:20:28] [PASSED] NTSC-J [07:20:28] [PASSED] PAL [07:20:28] [PASSED] PAL-M [07:20:28] =========== [PASSED] drm_test_pick_cmdline_named =========== [07:20:28] ============== [PASSED] drm_test_pick_cmdline ============== [07:20:28] == drm_test_atomic_get_connector_for_encoder (1 subtest) === [07:20:28] [PASSED] drm_test_drm_atomic_get_connector_for_encoder [07:20:28] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ==== [07:20:28] =========== drm_validate_clone_mode (2 subtests) =========== [07:20:28] ============== drm_test_check_in_clone_mode =============== [07:20:28] [PASSED] in_clone_mode [07:20:28] [PASSED] not_in_clone_mode [07:20:28] ========== [PASSED] drm_test_check_in_clone_mode =========== [07:20:28] =============== drm_test_check_valid_clones =============== [07:20:28] [PASSED] not_in_clone_mode [07:20:28] [PASSED] valid_clone [07:20:28] [PASSED] invalid_clone [07:20:28] =========== [PASSED] drm_test_check_valid_clones =========== [07:20:28] ============= [PASSED] drm_validate_clone_mode ============= [07:20:28] ============= drm_validate_modeset (1 subtest) ============= [07:20:28] [PASSED] drm_test_check_connector_changed_modeset [07:20:28] ============== [PASSED] drm_validate_modeset =============== [07:20:28] ====== drm_test_bridge_get_current_state (2 subtests) ====== [07:20:28] [PASSED] drm_test_drm_bridge_get_current_state_atomic [07:20:28] [PASSED] drm_test_drm_bridge_get_current_state_legacy [07:20:28] ======== [PASSED] drm_test_bridge_get_current_state ======== [07:20:28] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ====== [07:20:28] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic [07:20:28] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled [07:20:28] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy [07:20:28] ======== [PASSED] drm_test_bridge_helper_reset_crtc ======== [07:20:28] ============== drm_bridge_alloc (2 subtests) =============== [07:20:28] [PASSED] drm_test_drm_bridge_alloc_basic [07:20:28] [PASSED] drm_test_drm_bridge_alloc_get_put [07:20:28] ================ [PASSED] drm_bridge_alloc ================= [07:20:28] ================== drm_buddy (8 subtests) ================== [07:20:28] [PASSED] drm_test_buddy_alloc_limit [07:20:28] [PASSED] drm_test_buddy_alloc_optimistic [07:20:28] [PASSED] drm_test_buddy_alloc_pessimistic [07:20:28] [PASSED] drm_test_buddy_alloc_pathological [07:20:28] [PASSED] drm_test_buddy_alloc_contiguous [07:20:28] [PASSED] drm_test_buddy_alloc_clear [07:20:28] [PASSED] drm_test_buddy_alloc_range_bias [07:20:28] [PASSED] drm_test_buddy_fragmentation_performance [07:20:28] ==================== [PASSED] drm_buddy ==================== [07:20:28] ============= drm_cmdline_parser (40 subtests) ============= [07:20:28] [PASSED] drm_test_cmdline_force_d_only [07:20:28] [PASSED] drm_test_cmdline_force_D_only_dvi [07:20:28] [PASSED] drm_test_cmdline_force_D_only_hdmi [07:20:28] [PASSED] drm_test_cmdline_force_D_only_not_digital [07:20:28] [PASSED] drm_test_cmdline_force_e_only [07:20:28] [PASSED] drm_test_cmdline_res [07:20:28] [PASSED] drm_test_cmdline_res_vesa [07:20:28] [PASSED] drm_test_cmdline_res_vesa_rblank [07:20:28] [PASSED] drm_test_cmdline_res_rblank [07:20:28] [PASSED] drm_test_cmdline_res_bpp [07:20:28] [PASSED] drm_test_cmdline_res_refresh [07:20:28] [PASSED] drm_test_cmdline_res_bpp_refresh [07:20:28] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced [07:20:28] [PASSED] drm_test_cmdline_res_bpp_refresh_margins [07:20:28] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off [07:20:28] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on [07:20:28] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog [07:20:28] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital [07:20:28] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on [07:20:28] [PASSED] drm_test_cmdline_res_margins_force_on [07:20:28] [PASSED] drm_test_cmdline_res_vesa_margins [07:20:28] [PASSED] drm_test_cmdline_name [07:20:28] [PASSED] drm_test_cmdline_name_bpp [07:20:28] [PASSED] drm_test_cmdline_name_option [07:20:28] [PASSED] drm_test_cmdline_name_bpp_option [07:20:28] [PASSED] drm_test_cmdline_rotate_0 [07:20:28] [PASSED] drm_test_cmdline_rotate_90 [07:20:28] [PASSED] drm_test_cmdline_rotate_180 [07:20:28] [PASSED] drm_test_cmdline_rotate_270 [07:20:28] [PASSED] drm_test_cmdline_hmirror [07:20:28] [PASSED] drm_test_cmdline_vmirror [07:20:28] [PASSED] drm_test_cmdline_margin_options [07:20:28] [PASSED] drm_test_cmdline_multiple_options [07:20:28] [PASSED] drm_test_cmdline_bpp_extra_and_option [07:20:28] [PASSED] drm_test_cmdline_extra_and_option [07:20:28] [PASSED] drm_test_cmdline_freestanding_options [07:20:28] [PASSED] drm_test_cmdline_freestanding_force_e_and_options [07:20:28] [PASSED] drm_test_cmdline_panel_orientation [07:20:28] ================ drm_test_cmdline_invalid ================= [07:20:28] [PASSED] margin_only [07:20:28] [PASSED] interlace_only [07:20:28] [PASSED] res_missing_x [07:20:28] [PASSED] res_missing_y [07:20:28] [PASSED] res_bad_y [07:20:28] [PASSED] res_missing_y_bpp [07:20:28] [PASSED] res_bad_bpp [07:20:28] [PASSED] res_bad_refresh [07:20:28] [PASSED] res_bpp_refresh_force_on_off [07:20:28] [PASSED] res_invalid_mode [07:20:28] [PASSED] res_bpp_wrong_place_mode [07:20:28] [PASSED] name_bpp_refresh [07:20:28] [PASSED] name_refresh [07:20:28] [PASSED] name_refresh_wrong_mode [07:20:28] [PASSED] name_refresh_invalid_mode [07:20:28] [PASSED] rotate_multiple [07:20:28] [PASSED] rotate_invalid_val [07:20:28] [PASSED] rotate_truncated [07:20:28] [PASSED] invalid_option [07:20:28] [PASSED] invalid_tv_option [07:20:28] [PASSED] truncated_tv_option [07:20:28] ============ [PASSED] drm_test_cmdline_invalid ============= [07:20:28] =============== drm_test_cmdline_tv_options =============== [07:20:28] [PASSED] NTSC [07:20:28] [PASSED] NTSC_443 [07:20:28] [PASSED] NTSC_J [07:20:28] [PASSED] PAL [07:20:28] [PASSED] PAL_M [07:20:28] [PASSED] PAL_N [07:20:28] [PASSED] SECAM [07:20:28] [PASSED] MONO_525 [07:20:28] [PASSED] MONO_625 [07:20:28] =========== [PASSED] drm_test_cmdline_tv_options =========== [07:20:28] =============== [PASSED] drm_cmdline_parser ================ [07:20:28] ========== drmm_connector_hdmi_init (20 subtests) ========== [07:20:28] [PASSED] drm_test_connector_hdmi_init_valid [07:20:28] [PASSED] drm_test_connector_hdmi_init_bpc_8 [07:20:28] [PASSED] drm_test_connector_hdmi_init_bpc_10 [07:20:28] [PASSED] drm_test_connector_hdmi_init_bpc_12 [07:20:28] [PASSED] drm_test_connector_hdmi_init_bpc_invalid [07:20:28] [PASSED] drm_test_connector_hdmi_init_bpc_null [07:20:28] [PASSED] drm_test_connector_hdmi_init_formats_empty [07:20:28] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb [07:20:28] === drm_test_connector_hdmi_init_formats_yuv420_allowed === [07:20:28] [PASSED] supported_formats=0x9 yuv420_allowed=1 [07:20:28] [PASSED] supported_formats=0x9 yuv420_allowed=0 [07:20:28] [PASSED] supported_formats=0x3 yuv420_allowed=1 [07:20:28] [PASSED] supported_formats=0x3 yuv420_allowed=0 [07:20:28] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed === [07:20:28] [PASSED] drm_test_connector_hdmi_init_null_ddc [07:20:28] [PASSED] drm_test_connector_hdmi_init_null_product [07:20:28] [PASSED] drm_test_connector_hdmi_init_null_vendor [07:20:28] [PASSED] drm_test_connector_hdmi_init_product_length_exact [07:20:28] [PASSED] drm_test_connector_hdmi_init_product_length_too_long [07:20:28] [PASSED] drm_test_connector_hdmi_init_product_valid [07:20:28] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact [07:20:28] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long [07:20:28] [PASSED] drm_test_connector_hdmi_init_vendor_valid [07:20:28] ========= drm_test_connector_hdmi_init_type_valid ========= [07:20:28] [PASSED] HDMI-A [07:20:28] [PASSED] HDMI-B [07:20:28] ===== [PASSED] drm_test_connector_hdmi_init_type_valid ===== [07:20:28] ======== drm_test_connector_hdmi_init_type_invalid ======== [07:20:28] [PASSED] Unknown [07:20:28] [PASSED] VGA [07:20:28] [PASSED] DVI-I [07:20:28] [PASSED] DVI-D [07:20:28] [PASSED] DVI-A [07:20:28] [PASSED] Composite [07:20:28] [PASSED] SVIDEO [07:20:28] [PASSED] LVDS [07:20:28] [PASSED] Component [07:20:28] [PASSED] DIN [07:20:28] [PASSED] DP [07:20:28] [PASSED] TV [07:20:28] [PASSED] eDP [07:20:28] [PASSED] Virtual [07:20:28] [PASSED] DSI [07:20:28] [PASSED] DPI [07:20:28] [PASSED] Writeback [07:20:28] [PASSED] SPI [07:20:28] [PASSED] USB [07:20:28] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ==== [07:20:28] ============ [PASSED] drmm_connector_hdmi_init ============= [07:20:28] ============= drmm_connector_init (3 subtests) ============= [07:20:28] [PASSED] drm_test_drmm_connector_init [07:20:28] [PASSED] drm_test_drmm_connector_init_null_ddc [07:20:28] ========= drm_test_drmm_connector_init_type_valid ========= [07:20:28] [PASSED] Unknown [07:20:28] [PASSED] VGA [07:20:28] [PASSED] DVI-I [07:20:28] [PASSED] DVI-D [07:20:28] [PASSED] DVI-A [07:20:28] [PASSED] Composite [07:20:28] [PASSED] SVIDEO [07:20:28] [PASSED] LVDS [07:20:28] [PASSED] Component [07:20:28] [PASSED] DIN [07:20:28] [PASSED] DP [07:20:28] [PASSED] HDMI-A [07:20:28] [PASSED] HDMI-B [07:20:28] [PASSED] TV [07:20:28] [PASSED] eDP [07:20:28] [PASSED] Virtual [07:20:28] [PASSED] DSI [07:20:28] [PASSED] DPI [07:20:28] [PASSED] Writeback [07:20:28] [PASSED] SPI [07:20:28] [PASSED] USB [07:20:28] ===== [PASSED] drm_test_drmm_connector_init_type_valid ===== [07:20:28] =============== [PASSED] drmm_connector_init =============== [07:20:28] ========= drm_connector_dynamic_init (6 subtests) ========== [07:20:28] [PASSED] drm_test_drm_connector_dynamic_init [07:20:28] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc [07:20:28] [PASSED] drm_test_drm_connector_dynamic_init_not_added [07:20:28] [PASSED] drm_test_drm_connector_dynamic_init_properties [07:20:28] ===== drm_test_drm_connector_dynamic_init_type_valid ====== [07:20:28] [PASSED] Unknown [07:20:28] [PASSED] VGA [07:20:28] [PASSED] DVI-I [07:20:28] [PASSED] DVI-D [07:20:28] [PASSED] DVI-A [07:20:28] [PASSED] Composite [07:20:28] [PASSED] SVIDEO [07:20:28] [PASSED] LVDS [07:20:28] [PASSED] Component [07:20:28] [PASSED] DIN [07:20:28] [PASSED] DP [07:20:28] [PASSED] HDMI-A [07:20:28] [PASSED] HDMI-B [07:20:28] [PASSED] TV [07:20:28] [PASSED] eDP [07:20:28] [PASSED] Virtual [07:20:28] [PASSED] DSI [07:20:28] [PASSED] DPI [07:20:28] [PASSED] Writeback [07:20:28] [PASSED] SPI [07:20:28] [PASSED] USB [07:20:28] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid == [07:20:28] ======== drm_test_drm_connector_dynamic_init_name ========= [07:20:28] [PASSED] Unknown [07:20:28] [PASSED] VGA [07:20:28] [PASSED] DVI-I [07:20:28] [PASSED] DVI-D [07:20:28] [PASSED] DVI-A [07:20:28] [PASSED] Composite [07:20:28] [PASSED] SVIDEO [07:20:28] [PASSED] LVDS [07:20:28] [PASSED] Component [07:20:28] [PASSED] DIN [07:20:28] [PASSED] DP [07:20:28] [PASSED] HDMI-A [07:20:28] [PASSED] HDMI-B [07:20:28] [PASSED] TV [07:20:28] [PASSED] eDP [07:20:28] [PASSED] Virtual [07:20:28] [PASSED] DSI [07:20:28] [PASSED] DPI [07:20:28] [PASSED] Writeback [07:20:28] [PASSED] SPI [07:20:28] [PASSED] USB [07:20:28] ==== [PASSED] drm_test_drm_connector_dynamic_init_name ===== [07:20:28] =========== [PASSED] drm_connector_dynamic_init ============ [07:20:28] ==== drm_connector_dynamic_register_early (4 subtests) ===== [07:20:28] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list [07:20:28] [PASSED] drm_test_drm_connector_dynamic_register_early_defer [07:20:28] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init [07:20:28] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object [07:20:28] ====== [PASSED] drm_connector_dynamic_register_early ======= [07:20:28] ======= drm_connector_dynamic_register (7 subtests) ======== [07:20:28] [PASSED] drm_test_drm_connector_dynamic_register_on_list [07:20:28] [PASSED] drm_test_drm_connector_dynamic_register_no_defer [07:20:28] [PASSED] drm_test_drm_connector_dynamic_register_no_init [07:20:28] [PASSED] drm_test_drm_connector_dynamic_register_mode_object [07:20:28] [PASSED] drm_test_drm_connector_dynamic_register_sysfs [07:20:28] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name [07:20:28] [PASSED] drm_test_drm_connector_dynamic_register_debugfs [07:20:28] ========= [PASSED] drm_connector_dynamic_register ========== [07:20:28] = drm_connector_attach_broadcast_rgb_property (2 subtests) = [07:20:28] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property [07:20:28] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector [07:20:28] === [PASSED] drm_connector_attach_broadcast_rgb_property === [07:20:28] ========== drm_get_tv_mode_from_name (2 subtests) ========== [07:20:28] ========== drm_test_get_tv_mode_from_name_valid =========== [07:20:28] [PASSED] NTSC [07:20:28] [PASSED] NTSC-443 [07:20:28] [PASSED] NTSC-J [07:20:28] [PASSED] PAL [07:20:28] [PASSED] PAL-M [07:20:28] [PASSED] PAL-N [07:20:28] [PASSED] SECAM [07:20:28] [PASSED] Mono [07:20:28] ====== [PASSED] drm_test_get_tv_mode_from_name_valid ======= [07:20:28] [PASSED] drm_test_get_tv_mode_from_name_truncated [07:20:28] ============ [PASSED] drm_get_tv_mode_from_name ============ [07:20:28] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) = [07:20:28] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb [07:20:28] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc [07:20:28] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1 [07:20:28] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc [07:20:28] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1 [07:20:28] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double [07:20:28] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid = [07:20:28] [PASSED] VIC 96 [07:20:28] [PASSED] VIC 97 [07:20:28] [PASSED] VIC 101 [07:20:28] [PASSED] VIC 102 [07:20:28] [PASSED] VIC 106 [07:20:28] [PASSED] VIC 107 [07:20:28] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid === [07:20:28] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc [07:20:28] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc [07:20:28] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc [07:20:28] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc [07:20:28] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc [07:20:28] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ==== [07:20:28] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) == [07:20:28] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ==== [07:20:28] [PASSED] Automatic [07:20:28] [PASSED] Full [07:20:28] [PASSED] Limited 16:235 [07:20:28] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name === [07:20:28] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid [07:20:28] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ==== [07:20:28] == drm_hdmi_connector_get_output_format_name (2 subtests) == [07:20:28] === drm_test_drm_hdmi_connector_get_output_format_name ==== [07:20:28] [PASSED] RGB [07:20:28] [PASSED] YUV 4:2:0 [07:20:28] [PASSED] YUV 4:2:2 [07:20:28] [PASSED] YUV 4:4:4 [07:20:28] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name === [07:20:28] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid [07:20:28] ==== [PASSED] drm_hdmi_connector_get_output_format_name ==== [07:20:28] ============= drm_damage_helper (21 subtests) ============== [07:20:28] [PASSED] drm_test_damage_iter_no_damage [07:20:28] [PASSED] drm_test_damage_iter_no_damage_fractional_src [07:20:28] [PASSED] drm_test_damage_iter_no_damage_src_moved [07:20:28] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved [07:20:28] [PASSED] drm_test_damage_iter_no_damage_not_visible [07:20:28] [PASSED] drm_test_damage_iter_no_damage_no_crtc [07:20:28] [PASSED] drm_test_damage_iter_no_damage_no_fb [07:20:28] [PASSED] drm_test_damage_iter_simple_damage [07:20:28] [PASSED] drm_test_damage_iter_single_damage [07:20:28] [PASSED] drm_test_damage_iter_single_damage_intersect_src [07:20:28] [PASSED] drm_test_damage_iter_single_damage_outside_src [07:20:28] [PASSED] drm_test_damage_iter_single_damage_fractional_src [07:20:28] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src [07:20:28] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src [07:20:28] [PASSED] drm_test_damage_iter_single_damage_src_moved [07:20:28] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved [07:20:28] [PASSED] drm_test_damage_iter_damage [07:20:28] [PASSED] drm_test_damage_iter_damage_one_intersect [07:20:28] [PASSED] drm_test_damage_iter_damage_one_outside [07:20:28] [PASSED] drm_test_damage_iter_damage_src_moved [07:20:28] [PASSED] drm_test_damage_iter_damage_not_visible [07:20:28] ================ [PASSED] drm_damage_helper ================ [07:20:28] ============== drm_dp_mst_helper (3 subtests) ============== [07:20:28] ============== drm_test_dp_mst_calc_pbn_mode ============== [07:20:28] [PASSED] Clock 154000 BPP 30 DSC disabled [07:20:28] [PASSED] Clock 234000 BPP 30 DSC disabled [07:20:28] [PASSED] Clock 297000 BPP 24 DSC disabled [07:20:28] [PASSED] Clock 332880 BPP 24 DSC enabled [07:20:28] [PASSED] Clock 324540 BPP 24 DSC enabled [07:20:28] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ========== [07:20:28] ============== drm_test_dp_mst_calc_pbn_div =============== [07:20:28] [PASSED] Link rate 2000000 lane count 4 [07:20:28] [PASSED] Link rate 2000000 lane count 2 [07:20:28] [PASSED] Link rate 2000000 lane count 1 [07:20:28] [PASSED] Link rate 1350000 lane count 4 [07:20:28] [PASSED] Link rate 1350000 lane count 2 [07:20:28] [PASSED] Link rate 1350000 lane count 1 [07:20:28] [PASSED] Link rate 1000000 lane count 4 [07:20:28] [PASSED] Link rate 1000000 lane count 2 [07:20:28] [PASSED] Link rate 1000000 lane count 1 [07:20:28] [PASSED] Link rate 810000 lane count 4 [07:20:28] [PASSED] Link rate 810000 lane count 2 [07:20:28] [PASSED] Link rate 810000 lane count 1 [07:20:28] [PASSED] Link rate 540000 lane count 4 [07:20:28] [PASSED] Link rate 540000 lane count 2 [07:20:28] [PASSED] Link rate 540000 lane count 1 [07:20:28] [PASSED] Link rate 270000 lane count 4 [07:20:28] [PASSED] Link rate 270000 lane count 2 [07:20:28] [PASSED] Link rate 270000 lane count 1 [07:20:28] [PASSED] Link rate 162000 lane count 4 [07:20:28] [PASSED] Link rate 162000 lane count 2 [07:20:28] [PASSED] Link rate 162000 lane count 1 [07:20:28] ========== [PASSED] drm_test_dp_mst_calc_pbn_div =========== [07:20:28] ========= drm_test_dp_mst_sideband_msg_req_decode ========= [07:20:28] [PASSED] DP_ENUM_PATH_RESOURCES with port number [07:20:28] [PASSED] DP_POWER_UP_PHY with port number [07:20:28] [PASSED] DP_POWER_DOWN_PHY with port number [07:20:28] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks [07:20:28] [PASSED] DP_ALLOCATE_PAYLOAD with port number [07:20:28] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI [07:20:28] [PASSED] DP_ALLOCATE_PAYLOAD with PBN [07:20:28] [PASSED] DP_QUERY_PAYLOAD with port number [07:20:28] [PASSED] DP_QUERY_PAYLOAD with VCPI [07:20:28] [PASSED] DP_REMOTE_DPCD_READ with port number [07:20:28] [PASSED] DP_REMOTE_DPCD_READ with DPCD address [07:20:28] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes [07:20:28] [PASSED] DP_REMOTE_DPCD_WRITE with port number [07:20:28] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address [07:20:28] [PASSED] DP_REMOTE_DPCD_WRITE with data array [07:20:28] [PASSED] DP_REMOTE_I2C_READ with port number [07:20:28] [PASSED] DP_REMOTE_I2C_READ with I2C device ID [07:20:28] [PASSED] DP_REMOTE_I2C_READ with transactions array [07:20:28] [PASSED] DP_REMOTE_I2C_WRITE with port number [07:20:28] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID [07:20:28] [PASSED] DP_REMOTE_I2C_WRITE with data array [07:20:28] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID [07:20:28] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID [07:20:28] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event [07:20:28] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event [07:20:28] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior [07:20:28] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior [07:20:28] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode ===== [07:20:28] ================ [PASSED] drm_dp_mst_helper ================ [07:20:28] ================== drm_exec (7 subtests) =================== [07:20:28] [PASSED] sanitycheck [07:20:28] [PASSED] test_lock [07:20:28] [PASSED] test_lock_unlock [07:20:28] [PASSED] test_duplicates [07:20:28] [PASSED] test_prepare [07:20:28] [PASSED] test_prepare_array [07:20:28] [PASSED] test_multiple_loops [07:20:28] ==================== [PASSED] drm_exec ===================== [07:20:28] =========== drm_format_helper_test (17 subtests) =========== [07:20:28] ============== drm_test_fb_xrgb8888_to_gray8 ============== [07:20:28] [PASSED] single_pixel_source_buffer [07:20:28] [PASSED] single_pixel_clip_rectangle [07:20:28] [PASSED] well_known_colors [07:20:28] [PASSED] destination_pitch [07:20:28] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ========== [07:20:28] ============= drm_test_fb_xrgb8888_to_rgb332 ============== [07:20:28] [PASSED] single_pixel_source_buffer [07:20:28] [PASSED] single_pixel_clip_rectangle [07:20:28] [PASSED] well_known_colors [07:20:28] [PASSED] destination_pitch [07:20:28] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ========== [07:20:28] ============= drm_test_fb_xrgb8888_to_rgb565 ============== [07:20:28] [PASSED] single_pixel_source_buffer [07:20:28] [PASSED] single_pixel_clip_rectangle [07:20:28] [PASSED] well_known_colors [07:20:28] [PASSED] destination_pitch [07:20:28] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ========== [07:20:28] ============ drm_test_fb_xrgb8888_to_xrgb1555 ============= [07:20:28] [PASSED] single_pixel_source_buffer [07:20:28] [PASSED] single_pixel_clip_rectangle [07:20:28] [PASSED] well_known_colors [07:20:28] [PASSED] destination_pitch [07:20:28] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 ========= [07:20:28] ============ drm_test_fb_xrgb8888_to_argb1555 ============= [07:20:28] [PASSED] single_pixel_source_buffer [07:20:28] [PASSED] single_pixel_clip_rectangle [07:20:28] [PASSED] well_known_colors [07:20:28] [PASSED] destination_pitch [07:20:28] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 ========= [07:20:28] ============ drm_test_fb_xrgb8888_to_rgba5551 ============= [07:20:28] [PASSED] single_pixel_source_buffer [07:20:28] [PASSED] single_pixel_clip_rectangle [07:20:28] [PASSED] well_known_colors [07:20:28] [PASSED] destination_pitch [07:20:28] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 ========= [07:20:28] ============= drm_test_fb_xrgb8888_to_rgb888 ============== [07:20:28] [PASSED] single_pixel_source_buffer [07:20:28] [PASSED] single_pixel_clip_rectangle [07:20:28] [PASSED] well_known_colors [07:20:28] [PASSED] destination_pitch [07:20:28] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ========== [07:20:28] ============= drm_test_fb_xrgb8888_to_bgr888 ============== [07:20:28] [PASSED] single_pixel_source_buffer [07:20:28] [PASSED] single_pixel_clip_rectangle [07:20:28] [PASSED] well_known_colors [07:20:28] [PASSED] destination_pitch [07:20:28] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ========== [07:20:28] ============ drm_test_fb_xrgb8888_to_argb8888 ============= [07:20:28] [PASSED] single_pixel_source_buffer [07:20:28] [PASSED] single_pixel_clip_rectangle [07:20:28] [PASSED] well_known_colors [07:20:28] [PASSED] destination_pitch [07:20:28] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 ========= [07:20:28] =========== drm_test_fb_xrgb8888_to_xrgb2101010 =========== [07:20:28] [PASSED] single_pixel_source_buffer [07:20:28] [PASSED] single_pixel_clip_rectangle [07:20:28] [PASSED] well_known_colors [07:20:28] [PASSED] destination_pitch [07:20:28] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 ======= [07:20:28] =========== drm_test_fb_xrgb8888_to_argb2101010 =========== [07:20:28] [PASSED] single_pixel_source_buffer [07:20:28] [PASSED] single_pixel_clip_rectangle [07:20:28] [PASSED] well_known_colors [07:20:28] [PASSED] destination_pitch [07:20:28] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 ======= [07:20:28] ============== drm_test_fb_xrgb8888_to_mono =============== [07:20:28] [PASSED] single_pixel_source_buffer [07:20:28] [PASSED] single_pixel_clip_rectangle [07:20:28] [PASSED] well_known_colors [07:20:28] [PASSED] destination_pitch [07:20:28] ========== [PASSED] drm_test_fb_xrgb8888_to_mono =========== [07:20:28] ==================== drm_test_fb_swab ===================== [07:20:28] [PASSED] single_pixel_source_buffer [07:20:28] [PASSED] single_pixel_clip_rectangle [07:20:28] [PASSED] well_known_colors [07:20:28] [PASSED] destination_pitch [07:20:28] ================ [PASSED] drm_test_fb_swab ================= [07:20:28] ============ drm_test_fb_xrgb8888_to_xbgr8888 ============= [07:20:28] [PASSED] single_pixel_source_buffer [07:20:28] [PASSED] single_pixel_clip_rectangle [07:20:28] [PASSED] well_known_colors [07:20:28] [PASSED] destination_pitch [07:20:28] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 ========= [07:20:28] ============ drm_test_fb_xrgb8888_to_abgr8888 ============= [07:20:28] [PASSED] single_pixel_source_buffer [07:20:28] [PASSED] single_pixel_clip_rectangle [07:20:28] [PASSED] well_known_colors [07:20:28] [PASSED] destination_pitch [07:20:28] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 ========= [07:20:28] ================= drm_test_fb_clip_offset ================= [07:20:28] [PASSED] pass through [07:20:28] [PASSED] horizontal offset [07:20:28] [PASSED] vertical offset [07:20:28] [PASSED] horizontal and vertical offset [07:20:28] [PASSED] horizontal offset (custom pitch) [07:20:28] [PASSED] vertical offset (custom pitch) [07:20:28] [PASSED] horizontal and vertical offset (custom pitch) [07:20:28] ============= [PASSED] drm_test_fb_clip_offset ============= [07:20:28] =================== drm_test_fb_memcpy ==================== [07:20:28] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258) [07:20:28] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258) [07:20:28] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559) [07:20:28] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258) [07:20:28] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258) [07:20:28] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559) [07:20:28] [PASSED] well_known_colors: XB24 little-endian (0x34324258) [07:20:28] [PASSED] well_known_colors: XRA8 little-endian (0x38415258) [07:20:28] [PASSED] well_known_colors: YU24 little-endian (0x34325559) [07:20:28] [PASSED] destination_pitch: XB24 little-endian (0x34324258) [07:20:28] [PASSED] destination_pitch: XRA8 little-endian (0x38415258) [07:20:28] [PASSED] destination_pitch: YU24 little-endian (0x34325559) [07:20:28] =============== [PASSED] drm_test_fb_memcpy ================ [07:20:28] ============= [PASSED] drm_format_helper_test ============== [07:20:28] ================= drm_format (18 subtests) ================= [07:20:28] [PASSED] drm_test_format_block_width_invalid [07:20:28] [PASSED] drm_test_format_block_width_one_plane [07:20:28] [PASSED] drm_test_format_block_width_two_plane [07:20:28] [PASSED] drm_test_format_block_width_three_plane [07:20:28] [PASSED] drm_test_format_block_width_tiled [07:20:28] [PASSED] drm_test_format_block_height_invalid [07:20:28] [PASSED] drm_test_format_block_height_one_plane [07:20:28] [PASSED] drm_test_format_block_height_two_plane [07:20:28] [PASSED] drm_test_format_block_height_three_plane [07:20:28] [PASSED] drm_test_format_block_height_tiled [07:20:28] [PASSED] drm_test_format_min_pitch_invalid [07:20:28] [PASSED] drm_test_format_min_pitch_one_plane_8bpp [07:20:28] [PASSED] drm_test_format_min_pitch_one_plane_16bpp [07:20:28] [PASSED] drm_test_format_min_pitch_one_plane_24bpp [07:20:28] [PASSED] drm_test_format_min_pitch_one_plane_32bpp [07:20:28] [PASSED] drm_test_format_min_pitch_two_plane [07:20:28] [PASSED] drm_test_format_min_pitch_three_plane_8bpp [07:20:28] [PASSED] drm_test_format_min_pitch_tiled [07:20:28] =================== [PASSED] drm_format ==================== [07:20:28] ============== drm_framebuffer (10 subtests) =============== [07:20:28] ========== drm_test_framebuffer_check_src_coords ========== [07:20:28] [PASSED] Success: source fits into fb [07:20:28] [PASSED] Fail: overflowing fb with x-axis coordinate [07:20:28] [PASSED] Fail: overflowing fb with y-axis coordinate [07:20:28] [PASSED] Fail: overflowing fb with source width [07:20:28] [PASSED] Fail: overflowing fb with source height [07:20:28] ====== [PASSED] drm_test_framebuffer_check_src_coords ====== [07:20:28] [PASSED] drm_test_framebuffer_cleanup [07:20:28] =============== drm_test_framebuffer_create =============== [07:20:28] [PASSED] ABGR8888 normal sizes [07:20:28] [PASSED] ABGR8888 max sizes [07:20:28] [PASSED] ABGR8888 pitch greater than min required [07:20:28] [PASSED] ABGR8888 pitch less than min required [07:20:28] [PASSED] ABGR8888 Invalid width [07:20:28] [PASSED] ABGR8888 Invalid buffer handle [07:20:28] [PASSED] No pixel format [07:20:28] [PASSED] ABGR8888 Width 0 [07:20:28] [PASSED] ABGR8888 Height 0 [07:20:28] [PASSED] ABGR8888 Out of bound height * pitch combination [07:20:28] [PASSED] ABGR8888 Large buffer offset [07:20:28] [PASSED] ABGR8888 Buffer offset for inexistent plane [07:20:28] [PASSED] ABGR8888 Invalid flag [07:20:28] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers [07:20:28] [PASSED] ABGR8888 Valid buffer modifier [07:20:28] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE) [07:20:28] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS [07:20:28] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS [07:20:28] [PASSED] NV12 Normal sizes [07:20:28] [PASSED] NV12 Max sizes [07:20:28] [PASSED] NV12 Invalid pitch [07:20:28] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag [07:20:28] [PASSED] NV12 different modifier per-plane [07:20:28] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE [07:20:28] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS [07:20:28] [PASSED] NV12 Modifier for inexistent plane [07:20:28] [PASSED] NV12 Handle for inexistent plane [07:20:28] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS [07:20:28] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier [07:20:28] [PASSED] YVU420 Normal sizes [07:20:28] [PASSED] YVU420 Max sizes [07:20:28] [PASSED] YVU420 Invalid pitch [07:20:28] [PASSED] YVU420 Different pitches [07:20:28] [PASSED] YVU420 Different buffer offsets/pitches [07:20:28] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS [07:20:28] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS [07:20:28] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS [07:20:28] [PASSED] YVU420 Valid modifier [07:20:28] [PASSED] YVU420 Different modifiers per plane [07:20:28] [PASSED] YVU420 Modifier for inexistent plane [07:20:28] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR) [07:20:28] [PASSED] X0L2 Normal sizes [07:20:28] [PASSED] X0L2 Max sizes [07:20:28] [PASSED] X0L2 Invalid pitch [07:20:28] [PASSED] X0L2 Pitch greater than minimum required [07:20:28] [PASSED] X0L2 Handle for inexistent plane [07:20:28] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set [07:20:28] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set [07:20:28] [PASSED] X0L2 Valid modifier [07:20:28] [PASSED] X0L2 Modifier for inexistent plane [07:20:28] =========== [PASSED] drm_test_framebuffer_create =========== [07:20:28] [PASSED] drm_test_framebuffer_free [07:20:28] [PASSED] drm_test_framebuffer_init [07:20:28] [PASSED] drm_test_framebuffer_init_bad_format [07:20:28] [PASSED] drm_test_framebuffer_init_dev_mismatch [07:20:28] [PASSED] drm_test_framebuffer_lookup [07:20:28] [PASSED] drm_test_framebuffer_lookup_inexistent [07:20:28] [PASSED] drm_test_framebuffer_modifiers_not_supported [07:20:28] ================= [PASSED] drm_framebuffer ================= [07:20:28] ================ drm_gem_shmem (8 subtests) ================ [07:20:28] [PASSED] drm_gem_shmem_test_obj_create [07:20:28] [PASSED] drm_gem_shmem_test_obj_create_private [07:20:28] [PASSED] drm_gem_shmem_test_pin_pages [07:20:28] [PASSED] drm_gem_shmem_test_vmap [07:20:28] [PASSED] drm_gem_shmem_test_get_pages_sgt [07:20:28] [PASSED] drm_gem_shmem_test_get_sg_table [07:20:28] [PASSED] drm_gem_shmem_test_madvise [07:20:28] [PASSED] drm_gem_shmem_test_purge [07:20:28] ================== [PASSED] drm_gem_shmem ================== [07:20:28] === drm_atomic_helper_connector_hdmi_check (27 subtests) === [07:20:28] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode [07:20:28] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1 [07:20:28] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode [07:20:28] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1 [07:20:28] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode [07:20:28] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1 [07:20:28] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 ======= [07:20:28] [PASSED] Automatic [07:20:28] [PASSED] Full [07:20:28] [PASSED] Limited 16:235 [07:20:28] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 === [07:20:28] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed [07:20:28] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed [07:20:28] [PASSED] drm_test_check_disable_connector [07:20:28] [PASSED] drm_test_check_hdmi_funcs_reject_rate [07:20:28] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb [07:20:28] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420 [07:20:28] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422 [07:20:28] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420 [07:20:28] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420 [07:20:28] [PASSED] drm_test_check_output_bpc_crtc_mode_changed [07:20:28] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed [07:20:28] [PASSED] drm_test_check_output_bpc_dvi [07:20:28] [PASSED] drm_test_check_output_bpc_format_vic_1 [07:20:28] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only [07:20:28] [PASSED] drm_test_check_output_bpc_format_display_rgb_only [07:20:28] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only [07:20:28] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only [07:20:28] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc [07:20:28] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc [07:20:28] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc [07:20:28] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ====== [07:20:28] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ==== [07:20:28] [PASSED] drm_test_check_broadcast_rgb_value [07:20:28] [PASSED] drm_test_check_bpc_8_value [07:20:28] [PASSED] drm_test_check_bpc_10_value [07:20:28] [PASSED] drm_test_check_bpc_12_value [07:20:28] [PASSED] drm_test_check_format_value [07:20:28] [PASSED] drm_test_check_tmds_char_value [07:20:28] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ====== [07:20:28] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) = [07:20:28] [PASSED] drm_test_check_mode_valid [07:20:28] [PASSED] drm_test_check_mode_valid_reject [07:20:28] [PASSED] drm_test_check_mode_valid_reject_rate [07:20:28] [PASSED] drm_test_check_mode_valid_reject_max_clock [07:20:28] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid === [07:20:28] ================= drm_managed (2 subtests) ================= [07:20:28] [PASSED] drm_test_managed_release_action [07:20:28] [PASSED] drm_test_managed_run_action [07:20:28] =================== [PASSED] drm_managed =================== [07:20:28] =================== drm_mm (6 subtests) ==================== [07:20:28] [PASSED] drm_test_mm_init [07:20:28] [PASSED] drm_test_mm_debug [07:20:28] [PASSED] drm_test_mm_align32 [07:20:28] [PASSED] drm_test_mm_align64 [07:20:28] [PASSED] drm_test_mm_lowest [07:20:28] [PASSED] drm_test_mm_highest [07:20:28] ===================== [PASSED] drm_mm ====================== [07:20:28] ============= drm_modes_analog_tv (5 subtests) ============= [07:20:28] [PASSED] drm_test_modes_analog_tv_mono_576i [07:20:28] [PASSED] drm_test_modes_analog_tv_ntsc_480i [07:20:28] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined [07:20:28] [PASSED] drm_test_modes_analog_tv_pal_576i [07:20:28] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined [07:20:28] =============== [PASSED] drm_modes_analog_tv =============== [07:20:28] ============== drm_plane_helper (2 subtests) =============== [07:20:28] =============== drm_test_check_plane_state ================ [07:20:28] [PASSED] clipping_simple [07:20:28] [PASSED] clipping_rotate_reflect [07:20:28] [PASSED] positioning_simple [07:20:28] [PASSED] upscaling [07:20:28] [PASSED] downscaling [07:20:28] [PASSED] rounding1 [07:20:28] [PASSED] rounding2 [07:20:28] [PASSED] rounding3 [07:20:28] [PASSED] rounding4 [07:20:28] =========== [PASSED] drm_test_check_plane_state ============ [07:20:28] =========== drm_test_check_invalid_plane_state ============ [07:20:28] [PASSED] positioning_invalid [07:20:28] [PASSED] upscaling_invalid [07:20:28] [PASSED] downscaling_invalid [07:20:28] ======= [PASSED] drm_test_check_invalid_plane_state ======== [07:20:28] ================ [PASSED] drm_plane_helper ================= [07:20:28] ====== drm_connector_helper_tv_get_modes (1 subtest) ======= [07:20:28] ====== drm_test_connector_helper_tv_get_modes_check ======= [07:20:28] [PASSED] None [07:20:28] [PASSED] PAL [07:20:28] [PASSED] NTSC [07:20:28] [PASSED] Both, NTSC Default [07:20:28] [PASSED] Both, PAL Default [07:20:28] [PASSED] Both, NTSC Default, with PAL on command-line [07:20:28] [PASSED] Both, PAL Default, with NTSC on command-line [07:20:28] == [PASSED] drm_test_connector_helper_tv_get_modes_check === [07:20:28] ======== [PASSED] drm_connector_helper_tv_get_modes ======== [07:20:28] ================== drm_rect (9 subtests) =================== [07:20:28] [PASSED] drm_test_rect_clip_scaled_div_by_zero [07:20:28] [PASSED] drm_test_rect_clip_scaled_not_clipped [07:20:28] [PASSED] drm_test_rect_clip_scaled_clipped [07:20:28] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned [07:20:28] ================= drm_test_rect_intersect ================= [07:20:28] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0 [07:20:28] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1 [07:20:28] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0 [07:20:28] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1 [07:20:28] [PASSED] right x left: 2x1+0+0 x 3x1+1+0 [07:20:28] [PASSED] left x right: 3x1+1+0 x 2x1+0+0 [07:20:28] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1 [07:20:28] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0 [07:20:28] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1 [07:20:28] [PASSED] touching side: 1x1+0+0 x 1x1+1+0 [07:20:28] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0 [07:20:28] [PASSED] inside another: 2x2+0+0 x 1x1+1+1 [07:20:28] [PASSED] far away: 1x1+0+0 x 1x1+3+6 [07:20:28] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10 [07:20:28] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10 [07:20:28] ============= [PASSED] drm_test_rect_intersect ============= [07:20:28] ================ drm_test_rect_calc_hscale ================ [07:20:28] [PASSED] normal use [07:20:28] [PASSED] out of max range [07:20:28] [PASSED] out of min range [07:20:28] [PASSED] zero dst [07:20:28] [PASSED] negative src [07:20:28] [PASSED] negative dst [07:20:28] ============ [PASSED] drm_test_rect_calc_hscale ============ [07:20:28] ================ drm_test_rect_calc_vscale ================ [07:20:28] [PASSED] normal use stty: 'standard input': Inappropriate ioctl for device [07:20:28] [PASSED] out of max range [07:20:28] [PASSED] out of min range [07:20:28] [PASSED] zero dst [07:20:28] [PASSED] negative src [07:20:28] [PASSED] negative dst [07:20:28] ============ [PASSED] drm_test_rect_calc_vscale ============ [07:20:28] ================== drm_test_rect_rotate =================== [07:20:28] [PASSED] reflect-x [07:20:28] [PASSED] reflect-y [07:20:28] [PASSED] rotate-0 [07:20:28] [PASSED] rotate-90 [07:20:28] [PASSED] rotate-180 [07:20:28] [PASSED] rotate-270 [07:20:28] ============== [PASSED] drm_test_rect_rotate =============== [07:20:28] ================ drm_test_rect_rotate_inv ================= [07:20:28] [PASSED] reflect-x [07:20:28] [PASSED] reflect-y [07:20:28] [PASSED] rotate-0 [07:20:28] [PASSED] rotate-90 [07:20:28] [PASSED] rotate-180 [07:20:28] [PASSED] rotate-270 [07:20:28] ============ [PASSED] drm_test_rect_rotate_inv ============= [07:20:28] ==================== [PASSED] drm_rect ===================== [07:20:28] ============ drm_sysfb_modeset_test (1 subtest) ============ [07:20:28] ============ drm_test_sysfb_build_fourcc_list ============= [07:20:28] [PASSED] no native formats [07:20:28] [PASSED] XRGB8888 as native format [07:20:28] [PASSED] remove duplicates [07:20:28] [PASSED] convert alpha formats [07:20:28] [PASSED] random formats [07:20:28] ======== [PASSED] drm_test_sysfb_build_fourcc_list ========= [07:20:28] ============= [PASSED] drm_sysfb_modeset_test ============== [07:20:28] ================== drm_fixp (2 subtests) =================== [07:20:28] [PASSED] drm_test_int2fixp [07:20:28] [PASSED] drm_test_sm2fixp [07:20:28] ==================== [PASSED] drm_fixp ===================== [07:20:28] ============================================================ [07:20:28] Testing complete. Ran 624 tests: passed: 624 [07:20:28] Elapsed time: 27.400s total, 1.639s configuring, 25.340s building, 0.383s running + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig [07:20:29] Configuring KUnit Kernel ... Regenerating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [07:20:30] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48 [07:20:40] Starting KUnit Kernel (1/1)... [07:20:40] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [07:20:40] ================= ttm_device (5 subtests) ================== [07:20:40] [PASSED] ttm_device_init_basic [07:20:40] [PASSED] ttm_device_init_multiple [07:20:40] [PASSED] ttm_device_fini_basic [07:20:40] [PASSED] ttm_device_init_no_vma_man [07:20:40] ================== ttm_device_init_pools ================== [07:20:40] [PASSED] No DMA allocations, no DMA32 required [07:20:40] [PASSED] DMA allocations, DMA32 required [07:20:40] [PASSED] No DMA allocations, DMA32 required [07:20:40] [PASSED] DMA allocations, no DMA32 required [07:20:40] ============== [PASSED] ttm_device_init_pools ============== [07:20:40] =================== [PASSED] ttm_device ==================== [07:20:40] ================== ttm_pool (8 subtests) =================== [07:20:40] ================== ttm_pool_alloc_basic =================== [07:20:40] [PASSED] One page [07:20:40] [PASSED] More than one page [07:20:40] [PASSED] Above the allocation limit [07:20:40] [PASSED] One page, with coherent DMA mappings enabled [07:20:40] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [07:20:40] ============== [PASSED] ttm_pool_alloc_basic =============== [07:20:40] ============== ttm_pool_alloc_basic_dma_addr ============== [07:20:40] [PASSED] One page [07:20:40] [PASSED] More than one page [07:20:40] [PASSED] Above the allocation limit [07:20:40] [PASSED] One page, with coherent DMA mappings enabled [07:20:40] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [07:20:40] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ========== [07:20:40] [PASSED] ttm_pool_alloc_order_caching_match [07:20:40] [PASSED] ttm_pool_alloc_caching_mismatch [07:20:40] [PASSED] ttm_pool_alloc_order_mismatch [07:20:40] [PASSED] ttm_pool_free_dma_alloc [07:20:40] [PASSED] ttm_pool_free_no_dma_alloc [07:20:40] [PASSED] ttm_pool_fini_basic [07:20:40] ==================== [PASSED] ttm_pool ===================== [07:20:40] ================ ttm_resource (8 subtests) ================= [07:20:40] ================= ttm_resource_init_basic ================= [07:20:40] [PASSED] Init resource in TTM_PL_SYSTEM [07:20:40] [PASSED] Init resource in TTM_PL_VRAM [07:20:40] [PASSED] Init resource in a private placement [07:20:40] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags [07:20:40] ============= [PASSED] ttm_resource_init_basic ============= [07:20:40] [PASSED] ttm_resource_init_pinned [07:20:40] [PASSED] ttm_resource_fini_basic [07:20:40] [PASSED] ttm_resource_manager_init_basic [07:20:40] [PASSED] ttm_resource_manager_usage_basic [07:20:40] [PASSED] ttm_resource_manager_set_used_basic [07:20:40] [PASSED] ttm_sys_man_alloc_basic [07:20:40] [PASSED] ttm_sys_man_free_basic [07:20:40] ================== [PASSED] ttm_resource =================== [07:20:40] =================== ttm_tt (15 subtests) =================== [07:20:40] ==================== ttm_tt_init_basic ==================== [07:20:40] [PASSED] Page-aligned size [07:20:40] [PASSED] Extra pages requested [07:20:40] ================ [PASSED] ttm_tt_init_basic ================ [07:20:40] [PASSED] ttm_tt_init_misaligned [07:20:40] [PASSED] ttm_tt_fini_basic [07:20:40] [PASSED] ttm_tt_fini_sg [07:20:40] [PASSED] ttm_tt_fini_shmem [07:20:40] [PASSED] ttm_tt_create_basic [07:20:40] [PASSED] ttm_tt_create_invalid_bo_type [07:20:40] [PASSED] ttm_tt_create_ttm_exists [07:20:40] [PASSED] ttm_tt_create_failed [07:20:40] [PASSED] ttm_tt_destroy_basic [07:20:40] [PASSED] ttm_tt_populate_null_ttm [07:20:40] [PASSED] ttm_tt_populate_populated_ttm [07:20:40] [PASSED] ttm_tt_unpopulate_basic [07:20:40] [PASSED] ttm_tt_unpopulate_empty_ttm [07:20:40] [PASSED] ttm_tt_swapin_basic [07:20:40] ===================== [PASSED] ttm_tt ====================== [07:20:40] =================== ttm_bo (14 subtests) =================== [07:20:40] =========== ttm_bo_reserve_optimistic_no_ticket =========== [07:20:40] [PASSED] Cannot be interrupted and sleeps [07:20:40] [PASSED] Cannot be interrupted, locks straight away [07:20:40] [PASSED] Can be interrupted, sleeps [07:20:40] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket ======= [07:20:40] [PASSED] ttm_bo_reserve_locked_no_sleep [07:20:40] [PASSED] ttm_bo_reserve_no_wait_ticket [07:20:40] [PASSED] ttm_bo_reserve_double_resv [07:20:40] [PASSED] ttm_bo_reserve_interrupted [07:20:40] [PASSED] ttm_bo_reserve_deadlock [07:20:40] [PASSED] ttm_bo_unreserve_basic [07:20:40] [PASSED] ttm_bo_unreserve_pinned [07:20:40] [PASSED] ttm_bo_unreserve_bulk [07:20:40] [PASSED] ttm_bo_fini_basic [07:20:40] [PASSED] ttm_bo_fini_shared_resv [07:20:40] [PASSED] ttm_bo_pin_basic [07:20:40] [PASSED] ttm_bo_pin_unpin_resource [07:20:40] [PASSED] ttm_bo_multiple_pin_one_unpin [07:20:40] ===================== [PASSED] ttm_bo ====================== [07:20:40] ============== ttm_bo_validate (21 subtests) =============== [07:20:40] ============== ttm_bo_init_reserved_sys_man =============== [07:20:40] [PASSED] Buffer object for userspace [07:20:40] [PASSED] Kernel buffer object [07:20:40] [PASSED] Shared buffer object [07:20:40] ========== [PASSED] ttm_bo_init_reserved_sys_man =========== [07:20:40] ============== ttm_bo_init_reserved_mock_man ============== [07:20:40] [PASSED] Buffer object for userspace [07:20:40] [PASSED] Kernel buffer object [07:20:40] [PASSED] Shared buffer object [07:20:40] ========== [PASSED] ttm_bo_init_reserved_mock_man ========== [07:20:40] [PASSED] ttm_bo_init_reserved_resv [07:20:40] ================== ttm_bo_validate_basic ================== [07:20:40] [PASSED] Buffer object for userspace [07:20:40] [PASSED] Kernel buffer object [07:20:40] [PASSED] Shared buffer object [07:20:40] ============== [PASSED] ttm_bo_validate_basic ============== [07:20:40] [PASSED] ttm_bo_validate_invalid_placement [07:20:40] ============= ttm_bo_validate_same_placement ============== [07:20:40] [PASSED] System manager [07:20:40] [PASSED] VRAM manager [07:20:40] ========= [PASSED] ttm_bo_validate_same_placement ========== [07:20:40] [PASSED] ttm_bo_validate_failed_alloc [07:20:40] [PASSED] ttm_bo_validate_pinned [07:20:40] [PASSED] ttm_bo_validate_busy_placement [07:20:40] ================ ttm_bo_validate_multihop ================= [07:20:40] [PASSED] Buffer object for userspace [07:20:40] [PASSED] Kernel buffer object [07:20:40] [PASSED] Shared buffer object [07:20:40] ============ [PASSED] ttm_bo_validate_multihop ============= [07:20:40] ========== ttm_bo_validate_no_placement_signaled ========== [07:20:40] [PASSED] Buffer object in system domain, no page vector [07:20:40] [PASSED] Buffer object in system domain with an existing page vector [07:20:40] ====== [PASSED] ttm_bo_validate_no_placement_signaled ====== [07:20:40] ======== ttm_bo_validate_no_placement_not_signaled ======== [07:20:40] [PASSED] Buffer object for userspace [07:20:40] [PASSED] Kernel buffer object [07:20:40] [PASSED] Shared buffer object [07:20:40] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ==== [07:20:40] [PASSED] ttm_bo_validate_move_fence_signaled [07:20:40] ========= ttm_bo_validate_move_fence_not_signaled ========= [07:20:40] [PASSED] Waits for GPU [07:20:40] [PASSED] Tries to lock straight away [07:20:40] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled ===== [07:20:40] [PASSED] ttm_bo_validate_happy_evict [07:20:40] [PASSED] ttm_bo_validate_all_pinned_evict [07:20:40] [PASSED] ttm_bo_validate_allowed_only_evict [07:20:40] [PASSED] ttm_bo_validate_deleted_evict [07:20:40] [PASSED] ttm_bo_validate_busy_domain_evict [07:20:40] [PASSED] ttm_bo_validate_evict_gutting [07:20:40] [PASSED] ttm_bo_validate_recrusive_evict stty: 'standard input': Inappropriate ioctl for device [07:20:40] ================= [PASSED] ttm_bo_validate ================= [07:20:40] ============================================================ [07:20:40] Testing complete. Ran 101 tests: passed: 101 [07:20:40] Elapsed time: 11.192s total, 1.638s configuring, 9.338s building, 0.180s running + cleanup ++ stat -c %u:%g /kernel + chown -R 1003:1003 /kernel ^ permalink raw reply [flat|nested] 51+ messages in thread
* ✗ CI.checksparse: warning for drm: Color pipeline teardown and follow-up fixes/improvements 2025-12-19 6:56 [PATCH 00/13] drm: Color pipeline teardown and follow-up fixes/improvements Chaitanya Kumar Borah ` (14 preceding siblings ...) 2025-12-19 7:20 ` ✓ CI.KUnit: success " Patchwork @ 2025-12-19 7:35 ` Patchwork 2025-12-19 8:19 ` ✓ Xe.CI.BAT: success " Patchwork 2025-12-20 9:29 ` ✗ Xe.CI.Full: failure " Patchwork 17 siblings, 0 replies; 51+ messages in thread From: Patchwork @ 2025-12-19 7:35 UTC (permalink / raw) To: Chaitanya Kumar Borah; +Cc: intel-xe == Series Details == Series: drm: Color pipeline teardown and follow-up fixes/improvements URL : https://patchwork.freedesktop.org/series/159263/ State : warning == Summary == + trap cleanup EXIT + KERNEL=/kernel + MT=/root/linux/maintainer-tools + git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools Cloning into '/root/linux/maintainer-tools'... warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/ + make -C /root/linux/maintainer-tools make: Entering directory '/root/linux/maintainer-tools' cc -O2 -g -Wextra -o remap-log remap-log.c make: Leaving directory '/root/linux/maintainer-tools' + cd /kernel + git config --global --add safe.directory /kernel + /root/linux/maintainer-tools/dim sparse --fast 515e6667d13b3a1ea3192f275982df95854ac89b Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3) Fast mode used, each commit won't be checked separately. +drivers/gpu/drm/display/drm_dp_helper.c:1979:1: error: bad constant expression +drivers/gpu/drm/display/drm_dp_helper.c:1980:1: error: bad constant expression +drivers/gpu/drm/display/drm_dp_helper.c:2144:1: error: bad constant expression +drivers/gpu/drm/display/drm_dp_helper.c:2145:1: error: bad constant expression +drivers/gpu/drm/drm_bridge.c:1604:1: error: bad constant expression +drivers/gpu/drm/drm_bridge.c:1605:1: error: bad constant expression +drivers/gpu/drm/drm_bridge.c:1606:1: error: bad constant expression +drivers/gpu/drm/drm_bridge.c:1606:1: error: bad constant expression +drivers/gpu/drm/drm_drv.c:60:1: error: bad constant expression +drivers/gpu/drm/drm_drv.c:61:1: error: bad constant expression +drivers/gpu/drm/drm_drv.c:62:1: error: bad constant expression +drivers/gpu/drm/drm_drv.c:62:1: error: bad constant expression +drivers/gpu/drm/drm_probe_helper.c:68:1: error: bad constant expression +drivers/gpu/drm/drm_simple_kms_helper.c:457:1: error: bad constant expression +drivers/gpu/drm/drm_simple_kms_helper.c:458:1: error: bad constant expression +drivers/gpu/drm/drm_simple_kms_helper.c:458:1: error: bad constant expression +drivers/gpu/drm/i915/display/dvo_ch7017.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/dvo_ch7xxx.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/dvo_ivch.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/dvo_ns2501.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/dvo_sil164.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/dvo_tfp410.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/g4x_dp.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/g4x_hdmi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/hsw_ips.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/i9xx_plane.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/i9xx_wm.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h): +drivers/gpu/drm/i915/display/icl_dsi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_dsi.h): +drivers/gpu/drm/i915/display/intel_acpi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_alpm.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_atomic.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_audio.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_backlight.c: note: in included file: +drivers/gpu/drm/i915/display/intel_bios.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_bw.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_casf.c:147:21: error: too long token expansion +drivers/gpu/drm/i915/display/intel_casf.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_cdclk.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_color.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_colorop.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_colorop.h): +drivers/gpu/drm/i915/display/intel_combo_phy.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_connector.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_crtc.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h): +drivers/gpu/drm/i915/display/intel_crt.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_crtc_state_dump.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_cursor.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_cx0_phy.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_dbuf_bw.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_ddi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_display.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_display_debugfs.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_display_device.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_display_driver.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_display_irq.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h): +drivers/gpu/drm/i915/display/intel_display_power.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_display_power_map.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_display_power_well.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_display_reset.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_display_rps.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_dmc.c:131:1: error: bad constant expression +drivers/gpu/drm/i915/display/intel_dmc.c:134:1: error: bad constant expression +drivers/gpu/drm/i915/display/intel_dmc.c:137:1: error: bad constant expression +drivers/gpu/drm/i915/display/intel_dmc.c:140:1: error: bad constant expression +drivers/gpu/drm/i915/display/intel_dmc.c:143:1: error: bad constant expression +drivers/gpu/drm/i915/display/intel_dmc.c:146:1: error: bad constant expression +drivers/gpu/drm/i915/display/intel_dmc.c:149:1: error: bad constant expression +drivers/gpu/drm/i915/display/intel_dmc.c:153:1: error: bad constant expression +drivers/gpu/drm/i915/display/intel_dmc.c:154:1: error: bad constant expression +drivers/gpu/drm/i915/display/intel_dmc.c:157:1: error: bad constant expression +drivers/gpu/drm/i915/display/intel_dmc.c:160:1: error: bad constant expression +drivers/gpu/drm/i915/display/intel_dmc.c:163:1: error: bad constant expression +drivers/gpu/drm/i915/display/intel_dmc.c:166:1: error: bad constant expression +drivers/gpu/drm/i915/display/intel_dmc.c:170:1: error: bad constant expression +drivers/gpu/drm/i915/display/intel_dmc.c:174:1: error: bad constant expression +drivers/gpu/drm/i915/display/intel_dmc.c:178:1: error: bad constant expression +drivers/gpu/drm/i915/display/intel_dmc.c:182:1: error: bad constant expression +drivers/gpu/drm/i915/display/intel_dmc.c:186:1: error: bad constant expression +drivers/gpu/drm/i915/display/intel_dmc.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_dp_aux.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_dp.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_dp_hdcp.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_dpio_phy.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_dp_link_training.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_dpll.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_dpll_mgr.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_dp_mst.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_dpt.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_dpt_common.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_dp_test.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_drrs.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_dsb.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_dsi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_dsi.h): +drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_dsi_vbt.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_dvo.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_encoder.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_fb_bo.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_fbc.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h): +drivers/gpu/drm/i915/display/intel_fb.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_fb_pin.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_fdi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_fifo_underrun.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h): +drivers/gpu/drm/i915/display/intel_flipq.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_frontbuffer.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h): +drivers/gpu/drm/i915/display/intel_global_state.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_gmbus.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_hdcp.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_hdmi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_hotplug.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_hotplug_irq.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_link_bw.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_load_detect.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_lspcon.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_lt_phy.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_lvds.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_modeset_lock.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_modeset_setup.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_modeset_verify.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_opregion.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_overlay.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_panel.c: note: in included file: +drivers/gpu/drm/i915/display/intel_pch_display.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_pch_refclk.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_pfit.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_pipe_crc.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_plane.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_colorop.h): +drivers/gpu/drm/i915/display/intel_plane_initial.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_pmdemand.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h): +drivers/gpu/drm/i915/display/intel_pps.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_psr.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_quirks.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_sdvo.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_snps_hdmi_pll.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_snps_phy.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_sprite.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_sprite_uapi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_tc.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_tv.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_vblank.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_vdsc.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_vga.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_vrr.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/intel_wm.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/skl_prefill.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/skl_scaler.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h): +drivers/gpu/drm/i915/display/skl_universal_plane.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/skl_watermark.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/vlv_clock.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/vlv_dsi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/vlv_dsi_pll.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/display/vlv_sideband.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/gem/i915_gem_pages.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/i915/i915_panic.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h): +drivers/gpu/drm/virtio/virtgpu_drv.c:217:1: error: bad constant expression +drivers/gpu/drm/virtio/virtgpu_drv.c:218:1: error: bad constant expression +drivers/gpu/drm/virtio/virtgpu_drv.c:218:1: error: bad constant expression +drivers/gpu/drm/virtio/virtgpu_drv.c:219:1: error: bad constant expression +drivers/gpu/drm/virtio/virtgpu_drv.c:220:1: error: bad constant expression +drivers/gpu/drm/virtio/virtgpu_drv.c:221:1: error: bad constant expression +drivers/gpu/drm/virtio/virtgpu_drv.c:52:1: error: bad constant expression +drivers/gpu/drm/virtio/virtgpu_drv.c:53:1: error: bad constant expression +drivers/gpu/drm/virtio/virtgpu_object.c:34:1: error: bad constant expression +drivers/gpu/drm/virtio/virtgpu_prime.c:30:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression +./include/linux/pwm.h:13:1: error: bad constant expression + cleanup ++ stat -c %u:%g /kernel + chown -R 1003:1003 /kernel ^ permalink raw reply [flat|nested] 51+ messages in thread
* ✓ Xe.CI.BAT: success for drm: Color pipeline teardown and follow-up fixes/improvements 2025-12-19 6:56 [PATCH 00/13] drm: Color pipeline teardown and follow-up fixes/improvements Chaitanya Kumar Borah ` (15 preceding siblings ...) 2025-12-19 7:35 ` ✗ CI.checksparse: warning " Patchwork @ 2025-12-19 8:19 ` Patchwork 2025-12-20 9:29 ` ✗ Xe.CI.Full: failure " Patchwork 17 siblings, 0 replies; 51+ messages in thread From: Patchwork @ 2025-12-19 8:19 UTC (permalink / raw) To: Chaitanya Kumar Borah; +Cc: intel-xe [-- Attachment #1: Type: text/plain, Size: 1958 bytes --] == Series Details == Series: drm: Color pipeline teardown and follow-up fixes/improvements URL : https://patchwork.freedesktop.org/series/159263/ State : success == Summary == CI Bug Log - changes from xe-4272-93db616df689a410d961e7c614c57e61d17a29a0_BAT -> xe-pw-159263v1_BAT ==================================================== Summary ------- **SUCCESS** No regressions found. Participating hosts (12 -> 12) ------------------------------ No changes in participating hosts Known issues ------------ Here are the changes found in xe-pw-159263v1_BAT that come from known issues: ### IGT changes ### #### Issues hit #### * igt@xe_module_load@load: - bat-bmg-1: [PASS][1] -> [ABORT][2] ([Intel XE#6818]) [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/bat-bmg-1/igt@xe_module_load@load.html [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/bat-bmg-1/igt@xe_module_load@load.html #### Possible fixes #### * igt@xe_waitfence@engine: - bat-dg2-oem2: [FAIL][3] ([Intel XE#6519]) -> [PASS][4] [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/bat-dg2-oem2/igt@xe_waitfence@engine.html [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/bat-dg2-oem2/igt@xe_waitfence@engine.html [Intel XE#6519]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6519 [Intel XE#6818]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6818 Build changes ------------- * Linux: xe-4272-93db616df689a410d961e7c614c57e61d17a29a0 -> xe-pw-159263v1 IGT_8674: f38f4d8e9c65aff45ac807e646d06e38bc3193a2 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git xe-4272-93db616df689a410d961e7c614c57e61d17a29a0: 93db616df689a410d961e7c614c57e61d17a29a0 xe-pw-159263v1: 159263v1 == Logs == For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/index.html [-- Attachment #2: Type: text/html, Size: 2545 bytes --] ^ permalink raw reply [flat|nested] 51+ messages in thread
* ✗ Xe.CI.Full: failure for drm: Color pipeline teardown and follow-up fixes/improvements 2025-12-19 6:56 [PATCH 00/13] drm: Color pipeline teardown and follow-up fixes/improvements Chaitanya Kumar Borah ` (16 preceding siblings ...) 2025-12-19 8:19 ` ✓ Xe.CI.BAT: success " Patchwork @ 2025-12-20 9:29 ` Patchwork 17 siblings, 0 replies; 51+ messages in thread From: Patchwork @ 2025-12-20 9:29 UTC (permalink / raw) To: Borah, Chaitanya Kumar; +Cc: intel-xe [-- Attachment #1: Type: text/plain, Size: 65791 bytes --] == Series Details == Series: drm: Color pipeline teardown and follow-up fixes/improvements URL : https://patchwork.freedesktop.org/series/159263/ State : failure == Summary == CI Bug Log - changes from xe-4272-93db616df689a410d961e7c614c57e61d17a29a0_FULL -> xe-pw-159263v1_FULL ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with xe-pw-159263v1_FULL absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in xe-pw-159263v1_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them to document this new failure mode, which will reduce false positives in CI. Participating hosts (2 -> 2) ------------------------------ No changes in participating hosts Possible new issues ------------------- Here are the unknown changes that may have been introduced in xe-pw-159263v1_FULL: ### IGT changes ### #### Possible regressions #### * igt@kms_vblank@ts-continuation-dpms-rpm: - shard-lnl: [PASS][1] -> [SKIP][2] +3 other tests skip [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-lnl-1/igt@kms_vblank@ts-continuation-dpms-rpm.html [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-lnl-7/igt@kms_vblank@ts-continuation-dpms-rpm.html * igt@xe_fault_injection@vm-bind-fail-vm_bind_ioctl_ops_execute: - shard-bmg: [PASS][3] -> [ABORT][4] [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-9/igt@xe_fault_injection@vm-bind-fail-vm_bind_ioctl_ops_execute.html [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@xe_fault_injection@vm-bind-fail-vm_bind_ioctl_ops_execute.html Known issues ------------ Here are the changes found in xe-pw-159263v1_FULL that come from known issues: ### IGT changes ### #### Issues hit #### * igt@core_getversion@basic: - shard-bmg: [PASS][5] -> [FAIL][6] ([Intel XE#6914]) +1 other test fail [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-9/igt@core_getversion@basic.html [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@core_getversion@basic.html * igt@core_hotunplug@hotunplug-rescan: - shard-bmg: [PASS][7] -> [SKIP][8] ([Intel XE#6779]) [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-3/igt@core_hotunplug@hotunplug-rescan.html [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@core_hotunplug@hotunplug-rescan.html * igt@fbdev@write: - shard-bmg: [PASS][9] -> [SKIP][10] ([Intel XE#2134]) [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-9/igt@fbdev@write.html [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@fbdev@write.html * igt@kms_flip@2x-flip-vs-wf_vblank: - shard-bmg: [PASS][11] -> [SKIP][12] ([Intel XE#2316]) [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-2/igt@kms_flip@2x-flip-vs-wf_vblank.html [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_flip@2x-flip-vs-wf_vblank.html * igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1: - shard-lnl: [PASS][13] -> [FAIL][14] ([Intel XE#301]) +2 other tests fail [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-lnl-2/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html * igt@kms_flip@wf_vblank-ts-check: - shard-bmg: [PASS][15] -> [SKIP][16] ([Intel XE#6703]) +328 other tests skip [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_flip@wf_vblank-ts-check.html [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_flip@wf_vblank-ts-check.html * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling@pipe-a-valid-mode: - shard-bmg: NOTRUN -> [SKIP][17] ([Intel XE#2293]) +3 other tests skip [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling@pipe-a-valid-mode.html * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-wc: - shard-bmg: NOTRUN -> [SKIP][18] ([Intel XE#4141]) [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-10/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscreen-pri-indfb-draw-mmap-wc: - shard-bmg: NOTRUN -> [SKIP][19] ([Intel XE#2311]) [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-10/igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscreen-pri-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-wc: - shard-bmg: NOTRUN -> [SKIP][20] ([Intel XE#2313]) [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-10/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-wc.html * igt@kms_hdr@invalid-metadata-sizes@pipe-a-dp-2: - shard-bmg: NOTRUN -> [ABORT][21] ([Intel XE#6740]) [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-9/igt@kms_hdr@invalid-metadata-sizes@pipe-a-dp-2.html * igt@kms_hdr@static-swap: - shard-bmg: [PASS][22] -> [ABORT][23] ([Intel XE#6740]) +2 other tests abort [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-8/igt@kms_hdr@static-swap.html [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-9/igt@kms_hdr@static-swap.html * igt@kms_plane_multiple@2x-tiling-none: - shard-bmg: [PASS][24] -> [SKIP][25] ([Intel XE#4596]) [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-2/igt@kms_plane_multiple@2x-tiling-none.html [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_plane_multiple@2x-tiling-none.html * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75@pipe-a: - shard-bmg: NOTRUN -> [SKIP][26] ([Intel XE#6886]) +3 other tests skip [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75@pipe-a.html * igt@kms_psr@pr-sprite-plane-onoff: - shard-bmg: NOTRUN -> [SKIP][27] ([Intel XE#1406] / [Intel XE#6703]) +4 other tests skip [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_psr@pr-sprite-plane-onoff.html * igt@xe_exec_compute_mode@twice-basic: - shard-bmg: [PASS][28] -> [SKIP][29] ([Intel XE#6557] / [Intel XE#6703]) +2 other tests skip [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@xe_exec_compute_mode@twice-basic.html [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@xe_exec_compute_mode@twice-basic.html * igt@xe_exec_multi_queue@few-execs-close-fd-smem: - shard-bmg: NOTRUN -> [SKIP][30] ([Intel XE#6874]) [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-10/igt@xe_exec_multi_queue@few-execs-close-fd-smem.html * igt@xe_exec_sip_eudebug@breakpoint-waitsip-heavy: - shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#4837]) [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-10/igt@xe_exec_sip_eudebug@breakpoint-waitsip-heavy.html * igt@xe_module_load@reload-no-display: - shard-bmg: [PASS][32] -> [FAIL][33] ([Intel XE#6913]) [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@xe_module_load@reload-no-display.html [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@xe_module_load@reload-no-display.html * igt@xe_pm@s3-exec-after: - shard-bmg: NOTRUN -> [SKIP][34] ([Intel XE#6703]) +157 other tests skip [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@xe_pm@s3-exec-after.html * igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_render0: - shard-lnl: [PASS][35] -> [FAIL][36] ([Intel XE#6251]) +3 other tests fail [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-lnl-5/igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_render0.html [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-lnl-4/igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_render0.html #### Possible fixes #### * igt@core_hotunplug@hotreplug-lateclose: - shard-bmg: [SKIP][37] ([Intel XE#6779]) -> [PASS][38] [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@core_hotunplug@hotreplug-lateclose.html [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@core_hotunplug@hotreplug-lateclose.html * igt@device_reset@unbind-reset-rebind: - shard-bmg: [SKIP][39] ([Intel XE#6815]) -> [PASS][40] [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@device_reset@unbind-reset-rebind.html [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@device_reset@unbind-reset-rebind.html * igt@fbdev@nullptr: - shard-bmg: [SKIP][41] ([Intel XE#2134]) -> [PASS][42] +1 other test pass [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@fbdev@nullptr.html [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@fbdev@nullptr.html * igt@fbdev@read: - shard-bmg: [FAIL][43] -> [PASS][44] [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-2/igt@fbdev@read.html [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@fbdev@read.html * igt@kms_addfb_basic@unused-handle: - shard-bmg: [SKIP][45] ([Intel XE#6703]) -> [PASS][46] +521 other tests pass [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_addfb_basic@unused-handle.html [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@kms_addfb_basic@unused-handle.html * igt@kms_cursor_legacy@cursorb-vs-flipb-toggle: - shard-bmg: [SKIP][47] ([Intel XE#2291]) -> [PASS][48] [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_cursor_legacy@cursorb-vs-flipb-toggle.html [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-8/igt@kms_cursor_legacy@cursorb-vs-flipb-toggle.html * igt@kms_cursor_legacy@flip-vs-cursor-legacy: - shard-bmg: [FAIL][49] ([Intel XE#5299]) -> [PASS][50] [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-2/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-7/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html * igt@kms_flip@2x-modeset-vs-vblank-race-interruptible: - shard-bmg: [SKIP][51] ([Intel XE#2316]) -> [PASS][52] +1 other test pass [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_flip@2x-modeset-vs-vblank-race-interruptible.html [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-8/igt@kms_flip@2x-modeset-vs-vblank-race-interruptible.html * igt@kms_flip@flip-vs-expired-vblank@b-edp1: - shard-lnl: [FAIL][53] ([Intel XE#301]) -> [PASS][54] [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html * igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait: - shard-bmg: [SKIP][55] ([Intel XE#6693]) -> [PASS][56] +2 other tests pass [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html * igt@xe_exec_system_allocator@threads-many-execqueues-new-nomemset: - shard-bmg: [SKIP][57] ([Intel XE#6557] / [Intel XE#6703]) -> [PASS][58] +6 other tests pass [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@xe_exec_system_allocator@threads-many-execqueues-new-nomemset.html [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-3/igt@xe_exec_system_allocator@threads-many-execqueues-new-nomemset.html #### Warnings #### * igt@kms_big_fb@4-tiled-64bpp-rotate-90: - shard-bmg: [SKIP][59] ([Intel XE#2327]) -> [SKIP][60] ([Intel XE#6703]) +1 other test skip [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_big_fb@4-tiled-64bpp-rotate-90.html [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_big_fb@4-tiled-64bpp-rotate-90.html * igt@kms_big_fb@x-tiled-32bpp-rotate-90: - shard-bmg: [SKIP][61] ([Intel XE#6703]) -> [SKIP][62] ([Intel XE#2327]) +3 other tests skip [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_big_fb@x-tiled-32bpp-rotate-90.html [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_big_fb@x-tiled-32bpp-rotate-90.html * igt@kms_big_fb@yf-tiled-32bpp-rotate-0: - shard-bmg: [SKIP][63] ([Intel XE#6703]) -> [SKIP][64] ([Intel XE#1124]) +10 other tests skip [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_big_fb@yf-tiled-32bpp-rotate-0.html [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-3/igt@kms_big_fb@yf-tiled-32bpp-rotate-0.html * igt@kms_big_fb@yf-tiled-8bpp-rotate-90: - shard-bmg: [SKIP][65] ([Intel XE#1124]) -> [SKIP][66] ([Intel XE#6703]) +4 other tests skip [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-3/igt@kms_big_fb@yf-tiled-8bpp-rotate-90.html [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_big_fb@yf-tiled-8bpp-rotate-90.html * igt@kms_bw@connected-linear-tiling-2-displays-1920x1080p: - shard-bmg: [SKIP][67] ([Intel XE#2314] / [Intel XE#2894]) -> [SKIP][68] ([Intel XE#6703]) [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_bw@connected-linear-tiling-2-displays-1920x1080p.html [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_bw@connected-linear-tiling-2-displays-1920x1080p.html * igt@kms_bw@connected-linear-tiling-3-displays-3840x2160p: - shard-bmg: [SKIP][69] ([Intel XE#6703]) -> [SKIP][70] ([Intel XE#2314] / [Intel XE#2894]) +1 other test skip [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_bw@connected-linear-tiling-3-displays-3840x2160p.html [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-3/igt@kms_bw@connected-linear-tiling-3-displays-3840x2160p.html * igt@kms_bw@linear-tiling-1-displays-2160x1440p: - shard-bmg: [SKIP][71] ([Intel XE#6703]) -> [SKIP][72] ([Intel XE#367]) +1 other test skip [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_bw@linear-tiling-1-displays-2160x1440p.html [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@kms_bw@linear-tiling-1-displays-2160x1440p.html * igt@kms_bw@linear-tiling-4-displays-1920x1080p: - shard-bmg: [SKIP][73] ([Intel XE#367]) -> [SKIP][74] ([Intel XE#6703]) +1 other test skip [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_bw@linear-tiling-4-displays-1920x1080p.html [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_bw@linear-tiling-4-displays-1920x1080p.html * igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs: - shard-bmg: [SKIP][75] ([Intel XE#2887]) -> [SKIP][76] ([Intel XE#6557] / [Intel XE#6703]) [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs.html [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs.html * igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs-cc: - shard-bmg: [SKIP][77] ([Intel XE#6703]) -> [SKIP][78] ([Intel XE#2887]) +12 other tests skip [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs-cc.html [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs-cc.html * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs: - shard-bmg: [SKIP][79] ([Intel XE#2652] / [Intel XE#787]) -> [SKIP][80] ([Intel XE#6703]) [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs.html [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs.html * igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-rc-ccs: - shard-bmg: [SKIP][81] ([Intel XE#2887]) -> [SKIP][82] ([Intel XE#6703]) +9 other tests skip [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-9/igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-rc-ccs.html [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-rc-ccs.html * igt@kms_cdclk@plane-scaling: - shard-bmg: [SKIP][83] ([Intel XE#6703]) -> [SKIP][84] ([Intel XE#2724]) [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_cdclk@plane-scaling.html [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@kms_cdclk@plane-scaling.html * igt@kms_chamelium_color@ctm-green-to-red: - shard-bmg: [SKIP][85] ([Intel XE#6703]) -> [SKIP][86] ([Intel XE#2325]) [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_chamelium_color@ctm-green-to-red.html [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-3/igt@kms_chamelium_color@ctm-green-to-red.html * igt@kms_chamelium_hpd@dp-hpd-storm: - shard-bmg: [SKIP][87] ([Intel XE#6703]) -> [SKIP][88] ([Intel XE#2252]) +4 other tests skip [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_chamelium_hpd@dp-hpd-storm.html [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-3/igt@kms_chamelium_hpd@dp-hpd-storm.html * igt@kms_chamelium_hpd@hdmi-hpd-storm-disable: - shard-bmg: [SKIP][89] ([Intel XE#2252]) -> [SKIP][90] ([Intel XE#6703]) +6 other tests skip [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_chamelium_hpd@hdmi-hpd-storm-disable.html [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_chamelium_hpd@hdmi-hpd-storm-disable.html * igt@kms_content_protection@content-type-change: - shard-bmg: [SKIP][91] ([Intel XE#2341]) -> [SKIP][92] ([Intel XE#6703]) +1 other test skip [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-9/igt@kms_content_protection@content-type-change.html [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_content_protection@content-type-change.html * igt@kms_content_protection@dp-mst-type-0: - shard-bmg: [SKIP][93] ([Intel XE#6703]) -> [SKIP][94] ([Intel XE#2390]) [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_content_protection@dp-mst-type-0.html [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@kms_content_protection@dp-mst-type-0.html * igt@kms_content_protection@mei-interface: - shard-bmg: [SKIP][95] ([Intel XE#6703]) -> [SKIP][96] ([Intel XE#2341]) [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_content_protection@mei-interface.html [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_content_protection@mei-interface.html * igt@kms_cursor_crc@cursor-onscreen-512x512: - shard-bmg: [SKIP][97] ([Intel XE#2321]) -> [SKIP][98] ([Intel XE#6703]) [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_cursor_crc@cursor-onscreen-512x512.html [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_cursor_crc@cursor-onscreen-512x512.html * igt@kms_cursor_crc@cursor-onscreen-max-size: - shard-bmg: [SKIP][99] ([Intel XE#6703]) -> [SKIP][100] ([Intel XE#2320]) +4 other tests skip [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_cursor_crc@cursor-onscreen-max-size.html [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@kms_cursor_crc@cursor-onscreen-max-size.html * igt@kms_cursor_crc@cursor-random-512x512: - shard-bmg: [SKIP][101] ([Intel XE#6703]) -> [SKIP][102] ([Intel XE#2321]) [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_cursor_crc@cursor-random-512x512.html [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_cursor_crc@cursor-random-512x512.html * igt@kms_cursor_crc@cursor-rapid-movement-256x85: - shard-bmg: [SKIP][103] ([Intel XE#6557] / [Intel XE#6703]) -> [SKIP][104] ([Intel XE#2320]) [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_cursor_crc@cursor-rapid-movement-256x85.html [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@kms_cursor_crc@cursor-rapid-movement-256x85.html * igt@kms_cursor_crc@cursor-rapid-movement-64x21: - shard-bmg: [SKIP][105] ([Intel XE#2320]) -> [SKIP][106] ([Intel XE#6703]) [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-9/igt@kms_cursor_crc@cursor-rapid-movement-64x21.html [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_cursor_crc@cursor-rapid-movement-64x21.html * igt@kms_cursor_legacy@cursora-vs-flipb-atomic: - shard-bmg: [SKIP][107] ([Intel XE#2291]) -> [SKIP][108] ([Intel XE#6703]) +1 other test skip [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_cursor_legacy@cursora-vs-flipb-atomic.html [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_cursor_legacy@cursora-vs-flipb-atomic.html * igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions: - shard-bmg: [SKIP][109] ([Intel XE#6703]) -> [SKIP][110] ([Intel XE#2291]) +2 other tests skip [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-2/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions.html [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions.html * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions: - shard-bmg: [SKIP][111] ([Intel XE#6703]) -> [SKIP][112] ([Intel XE#2286]) [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-2/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html * igt@kms_dp_link_training@uhbr-sst: - shard-bmg: [SKIP][113] ([Intel XE#6703]) -> [SKIP][114] ([Intel XE#4354]) +1 other test skip [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_dp_link_training@uhbr-sst.html [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_dp_link_training@uhbr-sst.html * igt@kms_dsc@dsc-with-output-formats: - shard-bmg: [SKIP][115] ([Intel XE#2244]) -> [SKIP][116] ([Intel XE#6703]) +1 other test skip [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_dsc@dsc-with-output-formats.html [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_dsc@dsc-with-output-formats.html * igt@kms_fbcon_fbt@fbc: - shard-bmg: [SKIP][117] ([Intel XE#6703]) -> [SKIP][118] ([Intel XE#4156]) [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_fbcon_fbt@fbc.html [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-3/igt@kms_fbcon_fbt@fbc.html * igt@kms_fbcon_fbt@psr: - shard-bmg: [SKIP][119] ([Intel XE#776]) -> [SKIP][120] ([Intel XE#6703]) [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-9/igt@kms_fbcon_fbt@psr.html [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_fbcon_fbt@psr.html * igt@kms_fbcon_fbt@psr-suspend: - shard-bmg: [SKIP][121] ([Intel XE#6703]) -> [SKIP][122] ([Intel XE#776]) [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_fbcon_fbt@psr-suspend.html [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@kms_fbcon_fbt@psr-suspend.html * igt@kms_feature_discovery@chamelium: - shard-bmg: [SKIP][123] ([Intel XE#2372]) -> [SKIP][124] ([Intel XE#6703]) [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-9/igt@kms_feature_discovery@chamelium.html [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_feature_discovery@chamelium.html * igt@kms_feature_discovery@display-4x: - shard-bmg: [SKIP][125] ([Intel XE#6703]) -> [SKIP][126] ([Intel XE#1138]) [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_feature_discovery@display-4x.html [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_feature_discovery@display-4x.html * igt@kms_feature_discovery@psr2: - shard-bmg: [SKIP][127] ([Intel XE#6703]) -> [SKIP][128] ([Intel XE#2374]) [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_feature_discovery@psr2.html [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@kms_feature_discovery@psr2.html * igt@kms_flip@2x-flip-vs-dpms-on-nop-interruptible: - shard-bmg: [SKIP][129] ([Intel XE#6703]) -> [SKIP][130] ([Intel XE#2316]) +1 other test skip [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-2/igt@kms_flip@2x-flip-vs-dpms-on-nop-interruptible.html [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_flip@2x-flip-vs-dpms-on-nop-interruptible.html * igt@kms_flip@2x-flip-vs-rmfb-interruptible: - shard-bmg: [SKIP][131] ([Intel XE#2316]) -> [SKIP][132] ([Intel XE#6703]) [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_flip@2x-flip-vs-rmfb-interruptible.html [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_flip@2x-flip-vs-rmfb-interruptible.html * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling: - shard-bmg: [SKIP][133] ([Intel XE#2293] / [Intel XE#2380]) -> [SKIP][134] ([Intel XE#6703]) +1 other test skip [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-9/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling.html [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling.html * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling: - shard-bmg: [SKIP][135] ([Intel XE#6703]) -> [SKIP][136] ([Intel XE#2293] / [Intel XE#2380]) +3 other tests skip [135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling.html [136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling.html * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-render: - shard-bmg: [SKIP][137] ([Intel XE#6703]) -> [SKIP][138] ([Intel XE#2312]) +16 other tests skip [137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-render.html [138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-render.html * igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-blt: - shard-bmg: [SKIP][139] ([Intel XE#2312]) -> [SKIP][140] ([Intel XE#2311]) +3 other tests skip [139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-blt.html [140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-8/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render: - shard-bmg: [SKIP][141] ([Intel XE#6703]) -> [SKIP][142] ([Intel XE#2311]) +16 other tests skip [141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render.html [142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render.html * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt: - shard-bmg: [SKIP][143] ([Intel XE#6703]) -> [SKIP][144] ([Intel XE#4141]) +10 other tests skip [143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt.html [144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc: - shard-bmg: [SKIP][145] ([Intel XE#2312]) -> [SKIP][146] ([Intel XE#4141]) [145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc.html [146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-8/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-blt: - shard-bmg: [SKIP][147] ([Intel XE#4141]) -> [SKIP][148] ([Intel XE#6703]) +6 other tests skip [147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-9/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-blt.html [148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbc-tiling-y: - shard-bmg: [SKIP][149] ([Intel XE#6703]) -> [SKIP][150] ([Intel XE#2352]) [149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-tiling-y.html [150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-tiling-y.html * igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-pgflip-blt: - shard-bmg: [SKIP][151] ([Intel XE#2311]) -> [SKIP][152] ([Intel XE#2312]) +2 other tests skip [151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-pgflip-blt.html [152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-pgflip-blt.html * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-msflip-blt: - shard-bmg: [SKIP][153] ([Intel XE#2311]) -> [SKIP][154] ([Intel XE#6703]) +12 other tests skip [153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-9/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-msflip-blt.html [154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-msflip-blt.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render: - shard-bmg: [SKIP][155] ([Intel XE#2312]) -> [SKIP][156] ([Intel XE#6703]) +7 other tests skip [155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render.html [156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt: - shard-bmg: [SKIP][157] ([Intel XE#2313]) -> [SKIP][158] ([Intel XE#6703]) +11 other tests skip [157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt.html [158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-wc: - shard-bmg: [SKIP][159] ([Intel XE#2313]) -> [SKIP][160] ([Intel XE#2312]) [159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-wc.html [160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render: - shard-bmg: [SKIP][161] ([Intel XE#6703]) -> [SKIP][162] ([Intel XE#2313]) +23 other tests skip [161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render.html [162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render.html * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc: - shard-bmg: [SKIP][163] ([Intel XE#2313]) -> [SKIP][164] ([Intel XE#6557] / [Intel XE#6703]) [163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc.html [164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-msflip-blt: - shard-bmg: [SKIP][165] ([Intel XE#2312]) -> [SKIP][166] ([Intel XE#2313]) +4 other tests skip [165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-msflip-blt.html [166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-8/igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-msflip-blt.html * igt@kms_hdr@invalid-hdr: - shard-bmg: [ABORT][167] ([Intel XE#6740]) -> [SKIP][168] ([Intel XE#6703]) [167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-3/igt@kms_hdr@invalid-hdr.html [168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_hdr@invalid-hdr.html * igt@kms_hdr@invalid-metadata-sizes: - shard-bmg: [SKIP][169] ([Intel XE#6703]) -> [ABORT][170] ([Intel XE#6740]) [169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_hdr@invalid-metadata-sizes.html [170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-9/igt@kms_hdr@invalid-metadata-sizes.html * igt@kms_joiner@basic-max-non-joiner: - shard-bmg: [SKIP][171] ([Intel XE#6703]) -> [SKIP][172] ([Intel XE#4298]) [171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_joiner@basic-max-non-joiner.html [172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_joiner@basic-max-non-joiner.html * igt@kms_plane_lowres@tiling-y: - shard-bmg: [SKIP][173] ([Intel XE#6703]) -> [SKIP][174] ([Intel XE#2393]) [173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_plane_lowres@tiling-y.html [174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@kms_plane_lowres@tiling-y.html * igt@kms_plane_multiple@2x-tiling-yf: - shard-bmg: [SKIP][175] ([Intel XE#4596]) -> [SKIP][176] ([Intel XE#5021]) [175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_plane_multiple@2x-tiling-yf.html [176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-8/igt@kms_plane_multiple@2x-tiling-yf.html * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75: - shard-bmg: [SKIP][177] ([Intel XE#6703]) -> [SKIP][178] ([Intel XE#6886]) [177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75.html [178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75.html * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5: - shard-bmg: [SKIP][179] ([Intel XE#6886]) -> [SKIP][180] ([Intel XE#6703]) [179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-9/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5.html [180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5.html * igt@kms_pm_backlight@brightness-with-dpms: - shard-bmg: [SKIP][181] ([Intel XE#6703]) -> [SKIP][182] ([Intel XE#2938]) [181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_pm_backlight@brightness-with-dpms.html [182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@kms_pm_backlight@brightness-with-dpms.html * igt@kms_pm_dc@dc5-retention-flops: - shard-bmg: [SKIP][183] ([Intel XE#6703]) -> [SKIP][184] ([Intel XE#3309]) [183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_pm_dc@dc5-retention-flops.html [184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-3/igt@kms_pm_dc@dc5-retention-flops.html * igt@kms_pm_rpm@dpms-mode-unset-lpsp: - shard-bmg: [SKIP][185] ([Intel XE#1439] / [Intel XE#836]) -> [SKIP][186] ([Intel XE#6693]) [185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html [186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html * igt@kms_psr2_sf@psr2-cursor-plane-update-sf: - shard-bmg: [SKIP][187] ([Intel XE#1406] / [Intel XE#6703]) -> [SKIP][188] ([Intel XE#1406] / [Intel XE#1489]) +7 other tests skip [187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_psr2_sf@psr2-cursor-plane-update-sf.html [188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_psr2_sf@psr2-cursor-plane-update-sf.html * igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf: - shard-bmg: [SKIP][189] ([Intel XE#1406] / [Intel XE#1489]) -> [SKIP][190] ([Intel XE#1406] / [Intel XE#6703]) +3 other tests skip [189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-3/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf.html [190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf.html * igt@kms_psr2_su@frontbuffer-xrgb8888: - shard-bmg: [SKIP][191] ([Intel XE#1406] / [Intel XE#2387]) -> [SKIP][192] ([Intel XE#1406] / [Intel XE#6703]) [191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-9/igt@kms_psr2_su@frontbuffer-xrgb8888.html [192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_psr2_su@frontbuffer-xrgb8888.html * igt@kms_psr@fbc-psr-basic: - shard-bmg: [SKIP][193] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) -> [SKIP][194] ([Intel XE#1406] / [Intel XE#6703]) +4 other tests skip [193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-9/igt@kms_psr@fbc-psr-basic.html [194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_psr@fbc-psr-basic.html * igt@kms_psr@psr-primary-page-flip: - shard-bmg: [SKIP][195] ([Intel XE#1406] / [Intel XE#6703]) -> [SKIP][196] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) +7 other tests skip [195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_psr@psr-primary-page-flip.html [196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@kms_psr@psr-primary-page-flip.html * igt@kms_psr@psr2-primary-render: - shard-bmg: [SKIP][197] ([Intel XE#1406] / [Intel XE#2234]) -> [SKIP][198] ([Intel XE#1406] / [Intel XE#6703]) [197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_psr@psr2-primary-render.html [198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_psr@psr2-primary-render.html * igt@kms_psr_stress_test@invalidate-primary-flip-overlay: - shard-bmg: [SKIP][199] ([Intel XE#1406] / [Intel XE#6703]) -> [SKIP][200] ([Intel XE#1406] / [Intel XE#2414]) [199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html [200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-3/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html * igt@kms_rotation_crc@bad-pixel-format: - shard-bmg: [SKIP][201] ([Intel XE#6703]) -> [SKIP][202] ([Intel XE#3414] / [Intel XE#3904]) +1 other test skip [201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_rotation_crc@bad-pixel-format.html [202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_rotation_crc@bad-pixel-format.html * igt@kms_rotation_crc@primary-rotation-270: - shard-bmg: [SKIP][203] ([Intel XE#3414] / [Intel XE#3904]) -> [SKIP][204] ([Intel XE#6703]) [203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-9/igt@kms_rotation_crc@primary-rotation-270.html [204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_rotation_crc@primary-rotation-270.html * igt@kms_setmode@invalid-clone-single-crtc: - shard-bmg: [SKIP][205] ([Intel XE#1435]) -> [SKIP][206] ([Intel XE#6703]) [205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@kms_setmode@invalid-clone-single-crtc.html [206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_setmode@invalid-clone-single-crtc.html * igt@kms_sharpness_filter@filter-formats: - shard-bmg: [SKIP][207] ([Intel XE#6703]) -> [SKIP][208] ([Intel XE#6503]) +2 other tests skip [207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_sharpness_filter@filter-formats.html [208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-3/igt@kms_sharpness_filter@filter-formats.html * igt@kms_tiled_display@basic-test-pattern: - shard-bmg: [SKIP][209] ([Intel XE#2426]) -> [SKIP][210] ([Intel XE#6703]) [209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-9/igt@kms_tiled_display@basic-test-pattern.html [210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@kms_tiled_display@basic-test-pattern.html * igt@kms_tv_load_detect@load-detect: - shard-bmg: [SKIP][211] ([Intel XE#6557] / [Intel XE#6703]) -> [SKIP][212] ([Intel XE#2450]) [211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@kms_tv_load_detect@load-detect.html [212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-3/igt@kms_tv_load_detect@load-detect.html * igt@kms_vrr@flip-basic: - shard-bmg: [SKIP][213] ([Intel XE#6703]) -> [SKIP][214] ([Intel XE#1499]) [213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-2/igt@kms_vrr@flip-basic.html [214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@kms_vrr@flip-basic.html * igt@xe_compute@ccs-mode-basic: - shard-bmg: [SKIP][215] ([Intel XE#6703]) -> [SKIP][216] ([Intel XE#6599]) [215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@xe_compute@ccs-mode-basic.html [216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@xe_compute@ccs-mode-basic.html * igt@xe_eudebug@basic-vm-access-userptr: - shard-bmg: [SKIP][217] ([Intel XE#6703]) -> [SKIP][218] ([Intel XE#4837]) +8 other tests skip [217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@xe_eudebug@basic-vm-access-userptr.html [218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@xe_eudebug@basic-vm-access-userptr.html * igt@xe_eudebug@basic-vm-bind-ufence: - shard-bmg: [SKIP][219] ([Intel XE#4837]) -> [SKIP][220] ([Intel XE#6703]) +1 other test skip [219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-9/igt@xe_eudebug@basic-vm-bind-ufence.html [220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@xe_eudebug@basic-vm-bind-ufence.html * igt@xe_eudebug_online@basic-breakpoint: - shard-bmg: [SKIP][221] ([Intel XE#4837] / [Intel XE#6665]) -> [SKIP][222] ([Intel XE#6703]) +1 other test skip [221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@xe_eudebug_online@basic-breakpoint.html [222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@xe_eudebug_online@basic-breakpoint.html * igt@xe_eudebug_online@single-step: - shard-bmg: [SKIP][223] ([Intel XE#6703]) -> [SKIP][224] ([Intel XE#4837] / [Intel XE#6665]) +3 other tests skip [223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@xe_eudebug_online@single-step.html [224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@xe_eudebug_online@single-step.html * igt@xe_eudebug_sriov@deny-eudebug: - shard-bmg: [SKIP][225] ([Intel XE#6703]) -> [SKIP][226] ([Intel XE#5793]) [225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@xe_eudebug_sriov@deny-eudebug.html [226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-3/igt@xe_eudebug_sriov@deny-eudebug.html * igt@xe_eudebug_sriov@deny-sriov: - shard-bmg: [SKIP][227] ([Intel XE#5793]) -> [SKIP][228] ([Intel XE#6703]) [227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@xe_eudebug_sriov@deny-sriov.html [228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@xe_eudebug_sriov@deny-sriov.html * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr: - shard-bmg: [SKIP][229] ([Intel XE#2322]) -> [SKIP][230] ([Intel XE#6703]) +4 other tests skip [229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-9/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr.html [230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr.html * igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr-invalidate: - shard-bmg: [SKIP][231] ([Intel XE#6703]) -> [SKIP][232] ([Intel XE#2322]) +7 other tests skip [231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr-invalidate.html [232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-3/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr-invalidate.html * igt@xe_exec_multi_queue@many-queues-dyn-priority-smem: - shard-bmg: [SKIP][233] ([Intel XE#6874]) -> [SKIP][234] ([Intel XE#6703]) +16 other tests skip [233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@xe_exec_multi_queue@many-queues-dyn-priority-smem.html [234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@xe_exec_multi_queue@many-queues-dyn-priority-smem.html * igt@xe_exec_multi_queue@one-queue-preempt-mode-fault-dyn-priority-smem: - shard-bmg: [SKIP][235] ([Intel XE#6703]) -> [SKIP][236] ([Intel XE#6874]) +25 other tests skip [235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@xe_exec_multi_queue@one-queue-preempt-mode-fault-dyn-priority-smem.html [236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@xe_exec_multi_queue@one-queue-preempt-mode-fault-dyn-priority-smem.html * igt@xe_exec_system_allocator@many-64k-mmap-huge-nomemset: - shard-bmg: [SKIP][237] ([Intel XE#6703]) -> [SKIP][238] ([Intel XE#5007]) [237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@xe_exec_system_allocator@many-64k-mmap-huge-nomemset.html [238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@xe_exec_system_allocator@many-64k-mmap-huge-nomemset.html * igt@xe_exec_system_allocator@process-many-large-execqueues-mmap-new-huge: - shard-bmg: [SKIP][239] ([Intel XE#4943]) -> [SKIP][240] ([Intel XE#6703]) +10 other tests skip [239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-9/igt@xe_exec_system_allocator@process-many-large-execqueues-mmap-new-huge.html [240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@xe_exec_system_allocator@process-many-large-execqueues-mmap-new-huge.html * igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-mmap-free-huge-nomemset: - shard-bmg: [SKIP][241] ([Intel XE#6703]) -> [SKIP][242] ([Intel XE#4943]) +20 other tests skip [241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-mmap-free-huge-nomemset.html [242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-3/igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-mmap-free-huge-nomemset.html * igt@xe_fault_injection@exec-queue-create-fail-xe_pxp_exec_queue_add: - shard-bmg: [SKIP][243] ([Intel XE#6703]) -> [SKIP][244] ([Intel XE#6281]) [243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@xe_fault_injection@exec-queue-create-fail-xe_pxp_exec_queue_add.html [244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@xe_fault_injection@exec-queue-create-fail-xe_pxp_exec_queue_add.html * igt@xe_pm@d3cold-mmap-vram: - shard-bmg: [SKIP][245] ([Intel XE#6703]) -> [SKIP][246] ([Intel XE#2284]) +1 other test skip [245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-2/igt@xe_pm@d3cold-mmap-vram.html [246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-4/igt@xe_pm@d3cold-mmap-vram.html * igt@xe_pm@d3hot-i2c: - shard-bmg: [SKIP][247] ([Intel XE#6703]) -> [SKIP][248] ([Intel XE#5742]) [247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@xe_pm@d3hot-i2c.html [248]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@xe_pm@d3hot-i2c.html * igt@xe_pm@s2idle-d3cold-basic-exec: - shard-bmg: [SKIP][249] ([Intel XE#2284]) -> [SKIP][250] ([Intel XE#6703]) +1 other test skip [249]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@xe_pm@s2idle-d3cold-basic-exec.html [250]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@xe_pm@s2idle-d3cold-basic-exec.html * igt@xe_pm@vram-d3cold-threshold: - shard-bmg: [SKIP][251] ([Intel XE#6703]) -> [SKIP][252] ([Intel XE#579]) [251]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@xe_pm@vram-d3cold-threshold.html [252]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-3/igt@xe_pm@vram-d3cold-threshold.html * igt@xe_pxp@display-pxp-fb: - shard-bmg: [SKIP][253] ([Intel XE#4733]) -> [SKIP][254] ([Intel XE#6703]) +1 other test skip [253]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-9/igt@xe_pxp@display-pxp-fb.html [254]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@xe_pxp@display-pxp-fb.html * igt@xe_pxp@pxp-stale-queue-post-termination-irq: - shard-bmg: [SKIP][255] ([Intel XE#6703]) -> [SKIP][256] ([Intel XE#4733]) +1 other test skip [255]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@xe_pxp@pxp-stale-queue-post-termination-irq.html [256]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-2/igt@xe_pxp@pxp-stale-queue-post-termination-irq.html * igt@xe_query@multigpu-query-engines: - shard-bmg: [SKIP][257] ([Intel XE#6703]) -> [SKIP][258] ([Intel XE#944]) +1 other test skip [257]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-5/igt@xe_query@multigpu-query-engines.html [258]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-3/igt@xe_query@multigpu-query-engines.html * igt@xe_query@multigpu-query-mem-usage: - shard-bmg: [SKIP][259] ([Intel XE#944]) -> [SKIP][260] ([Intel XE#6703]) +1 other test skip [259]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4272-93db616df689a410d961e7c614c57e61d17a29a0/shard-bmg-4/igt@xe_query@multigpu-query-mem-usage.html [260]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/shard-bmg-5/igt@xe_query@multigpu-query-mem-usage.html [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124 [Intel XE#1138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1138 [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406 [Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435 [Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439 [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489 [Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499 [Intel XE#2134]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2134 [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234 [Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244 [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252 [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284 [Intel XE#2286]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2286 [Intel XE#2291]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2291 [Intel XE#2293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2293 [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311 [Intel XE#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312 [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313 [Intel XE#2314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2314 [Intel XE#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316 [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320 [Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321 [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322 [Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325 [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327 [Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341 [Intel XE#2352]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2352 [Intel XE#2372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2372 [Intel XE#2374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2374 [Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380 [Intel XE#2387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2387 [Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390 [Intel XE#2393]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2393 [Intel XE#2414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2414 [Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426 [Intel XE#2450]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2450 [Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652 [Intel XE#2724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2724 [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850 [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887 [Intel XE#2894]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2894 [Intel XE#2938]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2938 [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301 [Intel XE#3309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3309 [Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414 [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367 [Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904 [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141 [Intel XE#4156]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4156 [Intel XE#4298]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4298 [Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354 [Intel XE#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596 [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733 [Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837 [Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943 [Intel XE#5007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5007 [Intel XE#5021]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5021 [Intel XE#5299]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5299 [Intel XE#5742]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5742 [Intel XE#579]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/579 [Intel XE#5793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5793 [Intel XE#6251]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6251 [Intel XE#6281]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6281 [Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503 [Intel XE#6557]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6557 [Intel XE#6599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6599 [Intel XE#6665]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6665 [Intel XE#6693]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6693 [Intel XE#6703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6703 [Intel XE#6740]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6740 [Intel XE#6779]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6779 [Intel XE#6815]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6815 [Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874 [Intel XE#6886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6886 [Intel XE#6913]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6913 [Intel XE#6914]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6914 [Intel XE#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776 [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787 [Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836 [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944 Build changes ------------- * Linux: xe-4272-93db616df689a410d961e7c614c57e61d17a29a0 -> xe-pw-159263v1 IGT_8674: f38f4d8e9c65aff45ac807e646d06e38bc3193a2 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git xe-4272-93db616df689a410d961e7c614c57e61d17a29a0: 93db616df689a410d961e7c614c57e61d17a29a0 xe-pw-159263v1: 159263v1 == Logs == For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159263v1/index.html [-- Attachment #2: Type: text/html, Size: 82133 bytes --] ^ permalink raw reply [flat|nested] 51+ messages in thread
end of thread, other threads:[~2026-01-09 8:49 UTC | newest] Thread overview: 51+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-12-19 6:56 [PATCH 00/13] drm: Color pipeline teardown and follow-up fixes/improvements Chaitanya Kumar Borah 2025-12-19 6:56 ` [PATCH 01/13] drm/i915/color: Place 3D LUT after CSC in plane color pipeline Chaitanya Kumar Borah 2026-01-05 8:33 ` Kandpal, Suraj 2026-01-06 9:48 ` Shankar, Uma 2025-12-19 6:56 ` [PATCH 02/13] drm/amd/display: Fix color pipeline enum name leak Chaitanya Kumar Borah 2026-01-06 10:55 ` Shankar, Uma 2026-01-06 23:50 ` Alex Hung 2025-12-19 6:56 ` [PATCH 03/13] drm/vkms: " Chaitanya Kumar Borah 2026-01-06 10:57 ` Shankar, Uma 2026-01-06 23:50 ` Alex Hung 2025-12-19 6:56 ` [PATCH 04/13] drm/i915/display: " Chaitanya Kumar Borah 2026-01-05 9:04 ` Kandpal, Suraj 2026-01-06 10:59 ` Shankar, Uma 2025-12-19 6:56 ` [PATCH 05/13] drm: Allow driver-managed destruction of colorop objects Chaitanya Kumar Borah 2026-01-05 9:14 ` Kandpal, Suraj 2026-01-06 11:05 ` Shankar, Uma 2026-01-07 0:02 ` Alex Hung 2026-01-08 14:11 ` Borah, Chaitanya Kumar 2026-01-08 17:15 ` Alex Hung 2025-12-19 6:56 ` [PATCH 06/13] drm/colorop: Add destroy helper for " Chaitanya Kumar Borah 2026-01-05 9:16 ` Kandpal, Suraj 2026-01-06 11:07 ` Shankar, Uma 2026-01-07 0:02 ` Alex Hung 2025-12-19 6:56 ` [PATCH 07/13] drm/amd/display: Hook up colorop destroy helper for plane pipelines Chaitanya Kumar Borah 2026-01-06 11:10 ` Shankar, Uma 2026-01-07 0:03 ` Alex Hung 2025-12-19 6:56 ` [PATCH 08/13] drm/vkms: " Chaitanya Kumar Borah 2026-01-06 11:11 ` Shankar, Uma 2026-01-07 0:04 ` Alex Hung 2025-12-19 6:56 ` [PATCH 09/13] drm/i915/display: Hook up intel_colorop_destroy Chaitanya Kumar Borah 2026-01-05 9:18 ` Kandpal, Suraj 2026-01-06 11:16 ` Shankar, Uma 2025-12-19 6:56 ` [PATCH 10/13] drm: Clean up colorop objects during mode_config cleanup Chaitanya Kumar Borah 2026-01-05 9:20 ` Kandpal, Suraj 2026-01-06 11:20 ` Shankar, Uma 2026-01-07 0:04 ` Alex Hung 2025-12-19 6:56 ` [PATCH 11/13] drm/vkms: Remove drm_colorop_pipeline_destroy() from vkms_destroy() Chaitanya Kumar Borah 2026-01-06 11:21 ` Shankar, Uma 2025-12-19 6:56 ` [PATCH 12/13] drm/colorop: Use destroy callback for color pipeline teardown Chaitanya Kumar Borah 2026-01-05 9:27 ` Kandpal, Suraj 2026-01-06 11:23 ` Shankar, Uma 2026-01-07 0:05 ` Alex Hung 2025-12-19 6:56 ` [PATCH 13/13] drm/i915/color: Add failure handling in plane color pipeline init Chaitanya Kumar Borah 2026-01-06 3:55 ` Kandpal, Suraj 2026-01-06 11:57 ` Shankar, Uma 2026-01-09 8:49 ` Borah, Chaitanya Kumar 2025-12-19 7:19 ` ✗ CI.checkpatch: warning for drm: Color pipeline teardown and follow-up fixes/improvements Patchwork 2025-12-19 7:20 ` ✓ CI.KUnit: success " Patchwork 2025-12-19 7:35 ` ✗ CI.checksparse: warning " Patchwork 2025-12-19 8:19 ` ✓ Xe.CI.BAT: success " Patchwork 2025-12-20 9:29 ` ✗ Xe.CI.Full: failure " Patchwork
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox