* [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops
@ 2026-11-11 16:05 Melissa Wen
2026-11-11 16:05 ` [PATCH v5 01/15] drm/amd/display: Update colorop pipeline tests for new fixed matrix op Melissa Wen
` (18 more replies)
0 siblings, 19 replies; 22+ messages in thread
From: Melissa Wen @ 2026-11-11 16:05 UTC (permalink / raw)
To: airlied, alexander.deucher, alex.hung, aurabindo.pillai,
christian.koenig, contact, daniels, harry.wentland,
maarten.lankhorst, mripard, mwen, sebastian.wick, simona,
siqueira, sunpeng.li, tzimmermann
Cc: Uma Shankar, Chaitanya Kumar Borah, Xaver Hugl, Pekka Paalanen,
Matthew Schwartz, amd-gfx, kernel-dev, Rob Clark,
Dmitry Baryshkov, Sean Paul, Marijn Suijten, linux-arm-msm,
freedreno, intel-xe, intel-gfx, dri-devel, louis.chauvet,
John Harrison
This series is a follow-up of what was discussed in [1] and on #wayland
IRC channel regarding policy and userspace expectations on changes in
colorop properties and the current status of the color pipeline in which
the colorop is part of. In short, we agreed that userspace can change
properties of colorops that are currently part of an active color
pipeline or when the pipeline is switching status in the same commit.
However, userspace cannot change colorop properties of inactive color
pipeline in the expactation that it will be activated at some point in
the future.
Userspace also expects persistence of color pipeline already set, even
if it becomes inactive for a while, when activated, colorop settings
previouly set should be preserved.
This series uncovered some bugs on IGT tests that were already fixed [2]
and applied. The bad merge conflict resolution mentioned in the previous
version [v3] is already resolved. On the other hand, when rebasing this
series on drm-misc, other issues on AMD KUnit tests appeared due to the
introduction of the new FIXED_MATRIX colorop type. As a result, the
first two new patches address them.
I also tried to address some Sashiko's complaints on pre-existent issues
that affects the stability of this series, but not all since I want to
keep a healthy scope for reviews. Now some AMD fixes in this series are
attached to the DRM changes, so better apply the whole serie in a single
branch and hope that this doesn't get deleted in the event of a merge
conflict.
[v1] https://lore.kernel.org/dri-devel/20260526142940.504911-1-mwen@igalia.com/
Changes:
- define a macro to walk in the color pipeline (Alex H.)
- fix checkpatch warning (Alex H.)
[v2] https://lore.kernel.org/dri-devel/20260604180457.1110110-1-mwen@igalia.com/
Changes:
- [Drop] drm/atomic: duplicate state of all colorops
If inactive colorops state are duplicated on resume, the commit will be
rejected.
- [New] Four new patches to make AMD driver match the policy of colorop
updates only for colorops in active color pipelines plus individual
colorop updates. It also tries to untangle COLOR_PIPELINE = Bypass from
colorop BYPASS prop = true. I think patches 3-5 can be cherry-picked and
applied if it looks correct for AMD, I just included them here for
context (for example, Sashiko reported an issue in the previous version
of this series).
[v3] https://lore.kernel.org/dri-devel/20260609121230.1358786-1-mwen@igalia.com/
Changes:
- make drm_atomic_add_affected_colorops static and move to
drm_atomic_helper.c (John H.)
- skip check when just duplicating state for suspend/resume persistence.
- [re-add] drm/atomic: duplicate state of all colorops to preserve all
colorop status in a suspend/resume
- rewite commit message and better explain what's considered an active
colorop (John H.)
- [new] drm/atomic: check if an active colorop has a blob if its type
requires one
- drop the ternary and add just a warn_on since both current callers
iterate planes already in the atomic state in AMD's active pipeline
check (John H.)
- explain the reason to use commited colorop in AMD's active pipeline
check (John H.)
- [new] drm/amd/display: don't ignore failure on blend colorop setup
- [new] drm/amd/display: distinguish colorop setup error from no colorop support
[v4] https://lore.kernel.org/dri-devel/20260811171011.184964-1-mwen@igalia.com/
Changes:
- Fixes for Kunit tests related to FIXED_MATRIX type
- [new] drm/amd/display: Update colorop pipeline tests for new fixed matrix op
- [new] drm/amd/display: add missing FIXED_MATRIX colorop to AMD KUnit tests
- Fixes for KUnit tests with the new policy in place:
- [new] drm/amd/display: add plane to commit on KUnit cursor mode tests
- post-pone making drm_atomic_add_affected_colorops static to a point in this
series in which this is not needed by AMD anymore (Harry):
- In drm/amd/display: allow individual colorop change, drop the
drm_atomic_add_affected_colorops() call from dm_update_plane_state(),
since the colorop helpers now fall back to the committed state
- [new] drm/atomic: make drm_atomic_add_affected_colorops() static
- check colorop type when allowing individual changes (Harry)
- update __set_dm_plane_colorop_fixed_matrix to get the commited state if no
new state as for other colorop individual changes (Harry)
- update KUnit tests accordingly (Harry)
- [moved] drm/amd/display: only check colorops of an active color pipeline
[1] https://lore.kernel.org/dri-devel/20260519211111.228303-1-mwen@igalia.com/
[2] https://lore.kernel.org/igt-dev/20261021151929.62529-1-mwen@igalia.com/
Best Regards,
Melissa
John Harrison (1):
drm/amd/display: Update colorop pipeline tests for new fixed matrix op
Melissa Wen (14):
drm/amd/display: add missing FIXED_MATRIX colorop to AMD KUnit tests
drm/atomic: only add states of active or transient active colorops
drm/amd/display: add plane to commit on KUnit cursor mode tests
drm/amd/display: only check colorops of an active color pipeline
drm/atomic: reject colorop update from inactive color pipeline
drm/atomic: duplicate state of all colorops
drm/atomic: check if an active colorop has a blob if its type requires
one
drm/amd/display: truly bypass plane colorop 3x4 matrix and hdr mult
drm/amd/display: make shaper bypass mode cleaner
drm/amd/display: make blnd bypass mode clearer
drm/amd/display: don't ignore failure on blend colorop setup
drm/amd/display: allow individual colorop changes
drm/atomic: make drm_atomic_add_affected_colorops() static
drm/amd/display: distinguish colorop setup error from no colorop
support
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 13 -
.../amd/display/amdgpu_dm/amdgpu_dm_color.c | 236 ++++++++----------
.../amd/display/amdgpu_dm/amdgpu_dm_cursor.c | 26 +-
.../amdgpu_dm/tests/amdgpu_dm_color_test.c | 118 +++++----
.../amdgpu_dm/tests/amdgpu_dm_colorop_test.c | 4 +
.../amdgpu_dm/tests/amdgpu_dm_cursor_test.c | 49 ++++
drivers/gpu/drm/drm_atomic.c | 199 +++++++++++----
drivers/gpu/drm/drm_atomic_helper.c | 59 ++++-
drivers/gpu/drm/drm_colorop.c | 5 +-
include/drm/drm_atomic.h | 4 -
include/drm/drm_colorop.h | 9 +-
11 files changed, 456 insertions(+), 266 deletions(-)
--
2.53.0
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH v5 01/15] drm/amd/display: Update colorop pipeline tests for new fixed matrix op
2026-11-11 16:05 [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
@ 2026-11-11 16:05 ` Melissa Wen
2026-11-11 16:05 ` [PATCH v5 02/15] drm/amd/display: add missing FIXED_MATRIX colorop to AMD KUnit tests Melissa Wen
` (17 subsequent siblings)
18 siblings, 0 replies; 22+ messages in thread
From: Melissa Wen @ 2026-11-11 16:05 UTC (permalink / raw)
To: airlied, alexander.deucher, alex.hung, aurabindo.pillai,
christian.koenig, contact, daniels, harry.wentland,
maarten.lankhorst, mripard, mwen, sebastian.wick, simona,
siqueira, sunpeng.li, tzimmermann
Cc: Uma Shankar, Chaitanya Kumar Borah, Xaver Hugl, Pekka Paalanen,
Matthew Schwartz, amd-gfx, kernel-dev, Rob Clark,
Dmitry Baryshkov, Sean Paul, Marijn Suijten, linux-arm-msm,
freedreno, intel-xe, intel-gfx, dri-devel, louis.chauvet,
John Harrison, John Harrison
From: John Harrison <John.Harrison@Igalia.com>
A bunch of tests verify that the pipeline created by the driver
matches an expected pipeline hard coded into the test. The below patch
added a new op into the driver's pipeline but did not update the tests
to match. So add it in.
Fixes: 6d103ad11583 ("drm/amd/display: Add fixed matrix colorop to color pipeline")
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Alex Hung <alex.hung@amd.com>
Signed-off-by: John Harrison <John.Harrison@Igalia.com>
Signed-off-by: Melissa Wen <mwen@igalia.com>
---
.../drm/amd/display/amdgpu_dm/tests/amdgpu_dm_colorop_test.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_colorop_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_colorop_test.c
index 90cc5592ef5d..00f1d5b33b1f 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_colorop_test.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_colorop_test.c
@@ -192,6 +192,7 @@ static void dm_expect_colorop_pipeline(struct kunit *test, struct drm_device *dr
static void dm_test_initialize_default_pipeline(struct kunit *test)
{
static const enum drm_colorop_type expected[] = {
+ DRM_COLOROP_FIXED_MATRIX,
DRM_COLOROP_1D_CURVE, /* degam TF */
DRM_COLOROP_MULTIPLIER,
DRM_COLOROP_CTM_3X4,
@@ -257,6 +258,7 @@ static void dm_test_initialize_default_pipeline_caps(struct kunit *test,
static void dm_test_initialize_default_pipeline_dpp_3d_lut(struct kunit *test)
{
static const enum drm_colorop_type expected[] = {
+ DRM_COLOROP_FIXED_MATRIX,
DRM_COLOROP_1D_CURVE,
DRM_COLOROP_MULTIPLIER,
DRM_COLOROP_CTM_3X4,
@@ -278,6 +280,7 @@ static void dm_test_initialize_default_pipeline_dpp_3d_lut(struct kunit *test)
static void dm_test_initialize_default_pipeline_mpc_preblend(struct kunit *test)
{
static const enum drm_colorop_type expected[] = {
+ DRM_COLOROP_FIXED_MATRIX,
DRM_COLOROP_1D_CURVE,
DRM_COLOROP_MULTIPLIER,
DRM_COLOROP_CTM_3X4,
@@ -299,6 +302,7 @@ static void dm_test_initialize_default_pipeline_mpc_preblend(struct kunit *test)
static void dm_test_initialize_default_pipeline_no_3d_lut(struct kunit *test)
{
static const enum drm_colorop_type expected[] = {
+ DRM_COLOROP_FIXED_MATRIX,
DRM_COLOROP_1D_CURVE,
DRM_COLOROP_MULTIPLIER,
DRM_COLOROP_CTM_3X4,
--
2.53.0
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v5 02/15] drm/amd/display: add missing FIXED_MATRIX colorop to AMD KUnit tests
2026-11-11 16:05 [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
2026-11-11 16:05 ` [PATCH v5 01/15] drm/amd/display: Update colorop pipeline tests for new fixed matrix op Melissa Wen
@ 2026-11-11 16:05 ` Melissa Wen
2026-11-11 16:05 ` [PATCH v5 03/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
` (16 subsequent siblings)
18 siblings, 0 replies; 22+ messages in thread
From: Melissa Wen @ 2026-11-11 16:05 UTC (permalink / raw)
To: airlied, alexander.deucher, alex.hung, aurabindo.pillai,
christian.koenig, contact, daniels, harry.wentland,
maarten.lankhorst, mripard, mwen, sebastian.wick, simona,
siqueira, sunpeng.li, tzimmermann
Cc: Uma Shankar, Chaitanya Kumar Borah, Xaver Hugl, Pekka Paalanen,
Matthew Schwartz, amd-gfx, kernel-dev, Rob Clark,
Dmitry Baryshkov, Sean Paul, Marijn Suijten, linux-arm-msm,
freedreno, intel-xe, intel-gfx, dri-devel, louis.chauvet,
John Harrison
The new FIXED_MATRIX colorop was introduced to DRM and this is now the
first operation of the AMD color pipeline, but KUnit tests weren't
updated accordingly. Add the new colorop as expected when testing
colorops of the AMD color pipeline. Also fix the colorop sequence in
comments.
Fixes: 941222175d21 ("drm/amd/display: Implement fixed matrix colorop color space mapping")
Signed-off-by: Melissa Wen <mwen@igalia.com>
---
.../amdgpu_dm/tests/amdgpu_dm_color_test.c | 50 +++++++++++++------
1 file changed, 35 insertions(+), 15 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_color_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_color_test.c
index 8c2f7ab5f8d3..d2ae35bf550f 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_color_test.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_color_test.c
@@ -2495,6 +2495,7 @@ dm_test_colorop_pipeline_setup(struct kunit *test,
static void dm_test_update_plane_color_mgmt_colorop_bypass_pipeline(struct kunit *test)
{
static const enum drm_colorop_type types[] = {
+ DRM_COLOROP_FIXED_MATRIX,
DRM_COLOROP_1D_CURVE,
DRM_COLOROP_MULTIPLIER,
DRM_COLOROP_CTM_3X4,
@@ -2508,6 +2509,7 @@ static void dm_test_update_plane_color_mgmt_colorop_bypass_pipeline(struct kunit
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
+ DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_INV_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
@@ -2515,7 +2517,7 @@ static void dm_test_update_plane_color_mgmt_colorop_bypass_pipeline(struct kunit
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
};
static const bool bypass[] = {
- true, true, true, true, true, true, true, true,
+ true, true, true, true, true, true, true, true, true,
};
struct dm_test_color_update_fixture f = dm_test_color_update_setup(test);
@@ -2532,16 +2534,20 @@ static void dm_test_update_plane_color_mgmt_colorop_bypass_pipeline(struct kunit
}
/**
- * dm_test_update_plane_color_mgmt_colorop_missing_multiplier - missing second op falls back
+ * dm_test_update_plane_color_mgmt_colorop_missing_multiplier - missing multiplier op falls back
* @test: KUnit test context
*/
static void dm_test_update_plane_color_mgmt_colorop_missing_multiplier(struct kunit *test)
{
- static const enum drm_colorop_type types[] = { DRM_COLOROP_1D_CURVE };
+ static const enum drm_colorop_type types[] = {
+ DRM_COLOROP_FIXED_MATRIX,
+ DRM_COLOROP_1D_CURVE
+ };
static const enum drm_colorop_curve_1d_type curves[] = {
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
+ DRM_COLOROP_1D_CURVE_SRGB_EOTF,
};
- static const bool bypass[] = { true };
+ static const bool bypass[] = { true, true };
struct dm_test_color_update_fixture f = dm_test_color_update_setup(test);
f.dm_plane_state->base.color_pipeline =
@@ -2555,20 +2561,22 @@ static void dm_test_update_plane_color_mgmt_colorop_missing_multiplier(struct ku
}
/**
- * dm_test_update_plane_color_mgmt_colorop_missing_3x4 - missing third op falls back
+ * dm_test_update_plane_color_mgmt_colorop_missing_3x4 - missing 3x4 op falls back
* @test: KUnit test context
*/
static void dm_test_update_plane_color_mgmt_colorop_missing_3x4(struct kunit *test)
{
static const enum drm_colorop_type types[] = {
+ DRM_COLOROP_FIXED_MATRIX,
DRM_COLOROP_1D_CURVE,
DRM_COLOROP_MULTIPLIER,
};
static const enum drm_colorop_curve_1d_type curves[] = {
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
+ DRM_COLOROP_1D_CURVE_SRGB_EOTF,
};
- static const bool bypass[] = { true, true };
+ static const bool bypass[] = { true, true, true };
struct dm_test_color_update_fixture f = dm_test_color_update_setup(test);
f.dm_plane_state->base.color_pipeline =
@@ -2591,6 +2599,7 @@ static void dm_test_update_plane_color_mgmt_colorop_missing_3x4(struct kunit *te
static void dm_test_update_plane_color_mgmt_colorop_truncated(struct kunit *test)
{
static const enum drm_colorop_type types[] = {
+ DRM_COLOROP_FIXED_MATRIX,
DRM_COLOROP_1D_CURVE,
DRM_COLOROP_MULTIPLIER,
DRM_COLOROP_CTM_3X4,
@@ -2603,13 +2612,14 @@ static void dm_test_update_plane_color_mgmt_colorop_truncated(struct kunit *test
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
+ DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_INV_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
};
static const bool bypass[] = {
- true, true, true, true, true, true, true,
+ true, true, true, true, true, true, true, true,
};
struct dm_test_color_update_fixture f = dm_test_color_update_setup(test);
struct dc_plane_state *dc_plane_state = f.dc_plane_state;
@@ -2639,6 +2649,7 @@ static void dm_test_update_plane_color_mgmt_colorop_truncated(struct kunit *test
static void dm_test_update_plane_color_mgmt_colorop_no_3dlut_hw(struct kunit *test)
{
static const enum drm_colorop_type types[] = {
+ DRM_COLOROP_FIXED_MATRIX,
DRM_COLOROP_1D_CURVE,
DRM_COLOROP_MULTIPLIER,
DRM_COLOROP_CTM_3X4,
@@ -2657,9 +2668,10 @@ static void dm_test_update_plane_color_mgmt_colorop_no_3dlut_hw(struct kunit *te
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
+ DRM_COLOROP_1D_CURVE_SRGB_EOTF,
};
static const bool bypass[] = {
- true, true, true, true, true, false, true, true,
+ true, true, true, true, true, true, false, true, true,
};
struct dm_test_color_update_fixture f = dm_test_color_update_setup(test);
@@ -2683,6 +2695,7 @@ static void dm_test_update_plane_color_mgmt_colorop_no_3dlut_hw(struct kunit *te
static void dm_test_update_plane_color_mgmt_colorop_shaper(struct kunit *test)
{
static const enum drm_colorop_type types[] = {
+ DRM_COLOROP_FIXED_MATRIX,
DRM_COLOROP_1D_CURVE,
DRM_COLOROP_MULTIPLIER,
DRM_COLOROP_CTM_3X4,
@@ -2696,6 +2709,7 @@ static void dm_test_update_plane_color_mgmt_colorop_shaper(struct kunit *test)
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
+ DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_INV_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
@@ -2703,7 +2717,7 @@ static void dm_test_update_plane_color_mgmt_colorop_shaper(struct kunit *test)
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
};
static const bool bypass[] = {
- true, true, true, false, false, true, true, true,
+ true, true, true, true, false, false, true, true, true,
};
struct dm_test_color_update_fixture f = dm_test_color_update_setup(test);
struct drm_colorop_state *shaper_lut_state;
@@ -2715,7 +2729,7 @@ static void dm_test_update_plane_color_mgmt_colorop_shaper(struct kunit *test)
f.dm_plane_state->base.color_pipeline =
dm_test_colorop_pipeline_setup(test, &f, types, curves, bypass,
ARRAY_SIZE(types));
- shaper_lut_state = f.state->colorops[4].new_state;
+ shaper_lut_state = f.state->colorops[5].new_state;
blob = kunit_kzalloc(test, sizeof(*blob), GFP_KERNEL);
KUNIT_ASSERT_NOT_NULL(test, blob);
blob->length = MAX_COLOR_LUT_ENTRIES * sizeof(struct drm_color_lut32);
@@ -2738,6 +2752,7 @@ static void dm_test_update_plane_color_mgmt_colorop_shaper(struct kunit *test)
static void dm_test_update_plane_color_mgmt_colorop_3dlut(struct kunit *test)
{
static const enum drm_colorop_type types[] = {
+ DRM_COLOROP_FIXED_MATRIX,
DRM_COLOROP_1D_CURVE,
DRM_COLOROP_MULTIPLIER,
DRM_COLOROP_CTM_3X4,
@@ -2751,6 +2766,7 @@ static void dm_test_update_plane_color_mgmt_colorop_3dlut(struct kunit *test)
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
+ DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_INV_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
@@ -2758,7 +2774,7 @@ static void dm_test_update_plane_color_mgmt_colorop_3dlut(struct kunit *test)
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
};
static const bool bypass[] = {
- true, true, true, true, true, false, true, true,
+ true, true, true, true, true, true, false, true, true,
};
struct dm_test_color_update_fixture f = dm_test_color_update_setup(test);
struct drm_colorop_state *lut3d_state;
@@ -2770,7 +2786,7 @@ static void dm_test_update_plane_color_mgmt_colorop_3dlut(struct kunit *test)
f.dm_plane_state->base.color_pipeline =
dm_test_colorop_pipeline_setup(test, &f, types, curves, bypass,
ARRAY_SIZE(types));
- lut3d_state = f.state->colorops[5].new_state;
+ lut3d_state = f.state->colorops[6].new_state;
blob = kunit_kzalloc(test, sizeof(*blob), GFP_KERNEL);
KUNIT_ASSERT_NOT_NULL(test, blob);
blob->length = 5 * sizeof(struct drm_color_lut32);
@@ -2795,6 +2811,7 @@ static void dm_test_update_plane_color_mgmt_colorop_3dlut(struct kunit *test)
static void dm_test_update_plane_color_mgmt_colorop_3dlut_no_data(struct kunit *test)
{
static const enum drm_colorop_type types[] = {
+ DRM_COLOROP_FIXED_MATRIX,
DRM_COLOROP_1D_CURVE,
DRM_COLOROP_MULTIPLIER,
DRM_COLOROP_CTM_3X4,
@@ -2808,6 +2825,7 @@ static void dm_test_update_plane_color_mgmt_colorop_3dlut_no_data(struct kunit *
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
+ DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_INV_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
@@ -2815,7 +2833,7 @@ static void dm_test_update_plane_color_mgmt_colorop_3dlut_no_data(struct kunit *
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
};
static const bool bypass[] = {
- true, true, true, true, true, false, true, true,
+ true, true, true, true, true, true, false, true, true,
};
struct dm_test_color_update_fixture f = dm_test_color_update_setup(test);
struct drm_plane_state *plane_state = &f.dm_plane_state->base;
@@ -2839,6 +2857,7 @@ static void dm_test_update_plane_color_mgmt_colorop_3dlut_no_data(struct kunit *
static void dm_test_update_plane_color_mgmt_colorop_blend(struct kunit *test)
{
static const enum drm_colorop_type types[] = {
+ DRM_COLOROP_FIXED_MATRIX,
DRM_COLOROP_1D_CURVE,
DRM_COLOROP_MULTIPLIER,
DRM_COLOROP_CTM_3X4,
@@ -2851,8 +2870,9 @@ static void dm_test_update_plane_color_mgmt_colorop_blend(struct kunit *test)
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
DRM_COLOROP_1D_CURVE_SRGB_EOTF,
+ DRM_COLOROP_1D_CURVE_SRGB_EOTF,
};
- static const bool bypass[] = { true, true, true, false, false };
+ static const bool bypass[] = { true, true, true, true, false, false };
struct dm_test_color_update_fixture f = dm_test_color_update_setup(test);
struct drm_colorop_state *blend_lut_state;
struct drm_plane_state *plane_state = &f.dm_plane_state->base;
@@ -2862,7 +2882,7 @@ static void dm_test_update_plane_color_mgmt_colorop_blend(struct kunit *test)
f.dm_plane_state->base.color_pipeline =
dm_test_colorop_pipeline_setup(test, &f, types, curves, bypass,
ARRAY_SIZE(types));
- blend_lut_state = f.state->colorops[4].new_state;
+ blend_lut_state = f.state->colorops[5].new_state;
blob = kunit_kzalloc(test, sizeof(*blob), GFP_KERNEL);
KUNIT_ASSERT_NOT_NULL(test, blob);
blob->length = MAX_COLOR_LUT_ENTRIES * sizeof(struct drm_color_lut32);
--
2.53.0
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v5 03/15] drm/atomic: only add states of active or transient active colorops
2026-11-11 16:05 [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
2026-11-11 16:05 ` [PATCH v5 01/15] drm/amd/display: Update colorop pipeline tests for new fixed matrix op Melissa Wen
2026-11-11 16:05 ` [PATCH v5 02/15] drm/amd/display: add missing FIXED_MATRIX colorop to AMD KUnit tests Melissa Wen
@ 2026-11-11 16:05 ` Melissa Wen
2026-11-11 17:12 ` sashiko-bot
2026-11-11 16:05 ` [PATCH v5 04/15] drm/amd/display: add plane to commit on KUnit cursor mode tests Melissa Wen
` (15 subsequent siblings)
18 siblings, 1 reply; 22+ messages in thread
From: Melissa Wen @ 2026-11-11 16:05 UTC (permalink / raw)
To: airlied, alexander.deucher, alex.hung, aurabindo.pillai,
christian.koenig, contact, daniels, harry.wentland,
maarten.lankhorst, mripard, mwen, sebastian.wick, simona,
siqueira, sunpeng.li, tzimmermann
Cc: Uma Shankar, Chaitanya Kumar Borah, Xaver Hugl, Pekka Paalanen,
Matthew Schwartz, amd-gfx, kernel-dev, Rob Clark,
Dmitry Baryshkov, Sean Paul, Marijn Suijten, linux-arm-msm,
freedreno, intel-xe, intel-gfx, dri-devel, louis.chauvet,
John Harrison
Only consider affected colorop states those that are part of an active
color pipeline or a pipeline that is about to be activated or
deactivated in the same atomic commit, i.e., colorop is in the chain of
old/new plane color pipeline property. To cover color_pipeline
deactivation, remove the condition for plane_state->color_pipeline.
Signed-off-by: Melissa Wen <mwen@igalia.com>
---
drivers/gpu/drm/drm_atomic.c | 59 +++++++++++++++++++++++++++++++++---
include/drm/drm_colorop.h | 3 ++
2 files changed, 57 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index 81591173265d..2e82c06166be 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -935,6 +935,57 @@ static int drm_atomic_plane_check(const struct drm_plane_state *old_plane_state,
return 0;
}
+/*
+ * This function walks old and new plane state color pipelines and adds all
+ * colorops in use by @plane to the atomic configuration @state. This is useful
+ * when an atomic commit needs to check all currently enabled or about to be
+ * enabled colorop on @plane, e.g. when changing the mode. This also avoids
+ * including colorop states that are not part of the atomic state.
+ *
+ * Returns:
+ * 0 on success or can fail with -EDEADLK or -ENOMEM. When the error is EDEADLK
+ * then the w/w mutex code has detected a deadlock and the entire atomic
+ * sequence must be restarted. All other errors are fatal.
+ */
+static int
+drm_atomic_add_pipeline_colorops(struct drm_atomic_commit *state,
+ struct drm_plane *plane)
+{
+ struct drm_colorop *colorop;
+ struct drm_colorop_state *colorop_state;
+ struct drm_plane_state *new_plane_state, *old_plane_state;
+
+ new_plane_state = drm_atomic_get_new_plane_state(state, plane);
+ old_plane_state = drm_atomic_get_old_plane_state(state, plane);
+
+ if (WARN_ON(!new_plane_state || !old_plane_state))
+ return -EINVAL;
+
+ drm_dbg_atomic(plane->dev,
+ "Adding old+new pipeline colorops for [PLANE:%d:%s]\n",
+ plane->base.id, plane->name);
+
+ drm_for_each_colorop_in_pipeline(colorop,
+ new_plane_state->color_pipeline) {
+ colorop_state = drm_atomic_get_colorop_state(state, colorop);
+ if (IS_ERR(colorop_state))
+ return PTR_ERR(colorop_state);
+ }
+
+ /* Same color pipeline as new; no point walking old. */
+ if (new_plane_state->color_pipeline == old_plane_state->color_pipeline)
+ return 0;
+
+ drm_for_each_colorop_in_pipeline(colorop,
+ old_plane_state->color_pipeline) {
+ colorop_state = drm_atomic_get_colorop_state(state, colorop);
+ if (IS_ERR(colorop_state))
+ return PTR_ERR(colorop_state);
+ }
+
+ return 0;
+}
+
static void drm_atomic_colorop_print_state(struct drm_printer *p,
const struct drm_colorop_state *state)
{
@@ -1746,11 +1797,9 @@ drm_atomic_add_affected_planes(struct drm_atomic_commit *state,
if (IS_ERR(plane_state))
return PTR_ERR(plane_state);
- if (plane_state->color_pipeline) {
- ret = drm_atomic_add_affected_colorops(state, plane);
- if (ret)
- return ret;
- }
+ ret = drm_atomic_add_pipeline_colorops(state, plane);
+ if (ret)
+ return ret;
}
return 0;
}
diff --git a/include/drm/drm_colorop.h b/include/drm/drm_colorop.h
index 26ef67c835e2..11a88e9477f1 100644
--- a/include/drm/drm_colorop.h
+++ b/include/drm/drm_colorop.h
@@ -583,6 +583,9 @@ static inline unsigned int drm_colorop_index(const struct drm_colorop *colorop)
#define drm_for_each_colorop(colorop, dev) \
list_for_each_entry(colorop, &(dev)->mode_config.colorop_list, head)
+#define drm_for_each_colorop_in_pipeline(colorop, pipeline) \
+ for ((colorop) = (pipeline); (colorop); (colorop) = (colorop)->next)
+
/**
* drm_get_colorop_type_name - return a string for colorop type
* @type: colorop type to compute name of
--
2.53.0
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v5 04/15] drm/amd/display: add plane to commit on KUnit cursor mode tests
2026-11-11 16:05 [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
` (2 preceding siblings ...)
2026-11-11 16:05 ` [PATCH v5 03/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
@ 2026-11-11 16:05 ` Melissa Wen
2026-11-11 16:05 ` [PATCH v5 05/15] drm/amd/display: only check colorops of an active color pipeline Melissa Wen
` (14 subsequent siblings)
18 siblings, 0 replies; 22+ messages in thread
From: Melissa Wen @ 2026-11-11 16:05 UTC (permalink / raw)
To: airlied, alexander.deucher, alex.hung, aurabindo.pillai,
christian.koenig, contact, daniels, harry.wentland,
maarten.lankhorst, mripard, mwen, sebastian.wick, simona,
siqueira, sunpeng.li, tzimmermann
Cc: Uma Shankar, Chaitanya Kumar Borah, Xaver Hugl, Pekka Paalanen,
Matthew Schwartz, amd-gfx, kernel-dev, Rob Clark,
Dmitry Baryshkov, Sean Paul, Marijn Suijten, linux-arm-msm,
freedreno, intel-xe, intel-gfx, dri-devel, louis.chauvet,
John Harrison
KUnit tests for cursor mode were also taking into account inactive
colorops where its color pipeline and plane state weren't active. Add
the plane state to the atomic commit state and activate the colorop
color pipeline by setting it to the plane state color_pipeline.
Signed-off-by: Melissa Wen <mwen@igalia.com>
---
.../amdgpu_dm/tests/amdgpu_dm_cursor_test.c | 49 +++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_cursor_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_cursor_test.c
index 2212451043fb..c1765dababe4 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_cursor_test.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_cursor_test.c
@@ -179,11 +179,43 @@ static void dm_test_add_cursor_mode_colorop(struct kunit *test,
fixture->state->colorops[0].ptr = colorop;
fixture->state->colorops[0].old_state = old_colorop_state;
fixture->state->colorops[0].new_state = new_colorop_state;
+ colorop->index = 0;
colorop->plane = fixture->primary;
old_colorop_state->colorop = colorop;
old_colorop_state->bypass = old_bypass;
new_colorop_state->colorop = colorop;
new_colorop_state->bypass = new_bypass;
+
+ /* Colorop needs to be part of an active plane color pipeline */
+ fixture->old_primary_state->color_pipeline = colorop;
+ fixture->primary_state->color_pipeline = colorop;
+}
+
+/* Add plane to atomic commit state and make pipeline active by setting it to
+ * old/new_state color pipeline.
+ */
+static void dm_test_add_plane_to_commit(struct kunit *test,
+ struct drm_atomic_commit *state,
+ struct drm_plane *plane,
+ struct drm_colorop *pipeline)
+{
+ struct drm_plane_state *old_state;
+ struct drm_plane_state *new_state;
+ unsigned int i = drm_plane_index(plane);
+
+ old_state = kunit_kzalloc(test, sizeof(*old_state), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, old_state);
+ new_state = kunit_kzalloc(test, sizeof(*new_state), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, new_state);
+
+ old_state->plane = plane;
+ old_state->color_pipeline = pipeline;
+ *new_state = *old_state;
+ new_state->state = state;
+
+ state->planes[i].ptr = plane;
+ state->planes[i].old_state = old_state;
+ state->planes[i].new_state = new_state;
}
static int dm_test_get_cursor_mode(struct dm_cursor_mode_fixture *fixture,
@@ -447,14 +479,21 @@ static void dm_test_plane_color_pipeline_active(struct kunit *test)
KUNIT_ASSERT_NOT_NULL(test, new_colorop_state);
plane = kunit_kzalloc(test, sizeof(*plane), GFP_KERNEL);
KUNIT_ASSERT_NOT_NULL(test, plane);
+ state->planes = kunit_kzalloc(test, sizeof(*state->planes), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, state->planes);
state->colorops = kunit_kzalloc(test, sizeof(*state->colorops), GFP_KERNEL);
KUNIT_ASSERT_NOT_NULL(test, state->colorops);
+ adev->ddev.mode_config.num_total_plane = 1;
adev->ddev.mode_config.num_colorop = 1;
state->dev = &adev->ddev;
+ plane->dev = &adev->ddev;
+ plane->index = 0;
+ dm_test_add_plane_to_commit(test, state, plane, colorop);
state->colorops[0].ptr = colorop;
state->colorops[0].old_state = old_colorop_state;
state->colorops[0].new_state = new_colorop_state;
+ colorop->index = 0;
colorop->plane = plane;
old_colorop_state->colorop = colorop;
old_colorop_state->bypass = true;
@@ -488,13 +527,23 @@ static void dm_test_plane_color_pipeline_ignores_other_plane(struct kunit *test)
KUNIT_ASSERT_NOT_NULL(test, colorop_plane);
other_plane = kunit_kzalloc(test, sizeof(*other_plane), GFP_KERNEL);
KUNIT_ASSERT_NOT_NULL(test, other_plane);
+ state->planes = kunit_kcalloc(test, 2, sizeof(*state->planes), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, state->planes);
state->colorops = kunit_kzalloc(test, sizeof(*state->colorops), GFP_KERNEL);
KUNIT_ASSERT_NOT_NULL(test, state->colorops);
+ adev->ddev.mode_config.num_total_plane = 2;
adev->ddev.mode_config.num_colorop = 1;
state->dev = &adev->ddev;
+ colorop_plane->dev = &adev->ddev;
+ colorop_plane->index = 0;
+ other_plane->dev = &adev->ddev;
+ other_plane->index = 1;
+ dm_test_add_plane_to_commit(test, state, colorop_plane, colorop);
+ dm_test_add_plane_to_commit(test, state, other_plane, NULL);
state->colorops[0].ptr = colorop;
state->colorops[0].new_state = colorop_state;
+ colorop->index = 0;
colorop->plane = colorop_plane;
colorop_state->colorop = colorop;
--
2.53.0
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v5 05/15] drm/amd/display: only check colorops of an active color pipeline
2026-11-11 16:05 [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
` (3 preceding siblings ...)
2026-11-11 16:05 ` [PATCH v5 04/15] drm/amd/display: add plane to commit on KUnit cursor mode tests Melissa Wen
@ 2026-11-11 16:05 ` Melissa Wen
2026-11-11 16:05 ` [PATCH v5 06/15] drm/atomic: reject colorop update from inactive " Melissa Wen
` (13 subsequent siblings)
18 siblings, 0 replies; 22+ messages in thread
From: Melissa Wen @ 2026-11-11 16:05 UTC (permalink / raw)
To: airlied, alexander.deucher, alex.hung, aurabindo.pillai,
christian.koenig, contact, daniels, harry.wentland,
maarten.lankhorst, mripard, mwen, sebastian.wick, simona,
siqueira, sunpeng.li, tzimmermann
Cc: Uma Shankar, Chaitanya Kumar Borah, Xaver Hugl, Pekka Paalanen,
Matthew Schwartz, amd-gfx, kernel-dev, Rob Clark,
Dmitry Baryshkov, Sean Paul, Marijn Suijten, linux-arm-msm,
freedreno, intel-xe, intel-gfx, dri-devel, louis.chauvet,
John Harrison, Sashiko
dm_plane_color_pipeline_active() iterates every colorop state in the
atomic commit, so colorops of a pipeline that userspace deactivated via
plane COLOR_PIPELINE are still taken into account, even though their
BYPASS property is irrelevant once the pipeline is off. Walk the color
pipeline of the plane state under evaluation instead, falling back to
the committed colorop state when a colorop isn't in the atomic commit.
Reported-by: Sashiko <sashiko-bot@kernel.org>
Fixes: d3a549f4df78 ("drm/amd/display: Use overlay cursor when color pipeline is active")
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Melissa Wen <mwen@igalia.com>
---
.../amd/display/amdgpu_dm/amdgpu_dm_cursor.c | 26 ++++++++++++++-----
1 file changed, 20 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_cursor.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_cursor.c
index 8204ad4018e6..a026610e81d9 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_cursor.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_cursor.c
@@ -236,14 +236,28 @@ STATIC_IFN_KUNIT bool dm_plane_color_pipeline_active(struct drm_atomic_commit *s
bool use_old)
{
struct drm_colorop *colorop;
- struct drm_colorop_state *old_colorop_state, *new_colorop_state;
- int i;
+ struct drm_colorop_state *cstate;
+ struct drm_plane_state *plane_state = use_old ?
+ drm_atomic_get_old_plane_state(state, plane) :
+ drm_atomic_get_new_plane_state(state, plane);
- for_each_oldnew_colorop_in_state(state, colorop, old_colorop_state, new_colorop_state, i) {
- struct drm_colorop_state *cstate = use_old ? old_colorop_state : new_colorop_state;
+ if (drm_WARN_ON(plane->dev, !plane_state))
+ return false;
- if (cstate->colorop->plane != plane)
- continue;
+ /*
+ * A commit may change only some colorops of a pipeline, and only those
+ * have old and new states here. Telling whether the pipeline modifies
+ * pixels requires every colorop of the selected pipeline, so fall back
+ * to the committed state of the untouched ones; it's both their old
+ * and new state.
+ */
+ drm_for_each_colorop_in_pipeline(colorop, plane_state->color_pipeline) {
+ cstate = use_old ?
+ drm_atomic_get_old_colorop_state(state, colorop) :
+ drm_atomic_get_new_colorop_state(state, colorop);
+
+ if (!cstate)
+ cstate = colorop->state;
if (!cstate->bypass)
return true;
}
--
2.53.0
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v5 06/15] drm/atomic: reject colorop update from inactive color pipeline
2026-11-11 16:05 [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
` (4 preceding siblings ...)
2026-11-11 16:05 ` [PATCH v5 05/15] drm/amd/display: only check colorops of an active color pipeline Melissa Wen
@ 2026-11-11 16:05 ` Melissa Wen
2026-11-11 16:05 ` [PATCH v5 07/15] drm/atomic: duplicate state of all colorops Melissa Wen
` (12 subsequent siblings)
18 siblings, 0 replies; 22+ messages in thread
From: Melissa Wen @ 2026-11-11 16:05 UTC (permalink / raw)
To: airlied, alexander.deucher, alex.hung, aurabindo.pillai,
christian.koenig, contact, daniels, harry.wentland,
maarten.lankhorst, mripard, mwen, sebastian.wick, simona,
siqueira, sunpeng.li, tzimmermann
Cc: Uma Shankar, Chaitanya Kumar Borah, Xaver Hugl, Pekka Paalanen,
Matthew Schwartz, amd-gfx, kernel-dev, Rob Clark,
Dmitry Baryshkov, Sean Paul, Marijn Suijten, linux-arm-msm,
freedreno, intel-xe, intel-gfx, dri-devel, louis.chauvet,
John Harrison
A colorop can only be changed while it is part of an active color
pipeline, or in the same commit that activates or deactivates that
pipeline. Enforce this contract by checking that the colorop belongs to
the color pipeline of a plane in its current, new or old state, and
rejecting the state change otherwise. Do the check in
drm_atomic_check_only() rather than when the colorop property is set, so
it doesn't depend on the order userspace sets properties within a
commit.
Link: https://lore.kernel.org/dri-devel/20260519211111.228303-1-mwen@igalia.com/
Suggested-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Melissa Wen <mwen@igalia.com>
---
drivers/gpu/drm/drm_atomic.c | 76 ++++++++++++++++++++++++++++++++++++
1 file changed, 76 insertions(+)
diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index 2e82c06166be..36c9550c2749 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -986,6 +986,71 @@ drm_atomic_add_pipeline_colorops(struct drm_atomic_commit *state,
return 0;
}
+/*
+ * drm_atomic_colorop_check - check new colorop state
+ * @new_colorop_state: new colorop state to check
+ *
+ * Ensure that the colorop in @new_colorop_state belongs to an active color
+ * pipeline, i.e. it's in the chain of colorops set to the color_pipeline
+ * property of current, old or new plane state.
+ *
+ * Userspace is allowed to finalize colorop's settings in the same commit that
+ * deactivates its pipeline, and the changes should persist for when that
+ * pipeline is reactivated later. So changes to colorop in the old plane
+ * state's pipeline are accepted even though it won't drive hardware updates.
+ *
+ * Skip this check for duplicated state, since all colorop states must persist
+ * in suspend/resume regardless of whether it belongs to an active color
+ * pipeline or not.
+ *
+ * Returns: 0 on success, -EINVAL otherwise.
+ */
+static int drm_atomic_colorop_check(const struct drm_colorop_state *new_colorop_state)
+{
+ struct drm_atomic_commit *state = new_colorop_state->state;
+ struct drm_plane *plane = new_colorop_state->colorop->plane;
+ struct drm_plane_state *new_plane_state, *old_plane_state;
+ struct drm_colorop *colorop;
+
+ if (state->duplicated)
+ return 0;
+
+ /* Not a plane colorop */
+ if (!plane)
+ return 0;
+
+ new_plane_state = drm_atomic_get_new_plane_state(state, plane);
+ old_plane_state = drm_atomic_get_old_plane_state(state, plane);
+
+ /* No changes in the plane state. Check current-committed plane state */
+ if (!new_plane_state) {
+ drm_for_each_colorop_in_pipeline(colorop, plane->state->color_pipeline)
+ if (colorop == new_colorop_state->colorop)
+ return 0;
+ return -EINVAL;
+ }
+
+ if (WARN_ON(!old_plane_state))
+ return -EINVAL;
+
+ /* Check if the colorop is active in the new plane state */
+ drm_for_each_colorop_in_pipeline(colorop, new_plane_state->color_pipeline)
+ if (colorop == new_colorop_state->colorop)
+ return 0;
+
+ /* Same color pipeline as new; no point walking old. Colorop isn't active */
+ if (new_plane_state->color_pipeline == old_plane_state->color_pipeline)
+ return -EINVAL;
+
+ /* Check if the colorop was active in the old plane state */
+ drm_for_each_colorop_in_pipeline(colorop, old_plane_state->color_pipeline)
+ if (colorop == new_colorop_state->colorop)
+ return 0;
+
+ /* Colorop is not part of an active color pipeline. */
+ return -EINVAL;
+}
+
static void drm_atomic_colorop_print_state(struct drm_printer *p,
const struct drm_colorop_state *state)
{
@@ -1869,6 +1934,8 @@ int drm_atomic_check_only(struct drm_atomic_commit *state)
struct drm_plane *plane;
struct drm_plane_state *old_plane_state;
struct drm_plane_state *new_plane_state;
+ struct drm_colorop *colorop;
+ struct drm_colorop_state *new_colorop_state;
struct drm_crtc *crtc;
struct drm_crtc_state *old_crtc_state;
struct drm_crtc_state *new_crtc_state;
@@ -1885,6 +1952,15 @@ int drm_atomic_check_only(struct drm_atomic_commit *state)
requested_crtc |= drm_crtc_mask(crtc);
}
+ for_each_new_colorop_in_state(state, colorop, new_colorop_state, i) {
+ ret = drm_atomic_colorop_check(new_colorop_state);
+ if (ret) {
+ drm_dbg_atomic(dev, "[COLOROP:%d:%d] isn't in an active color pipeline.\n",
+ colorop->base.id, colorop->type);
+ return ret;
+ }
+ }
+
for_each_oldnew_plane_in_state(state, plane, old_plane_state, new_plane_state, i) {
ret = drm_atomic_plane_check(old_plane_state, new_plane_state);
if (ret) {
--
2.53.0
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v5 07/15] drm/atomic: duplicate state of all colorops
2026-11-11 16:05 [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
` (5 preceding siblings ...)
2026-11-11 16:05 ` [PATCH v5 06/15] drm/atomic: reject colorop update from inactive " Melissa Wen
@ 2026-11-11 16:05 ` Melissa Wen
2026-11-11 17:38 ` sashiko-bot
2026-11-11 16:05 ` [PATCH v5 08/15] drm/atomic: check if an active colorop has a blob if its type requires one Melissa Wen
` (11 subsequent siblings)
18 siblings, 1 reply; 22+ messages in thread
From: Melissa Wen @ 2026-11-11 16:05 UTC (permalink / raw)
To: airlied, alexander.deucher, alex.hung, aurabindo.pillai,
christian.koenig, contact, daniels, harry.wentland,
maarten.lankhorst, mripard, mwen, sebastian.wick, simona,
siqueira, sunpeng.li, tzimmermann
Cc: Uma Shankar, Chaitanya Kumar Borah, Xaver Hugl, Pekka Paalanen,
Matthew Schwartz, amd-gfx, kernel-dev, Rob Clark,
Dmitry Baryshkov, Sean Paul, Marijn Suijten, linux-arm-msm,
freedreno, intel-xe, intel-gfx, dri-devel, louis.chauvet,
John Harrison
Userspace expects that colorop settings of an inactive color pipeline
persist, so that, when the color pipeline is activated again, preserves
the values they had when it was deactivated. Colorop setup is expected
to persist even during a suspend/resume. To snapshot colorop settings
correctly, duplicate state of all colorops in a given plane, regardless
of whether color pipeline is active. Depends on skipping
drm_atomic_colorop_check() for duplicated state done in previous commit.
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Melissa Wen <mwen@igalia.com>
---
drivers/gpu/drm/drm_atomic_helper.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index ccfe3840d505..60e69061faa9 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -3758,12 +3758,9 @@ drm_atomic_helper_duplicate_state(struct drm_device *dev,
goto free;
}
- if (plane_state->color_pipeline) {
- err = drm_atomic_add_affected_colorops(state, plane);
- if (err)
- goto free;
- }
-
+ err = drm_atomic_add_affected_colorops(state, plane);
+ if (err)
+ goto free;
}
drm_connector_list_iter_begin(dev, &conn_iter);
--
2.53.0
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v5 08/15] drm/atomic: check if an active colorop has a blob if its type requires one
2026-11-11 16:05 [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
` (6 preceding siblings ...)
2026-11-11 16:05 ` [PATCH v5 07/15] drm/atomic: duplicate state of all colorops Melissa Wen
@ 2026-11-11 16:05 ` Melissa Wen
2026-11-11 16:05 ` [PATCH v5 09/15] drm/amd/display: truly bypass plane colorop 3x4 matrix and hdr mult Melissa Wen
` (10 subsequent siblings)
18 siblings, 0 replies; 22+ messages in thread
From: Melissa Wen @ 2026-11-11 16:05 UTC (permalink / raw)
To: airlied, alexander.deucher, alex.hung, aurabindo.pillai,
christian.koenig, contact, daniels, harry.wentland,
maarten.lankhorst, mripard, mwen, sebastian.wick, simona,
siqueira, sunpeng.li, tzimmermann
Cc: Uma Shankar, Chaitanya Kumar Borah, Xaver Hugl, Pekka Paalanen,
Matthew Schwartz, amd-gfx, kernel-dev, Rob Clark,
Dmitry Baryshkov, Sean Paul, Marijn Suijten, linux-arm-msm,
freedreno, intel-xe, intel-gfx, dri-devel, louis.chauvet,
John Harrison
If colorop TYPE requires a data blob, userspace have to set a blob
whenever enables this colorop, i.e. when setting this colorop bypass
property to false. Clarify this in the documentation and reject the
atomic commit if colorop TYPE requires a DATA but set bypass to false
and no blob submitted.
Fixes: e5719e7f1900 ("drm/colorop: Add 3x4 CTM type")
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Melissa Wen <mwen@igalia.com>
---
drivers/gpu/drm/drm_atomic.c | 22 ++++++++++++++++++++--
drivers/gpu/drm/drm_colorop.c | 5 ++++-
include/drm/drm_colorop.h | 6 ++++--
3 files changed, 28 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index 36c9550c2749..d8b56fa47d45 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -990,8 +990,13 @@ drm_atomic_add_pipeline_colorops(struct drm_atomic_commit *state,
* drm_atomic_colorop_check - check new colorop state
* @new_colorop_state: new colorop state to check
*
- * Ensure that the colorop in @new_colorop_state belongs to an active color
- * pipeline, i.e. it's in the chain of colorops set to the color_pipeline
+ * Check that a colorop whose TYPE requires a data blob has one when it's
+ * enabled, i.e. userspace can't clear (or never set) the DATA property while
+ * taking the colorop out of bypass, since drivers would have nothing to
+ * program.
+ *
+ * Also ensure that the colorop in @new_colorop_state belongs to an active
+ * color pipeline, i.e. it's in the chain of colorops set to the color_pipeline
* property of current, old or new plane state.
*
* Userspace is allowed to finalize colorop's settings in the same commit that
@@ -1015,6 +1020,19 @@ static int drm_atomic_colorop_check(const struct drm_colorop_state *new_colorop_
if (state->duplicated)
return 0;
+ /*
+ * Reject if colorop TYPE requires a DATA but set bypass to false and
+ * no blob submitted
+ */
+ if (new_colorop_state->colorop->data_property &&
+ !new_colorop_state->bypass && !new_colorop_state->data) {
+ drm_dbg_atomic(new_colorop_state->colorop->dev,
+ "[COLOROP:%d:%d] enabled without a DATA blob\n",
+ new_colorop_state->colorop->base.id,
+ new_colorop_state->colorop->type);
+ return -EINVAL;
+ }
+
/* Not a plane colorop */
if (!plane)
return 0;
diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/drm_colorop.c
index 95da03d6c65c..842fd7dc31e6 100644
--- a/drivers/gpu/drm/drm_colorop.c
+++ b/drivers/gpu/drm/drm_colorop.c
@@ -55,7 +55,10 @@
* enumerated 1D curves, 1D LUTs, 3D LUTs, matrices, etc. See the
* &drm_colorop_type documentation for information on each type.
*
- * If a colorop advertises the BYPASS property it can be bypassed.
+ * If a colorop advertises the BYPASS property it can be bypassed. If a
+ * colorop advertises DATA and BYPASS properties, BYPASS can only be set to
+ * false if DATA contains a blob. An atomic commit that leaves such a
+ * colorop enabled without a blob will fail, returning -EINVAL.
*
* Information about colorop and color pipeline design decisions can be
* found at rfc/color_pipeline.rst, but note that this document will
diff --git a/include/drm/drm_colorop.h b/include/drm/drm_colorop.h
index 11a88e9477f1..952c30b06d83 100644
--- a/include/drm/drm_colorop.h
+++ b/include/drm/drm_colorop.h
@@ -283,8 +283,10 @@ struct drm_colorop_state {
/**
* @data:
*
- * Data blob for any TYPE that requires such a blob. The
- * interpretation of the blob is TYPE-specific.
+ * Data blob for any TYPE that requires such a blob. The interpretation
+ * of the blob is TYPE-specific. Whenever @bypass is false, @data must
+ * be provided; otherwise, the atomic check will reject an active
+ * colorop without a blob.
*
* See the &drm_colorop_type documentation for how blob is laid
* out.
--
2.53.0
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v5 09/15] drm/amd/display: truly bypass plane colorop 3x4 matrix and hdr mult
2026-11-11 16:05 [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
` (7 preceding siblings ...)
2026-11-11 16:05 ` [PATCH v5 08/15] drm/atomic: check if an active colorop has a blob if its type requires one Melissa Wen
@ 2026-11-11 16:05 ` Melissa Wen
2026-11-11 16:05 ` [PATCH v5 10/15] drm/amd/display: make shaper bypass mode cleaner Melissa Wen
` (9 subsequent siblings)
18 siblings, 0 replies; 22+ messages in thread
From: Melissa Wen @ 2026-11-11 16:05 UTC (permalink / raw)
To: airlied, alexander.deucher, alex.hung, aurabindo.pillai,
christian.koenig, contact, daniels, harry.wentland,
maarten.lankhorst, mripard, mwen, sebastian.wick, simona,
siqueira, sunpeng.li, tzimmermann
Cc: Uma Shankar, Chaitanya Kumar Borah, Xaver Hugl, Pekka Paalanen,
Matthew Schwartz, amd-gfx, kernel-dev, Rob Clark,
Dmitry Baryshkov, Sean Paul, Marijn Suijten, linux-arm-msm,
freedreno, intel-xe, intel-gfx, dri-devel, louis.chauvet,
John Harrison
Latent issue as the driver is currently just skipping programming 3x4
matrix and hdr multiplier blocks on bypass. Reset to default values if
the bypass property is set true.
Fixes: 16e0f785b87f ("drm/amd/display: add 3x4 matrix colorop")
Fixes: de0b0eb2e045 ("drm/amd/display: add multiplier colorop")
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Melissa Wen <mwen@igalia.com>
---
.../amd/display/amdgpu_dm/amdgpu_dm_color.c | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
index ebb05a20aa0c..59dfae5a4a26 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
@@ -1693,7 +1693,13 @@ __set_dm_plane_colorop_3x4_matrix(struct drm_plane_state *plane_state,
}
}
- if (colorop_state && !colorop_state->bypass && colorop->type == DRM_COLOROP_CTM_3X4) {
+ if (colorop_state && colorop->type == DRM_COLOROP_CTM_3X4) {
+ if (colorop_state->bypass) {
+ dc_plane_state->gamut_remap_matrix.enable_remap = false;
+ dc_plane_state->input_csc_color_matrix.enable_adjustment = false;
+ return 0;
+ }
+
drm_dbg(dev, "3x4 matrix colorop with ID: %d\n", colorop->base.id);
blob = colorop_state->data;
if (blob->length == sizeof(struct drm_color_ctm_3x4)) {
@@ -1733,9 +1739,13 @@ __set_dm_plane_colorop_multiplier(struct drm_plane_state *plane_state,
}
}
- if (colorop_state && !colorop_state->bypass && colorop->type == DRM_COLOROP_MULTIPLIER) {
- drm_dbg(dev, "Multiplier colorop with ID: %d\n", colorop->base.id);
- dc_plane_state->hdr_mult = amdgpu_dm_fixpt_from_s3132(colorop_state->multiplier);
+ if (colorop_state && colorop->type == DRM_COLOROP_MULTIPLIER) {
+ if (colorop_state->bypass) {
+ dc_plane_state->hdr_mult = dc_fixpt_one;
+ } else {
+ drm_dbg(dev, "Multiplier colorop with ID: %d\n", colorop->base.id);
+ dc_plane_state->hdr_mult = amdgpu_dm_fixpt_from_s3132(colorop_state->multiplier);
+ }
}
return 0;
--
2.53.0
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v5 10/15] drm/amd/display: make shaper bypass mode cleaner
2026-11-11 16:05 [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
` (8 preceding siblings ...)
2026-11-11 16:05 ` [PATCH v5 09/15] drm/amd/display: truly bypass plane colorop 3x4 matrix and hdr mult Melissa Wen
@ 2026-11-11 16:05 ` Melissa Wen
2026-11-11 16:05 ` [PATCH v5 11/15] drm/amd/display: make blnd bypass mode clearer Melissa Wen
` (8 subsequent siblings)
18 siblings, 0 replies; 22+ messages in thread
From: Melissa Wen @ 2026-11-11 16:05 UTC (permalink / raw)
To: airlied, alexander.deucher, alex.hung, aurabindo.pillai,
christian.koenig, contact, daniels, harry.wentland,
maarten.lankhorst, mripard, mwen, sebastian.wick, simona,
siqueira, sunpeng.li, tzimmermann
Cc: Uma Shankar, Chaitanya Kumar Borah, Xaver Hugl, Pekka Paalanen,
Matthew Schwartz, amd-gfx, kernel-dev, Rob Clark,
Dmitry Baryshkov, Sean Paul, Marijn Suijten, linux-arm-msm,
freedreno, intel-xe, intel-gfx, dri-devel, louis.chauvet,
John Harrison
Start shaper transfer function setup in bypass mode, i.e. tf->type ==
TF_TYPE_BYPASS and let the helper checks set it to a different mode
according to userspace request. It's aligned with current blend setup.
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Melissa Wen <mwen@igalia.com>
---
.../drm/amd/display/amdgpu_dm/amdgpu_dm_color.c | 15 +++++----------
1 file changed, 5 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
index 59dfae5a4a26..6455898e2da9 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
@@ -1766,10 +1766,12 @@ __set_dm_plane_colorop_shaper(struct drm_plane_state *plane_state,
struct dc_transfer_func *tf = &dc_plane_state->cm.shaper_func;
const struct drm_color_lut32 *shaper_lut;
struct drm_device *dev = colorop->dev;
- bool enabled = false;
u32 shaper_size;
int i = 0, ret = 0;
+ tf->type = TF_TYPE_BYPASS;
+ dc_plane_state->cm.flags.bits.shaper_enable = 0;
+
/* 1D Curve - SHAPER TF: find state */
old_colorop = colorop;
for_each_new_colorop_in_state(state, colorop, new_colorop_state, i) {
@@ -1803,7 +1805,7 @@ __set_dm_plane_colorop_shaper(struct drm_plane_state *plane_state,
ret = __set_output_tf(tf, 0, 0, false);
if (ret)
return ret;
- enabled = true;
+ dc_plane_state->cm.flags.bits.shaper_enable = 1;
}
if (lut_state && !lut_state->bypass) {
@@ -1819,17 +1821,10 @@ __set_dm_plane_colorop_shaper(struct drm_plane_state *plane_state,
ret = __set_output_tf_32(tf, shaper_lut, shaper_size, false);
if (ret)
return ret;
- enabled = true;
+ dc_plane_state->cm.flags.bits.shaper_enable = 1;
}
}
- if (!enabled) {
- tf->type = TF_TYPE_BYPASS;
- dc_plane_state->cm.flags.bits.shaper_enable = 0;
- } else {
- dc_plane_state->cm.flags.bits.shaper_enable = 1;
- }
-
return 0;
}
--
2.53.0
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v5 11/15] drm/amd/display: make blnd bypass mode clearer
2026-11-11 16:05 [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
` (9 preceding siblings ...)
2026-11-11 16:05 ` [PATCH v5 10/15] drm/amd/display: make shaper bypass mode cleaner Melissa Wen
@ 2026-11-11 16:05 ` Melissa Wen
2026-11-11 16:05 ` [PATCH v5 12/15] drm/amd/display: don't ignore failure on blend colorop setup Melissa Wen
` (7 subsequent siblings)
18 siblings, 0 replies; 22+ messages in thread
From: Melissa Wen @ 2026-11-11 16:05 UTC (permalink / raw)
To: airlied, alexander.deucher, alex.hung, aurabindo.pillai,
christian.koenig, contact, daniels, harry.wentland,
maarten.lankhorst, mripard, mwen, sebastian.wick, simona,
siqueira, sunpeng.li, tzimmermann
Cc: Uma Shankar, Chaitanya Kumar Borah, Xaver Hugl, Pekka Paalanen,
Matthew Schwartz, amd-gfx, kernel-dev, Rob Clark,
Dmitry Baryshkov, Sean Paul, Marijn Suijten, linux-arm-msm,
freedreno, intel-xe, intel-gfx, dri-devel, louis.chauvet,
John Harrison
If userspace set blnd colorop to bypass, AMD driver just skips blnd
transfer function configuration. Currently, this is not an issue since
dc plane state is a reset/default state, but it's not fully correct and
doesn't mirror shaper tf helper. Make bypass mode setup clear by
initially set tf->type as BYPASS and let the helper change its type
according to userspace requests.
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Melissa Wen <mwen@igalia.com>
---
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
index 6455898e2da9..686f718bd155 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
@@ -1938,6 +1938,7 @@ __set_dm_plane_colorop_blend(struct drm_plane_state *plane_state,
uint32_t blend_size = 0;
int i = 0;
+ tf->type = TF_TYPE_BYPASS;
dc_plane_state->cm.flags.bits.blend_enable = 0;
/* 1D Curve - BLND TF: find state */
--
2.53.0
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v5 12/15] drm/amd/display: don't ignore failure on blend colorop setup
2026-11-11 16:05 [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
` (10 preceding siblings ...)
2026-11-11 16:05 ` [PATCH v5 11/15] drm/amd/display: make blnd bypass mode clearer Melissa Wen
@ 2026-11-11 16:05 ` Melissa Wen
2026-11-11 16:05 ` [PATCH v5 13/15] drm/amd/display: allow individual colorop changes Melissa Wen
` (6 subsequent siblings)
18 siblings, 0 replies; 22+ messages in thread
From: Melissa Wen @ 2026-11-11 16:05 UTC (permalink / raw)
To: airlied, alexander.deucher, alex.hung, aurabindo.pillai,
christian.koenig, contact, daniels, harry.wentland,
maarten.lankhorst, mripard, mwen, sebastian.wick, simona,
siqueira, sunpeng.li, tzimmermann
Cc: Uma Shankar, Chaitanya Kumar Borah, Xaver Hugl, Pekka Paalanen,
Matthew Schwartz, amd-gfx, kernel-dev, Rob Clark,
Dmitry Baryshkov, Sean Paul, Marijn Suijten, linux-arm-msm,
freedreno, intel-xe, intel-gfx, dri-devel, louis.chauvet,
John Harrison, Sashiko
__set_input_tf_32() can fail on ENOMEM and let the blend transfer
function setup in an unstable state. Check its return value and only
enable blend if transfer function was successfully configured.
Reported-by: Sashiko <sashiko-bot@kernel.org>
Fixes: 5ed78b44e4e6 ("drm/amd/display: add shaper and blend colorops for 1D Curve Custom LUT")
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Melissa Wen <mwen@igalia.com>
---
.../drm/amd/display/amdgpu_dm/amdgpu_dm_color.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
index 686f718bd155..f53228072fc8 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
@@ -1936,7 +1936,7 @@ __set_dm_plane_colorop_blend(struct drm_plane_state *plane_state,
const struct drm_color_lut32 *blend_lut = NULL;
struct drm_device *dev = colorop->dev;
uint32_t blend_size = 0;
- int i = 0;
+ int i = 0, ret;
tf->type = TF_TYPE_BYPASS;
dc_plane_state->cm.flags.bits.blend_enable = 0;
@@ -1971,8 +1971,10 @@ __set_dm_plane_colorop_blend(struct drm_plane_state *plane_state,
tf->type = TF_TYPE_DISTRIBUTED_POINTS;
tf->tf = default_tf = amdgpu_colorop_tf_to_dc_tf(tf_state->curve_1d_type);
tf->sdr_ref_white_level = SDR_WHITE_LEVEL_INIT_VALUE;
+ ret = __set_input_tf_32(NULL, tf, blend_lut, blend_size);
+ if (ret)
+ return ret;
dc_plane_state->cm.flags.bits.blend_enable = 1;
- __set_input_tf_32(NULL, tf, blend_lut, blend_size);
}
if (lut_state && !lut_state->bypass) {
@@ -1980,13 +1982,16 @@ __set_dm_plane_colorop_blend(struct drm_plane_state *plane_state,
tf->type = TF_TYPE_DISTRIBUTED_POINTS;
tf->tf = default_tf;
tf->sdr_ref_white_level = SDR_WHITE_LEVEL_INIT_VALUE;
- dc_plane_state->cm.flags.bits.blend_enable = 1;
blend_lut = __extract_blob_lut32(lut_state->data, &blend_size);
blend_size = blend_lut != NULL ? blend_size : 0;
/* Custom LUT size must be the same as supported size */
- if (blend_size == lut_colorop->size)
- __set_input_tf_32(NULL, tf, blend_lut, blend_size);
+ if (blend_size == lut_colorop->size) {
+ ret = __set_input_tf_32(NULL, tf, blend_lut, blend_size);
+ if (ret)
+ return ret;
+ dc_plane_state->cm.flags.bits.blend_enable = 1;
+ }
}
return 0;
--
2.53.0
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v5 13/15] drm/amd/display: allow individual colorop changes
2026-11-11 16:05 [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
` (11 preceding siblings ...)
2026-11-11 16:05 ` [PATCH v5 12/15] drm/amd/display: don't ignore failure on blend colorop setup Melissa Wen
@ 2026-11-11 16:05 ` Melissa Wen
2026-11-11 16:05 ` [PATCH v5 14/15] drm/atomic: make drm_atomic_add_affected_colorops() static Melissa Wen
` (5 subsequent siblings)
18 siblings, 0 replies; 22+ messages in thread
From: Melissa Wen @ 2026-11-11 16:05 UTC (permalink / raw)
To: airlied, alexander.deucher, alex.hung, aurabindo.pillai,
christian.koenig, contact, daniels, harry.wentland,
maarten.lankhorst, mripard, mwen, sebastian.wick, simona,
siqueira, sunpeng.li, tzimmermann
Cc: Uma Shankar, Chaitanya Kumar Borah, Xaver Hugl, Pekka Paalanen,
Matthew Schwartz, amd-gfx, kernel-dev, Rob Clark,
Dmitry Baryshkov, Sean Paul, Marijn Suijten, linux-arm-msm,
freedreno, intel-xe, intel-gfx, dri-devel, louis.chauvet,
John Harrison
If userspace modifies a single property of a colorop but doesn't
resubmit the entire color pipeline, the other colorops will not be
present in the commit; consequently, on plane recreation, the system
would silently fall back to the legacy color path instead of maintaining
the previously applied settings. Commit 20331505df9c ("drm/amd/display:
pull colorops into state when recreating a plane") addresses this issue
by ensuring that all colorops associated with a plane are included in
the commit whenever that plane is recreated, because at this point, only
new colorop states were taken into account in an atomic commit.
Use the committed state of a colorop within the active color pipeline
when the commit doesn't introduce a new state for it. A colorop that is
not included in the commit remains unchanged; therefore, its committed
state is also its new state. Consequently, remove the call to
drm_atomic_add_affected_colorops() from dm_update_plane_state(), since a
duplicated colorop state would just contain those same,
already-committed values. Also fix AMD KUnit color test accordingly.
Fixes: 9ba25915efba ("drm/amd/display: Add support for sRGB EOTF in DEGAM block")
Signed-off-by: Melissa Wen <mwen@igalia.com>
---
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 13 --
.../amd/display/amdgpu_dm/amdgpu_dm_color.c | 213 +++++++-----------
.../amdgpu_dm/tests/amdgpu_dm_color_test.c | 15 +-
3 files changed, 92 insertions(+), 149 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index 0ea45ab12119..4d6a965d2b6b 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -6048,19 +6048,6 @@ dm_update_plane_state(struct dc *dc,
if (ret)
goto out;
- /*
- * Recreating the plane re-derives its DC color pipeline from the
- * colorop states in this commit. Pull the plane's colorops in so
- * the derivation sees the current pipeline; otherwise every stage
- * silently defaults to bypass (dropping YUV->RGB, shaper, 3D LUT
- * and regamma) when userspace didn't touch color in this commit.
- */
- if (new_plane_state->color_pipeline) {
- ret = drm_atomic_add_affected_colorops(state, plane);
- if (ret)
- goto out;
- }
-
WARN_ON(dm_new_plane_state->dc_state);
dc_new_plane_state = dc_create_plane_state(dc);
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
index f53228072fc8..7332c8874397 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
@@ -1592,21 +1592,14 @@ __set_dm_plane_colorop_fixed_matrix(struct drm_plane_state *plane_state,
struct dc_plane_state *dc_plane_state,
struct drm_colorop *colorop)
{
- struct drm_colorop *old_colorop;
- struct drm_colorop_state *colorop_state = NULL, *new_colorop_state;
+ struct drm_colorop_state *colorop_state = NULL;
struct drm_atomic_commit *state = plane_state->state;
- int i = 0;
-
- old_colorop = colorop;
-
- for_each_new_colorop_in_state(state, colorop, new_colorop_state, i) {
- if (new_colorop_state->colorop == old_colorop) {
- colorop_state = new_colorop_state;
- break;
- }
- }
+ colorop_state = drm_atomic_get_new_colorop_state(state, colorop);
if (!colorop_state)
+ colorop_state = colorop->state;
+
+ if (colorop->type != DRM_COLOROP_FIXED_MATRIX)
return -EINVAL;
if (colorop_state->bypass) {
@@ -1647,24 +1640,13 @@ __set_dm_plane_colorop_degamma(struct drm_plane_state *plane_state,
struct dc_plane_state *dc_plane_state,
struct drm_colorop *colorop)
{
- struct drm_colorop *old_colorop;
- struct drm_colorop_state *colorop_state = NULL, *new_colorop_state;
+ struct drm_colorop_state *colorop_state;
struct drm_atomic_commit *state = plane_state->state;
- int i = 0;
-
- old_colorop = colorop;
/* 1st op: 1d curve - degamma */
- for_each_new_colorop_in_state(state, colorop, new_colorop_state, i) {
- if (new_colorop_state->colorop == old_colorop &&
- (BIT(new_colorop_state->curve_1d_type) & amdgpu_dm_supported_degam_tfs)) {
- colorop_state = new_colorop_state;
- break;
- }
- }
-
+ colorop_state = drm_atomic_get_new_colorop_state(state, colorop);
if (!colorop_state)
- return -EINVAL;
+ colorop_state = colorop->state;
return __set_colorop_in_tf_1d_curve(dc_plane_state, colorop_state);
}
@@ -1675,43 +1657,37 @@ __set_dm_plane_colorop_3x4_matrix(struct drm_plane_state *plane_state,
struct dc_plane_state *dc_plane_state,
struct drm_colorop *colorop)
{
- struct drm_colorop *old_colorop;
- struct drm_colorop_state *colorop_state = NULL, *new_colorop_state;
+ struct drm_colorop_state *colorop_state;
struct drm_atomic_commit *state = plane_state->state;
const struct drm_device *dev = colorop->dev;
const struct drm_property_blob *blob;
struct drm_color_ctm_3x4 *ctm = NULL;
- int i = 0;
/* 3x4 matrix */
- old_colorop = colorop;
- for_each_new_colorop_in_state(state, colorop, new_colorop_state, i) {
- if (new_colorop_state->colorop == old_colorop &&
- new_colorop_state->colorop->type == DRM_COLOROP_CTM_3X4) {
- colorop_state = new_colorop_state;
- break;
- }
+ colorop_state = drm_atomic_get_new_colorop_state(state, colorop);
+ if (!colorop_state)
+ colorop_state = colorop->state;
+
+ if (colorop->type != DRM_COLOROP_CTM_3X4)
+ return -EINVAL;
+
+ if (colorop_state->bypass) {
+ dc_plane_state->gamut_remap_matrix.enable_remap = false;
+ dc_plane_state->input_csc_color_matrix.enable_adjustment = false;
+ return 0;
}
- if (colorop_state && colorop->type == DRM_COLOROP_CTM_3X4) {
- if (colorop_state->bypass) {
- dc_plane_state->gamut_remap_matrix.enable_remap = false;
- dc_plane_state->input_csc_color_matrix.enable_adjustment = false;
- return 0;
- }
-
- drm_dbg(dev, "3x4 matrix colorop with ID: %d\n", colorop->base.id);
- blob = colorop_state->data;
- if (blob->length == sizeof(struct drm_color_ctm_3x4)) {
- ctm = (struct drm_color_ctm_3x4 *) blob->data;
- __drm_ctm_3x4_to_dc_matrix(ctm, dc_plane_state->gamut_remap_matrix.matrix);
- dc_plane_state->gamut_remap_matrix.enable_remap = true;
- dc_plane_state->input_csc_color_matrix.enable_adjustment = false;
- } else {
- drm_warn(dev, "blob->length (%zu) isn't equal to drm_color_ctm_3x4 (%zu)\n",
- blob->length, sizeof(struct drm_color_ctm_3x4));
- return -EINVAL;
- }
+ drm_dbg(dev, "3x4 matrix colorop with ID: %d\n", colorop->base.id);
+ blob = colorop_state->data;
+ if (blob->length == sizeof(struct drm_color_ctm_3x4)) {
+ ctm = (struct drm_color_ctm_3x4 *) blob->data;
+ __drm_ctm_3x4_to_dc_matrix(ctm, dc_plane_state->gamut_remap_matrix.matrix);
+ dc_plane_state->gamut_remap_matrix.enable_remap = true;
+ dc_plane_state->input_csc_color_matrix.enable_adjustment = false;
+ } else {
+ drm_warn(dev, "blob->length (%zu) isn't equal to drm_color_ctm_3x4 (%zu)\n",
+ blob->length, sizeof(struct drm_color_ctm_3x4));
+ return -EINVAL;
}
return 0;
@@ -1723,29 +1699,23 @@ __set_dm_plane_colorop_multiplier(struct drm_plane_state *plane_state,
struct dc_plane_state *dc_plane_state,
struct drm_colorop *colorop)
{
- struct drm_colorop *old_colorop;
- struct drm_colorop_state *colorop_state = NULL, *new_colorop_state;
+ struct drm_colorop_state *colorop_state;
struct drm_atomic_commit *state = plane_state->state;
const struct drm_device *dev = colorop->dev;
- int i = 0;
/* Multiplier */
- old_colorop = colorop;
- for_each_new_colorop_in_state(state, colorop, new_colorop_state, i) {
- if (new_colorop_state->colorop == old_colorop &&
- new_colorop_state->colorop->type == DRM_COLOROP_MULTIPLIER) {
- colorop_state = new_colorop_state;
- break;
- }
- }
+ colorop_state = drm_atomic_get_new_colorop_state(state, colorop);
+ if (!colorop_state)
+ colorop_state = colorop->state;
- if (colorop_state && colorop->type == DRM_COLOROP_MULTIPLIER) {
- if (colorop_state->bypass) {
- dc_plane_state->hdr_mult = dc_fixpt_one;
- } else {
- drm_dbg(dev, "Multiplier colorop with ID: %d\n", colorop->base.id);
- dc_plane_state->hdr_mult = amdgpu_dm_fixpt_from_s3132(colorop_state->multiplier);
- }
+ if (colorop->type != DRM_COLOROP_MULTIPLIER)
+ return -EINVAL;
+
+ if (colorop_state->bypass) {
+ dc_plane_state->hdr_mult = dc_fixpt_one;
+ } else {
+ drm_dbg(dev, "Multiplier colorop with ID: %d\n", colorop->base.id);
+ dc_plane_state->hdr_mult = amdgpu_dm_fixpt_from_s3132(colorop_state->multiplier);
}
return 0;
@@ -1757,8 +1727,6 @@ __set_dm_plane_colorop_shaper(struct drm_plane_state *plane_state,
struct dc_plane_state *dc_plane_state,
struct drm_colorop *colorop)
{
- struct drm_colorop *old_colorop;
- struct drm_colorop_state *new_colorop_state;
struct drm_colorop_state *tf_state = NULL, *lut_state = NULL;
struct drm_atomic_commit *state = plane_state->state;
struct drm_colorop *lut_colorop;
@@ -1767,38 +1735,32 @@ __set_dm_plane_colorop_shaper(struct drm_plane_state *plane_state,
const struct drm_color_lut32 *shaper_lut;
struct drm_device *dev = colorop->dev;
u32 shaper_size;
- int i = 0, ret = 0;
+ int ret = 0;
tf->type = TF_TYPE_BYPASS;
dc_plane_state->cm.flags.bits.shaper_enable = 0;
/* 1D Curve - SHAPER TF: find state */
- old_colorop = colorop;
- for_each_new_colorop_in_state(state, colorop, new_colorop_state, i) {
- if (new_colorop_state->colorop == old_colorop &&
- (BIT(new_colorop_state->curve_1d_type) & amdgpu_dm_supported_shaper_tfs)) {
- tf_state = new_colorop_state;
- break;
- }
- }
+ if (colorop->type != DRM_COLOROP_1D_CURVE)
+ return -EINVAL;
+
+ tf_state = drm_atomic_get_new_colorop_state(state, colorop);
+ if (!tf_state)
+ tf_state = colorop->state;
/* 1D LUT - SHAPER LUT: find state */
- lut_colorop = old_colorop->next;
- if (!lut_colorop) {
+ lut_colorop = colorop->next;
+ if (!lut_colorop || lut_colorop->type != DRM_COLOROP_1D_LUT) {
drm_dbg(dev, "no Shaper LUT colorop found\n");
return -EINVAL;
}
- for_each_new_colorop_in_state(state, colorop, new_colorop_state, i) {
- if (new_colorop_state->colorop == lut_colorop &&
- new_colorop_state->colorop->type == DRM_COLOROP_1D_LUT) {
- lut_state = new_colorop_state;
- break;
- }
- }
+ lut_state = drm_atomic_get_new_colorop_state(state, lut_colorop);
+ if (!lut_state)
+ lut_state = lut_colorop->state;
- if (tf_state && !tf_state->bypass) {
- drm_dbg(dev, "Shaper TF colorop with ID: %d\n", old_colorop->base.id);
+ if (!tf_state->bypass) {
+ drm_dbg(dev, "Shaper TF colorop with ID: %d\n", colorop->base.id);
tf->type = TF_TYPE_DISTRIBUTED_POINTS;
tf->tf = default_tf = amdgpu_colorop_tf_to_dc_tf(tf_state->curve_1d_type);
tf->sdr_ref_white_level = SDR_WHITE_LEVEL_INIT_VALUE;
@@ -1808,7 +1770,7 @@ __set_dm_plane_colorop_shaper(struct drm_plane_state *plane_state,
dc_plane_state->cm.flags.bits.shaper_enable = 1;
}
- if (lut_state && !lut_state->bypass) {
+ if (!lut_state->bypass) {
drm_dbg(dev, "Shaper LUT colorop with ID: %d\n", lut_colorop->base.id);
tf->type = TF_TYPE_DISTRIBUTED_POINTS;
tf->tf = default_tf;
@@ -1865,8 +1827,7 @@ __set_dm_plane_colorop_3dlut(struct drm_plane_state *plane_state,
struct dc_plane_state *dc_plane_state,
struct drm_colorop *colorop)
{
- struct drm_colorop *old_colorop;
- struct drm_colorop_state *colorop_state = NULL, *new_colorop_state;
+ struct drm_colorop_state *colorop_state;
struct dc_transfer_func *tf = &dc_plane_state->cm.shaper_func;
struct drm_atomic_commit *state = plane_state->state;
const struct amdgpu_device *adev = drm_to_adev(colorop->dev);
@@ -1874,19 +1835,17 @@ __set_dm_plane_colorop_3dlut(struct drm_plane_state *plane_state,
const struct drm_device *dev = colorop->dev;
const struct drm_color_lut32 *lut3d;
uint32_t lut3d_size;
- int i = 0, ret = 0;
+ int ret = 0;
/* 3D LUT */
- old_colorop = colorop;
- for_each_new_colorop_in_state(state, colorop, new_colorop_state, i) {
- if (new_colorop_state->colorop == old_colorop &&
- new_colorop_state->colorop->type == DRM_COLOROP_3D_LUT) {
- colorop_state = new_colorop_state;
- break;
- }
- }
+ colorop_state = drm_atomic_get_new_colorop_state(state, colorop);
+ if (!colorop_state)
+ colorop_state = colorop->state;
- if (colorop_state && !colorop_state->bypass && colorop->type == DRM_COLOROP_3D_LUT) {
+ if (colorop->type != DRM_COLOROP_3D_LUT)
+ return -EINVAL;
+
+ if (!colorop_state->bypass) {
if (!has_3dlut) {
drm_dbg(dev, "3D LUT is not supported by hardware\n");
return -EINVAL;
@@ -1926,8 +1885,6 @@ __set_dm_plane_colorop_blend(struct drm_plane_state *plane_state,
struct dc_plane_state *dc_plane_state,
struct drm_colorop *colorop)
{
- struct drm_colorop *old_colorop;
- struct drm_colorop_state *new_colorop_state;
struct drm_colorop_state *tf_state = NULL, *lut_state = NULL;
struct drm_atomic_commit *state = plane_state->state;
struct drm_colorop *lut_colorop;
@@ -1936,38 +1893,32 @@ __set_dm_plane_colorop_blend(struct drm_plane_state *plane_state,
const struct drm_color_lut32 *blend_lut = NULL;
struct drm_device *dev = colorop->dev;
uint32_t blend_size = 0;
- int i = 0, ret;
+ int ret;
tf->type = TF_TYPE_BYPASS;
dc_plane_state->cm.flags.bits.blend_enable = 0;
/* 1D Curve - BLND TF: find state */
- old_colorop = colorop;
- for_each_new_colorop_in_state(state, colorop, new_colorop_state, i) {
- if (new_colorop_state->colorop == old_colorop &&
- (BIT(new_colorop_state->curve_1d_type) & amdgpu_dm_supported_blnd_tfs)) {
- tf_state = new_colorop_state;
- break;
- }
- }
+ if (colorop->type != DRM_COLOROP_1D_CURVE)
+ return -EINVAL;
+
+ tf_state = drm_atomic_get_new_colorop_state(state, colorop);
+ if (!tf_state)
+ tf_state = colorop->state;
/* 1D LUT - BLND LUT: find state */
- lut_colorop = old_colorop->next;
- if (!lut_colorop) {
+ lut_colorop = colorop->next;
+ if (!lut_colorop || lut_colorop->type != DRM_COLOROP_1D_LUT) {
drm_dbg(dev, "no Blend LUT colorop found\n");
return -EINVAL;
}
- for_each_new_colorop_in_state(state, colorop, new_colorop_state, i) {
- if (new_colorop_state->colorop == lut_colorop &&
- new_colorop_state->colorop->type == DRM_COLOROP_1D_LUT) {
- lut_state = new_colorop_state;
- break;
- }
- }
+ lut_state = drm_atomic_get_new_colorop_state(state, lut_colorop);
+ if (!lut_state)
+ lut_state = lut_colorop->state;
- if (tf_state && !tf_state->bypass) {
- drm_dbg(dev, "Blend TF colorop with ID: %d\n", old_colorop->base.id);
+ if (!tf_state->bypass) {
+ drm_dbg(dev, "Blend TF colorop with ID: %d\n", colorop->base.id);
tf->type = TF_TYPE_DISTRIBUTED_POINTS;
tf->tf = default_tf = amdgpu_colorop_tf_to_dc_tf(tf_state->curve_1d_type);
tf->sdr_ref_white_level = SDR_WHITE_LEVEL_INIT_VALUE;
@@ -1977,7 +1928,7 @@ __set_dm_plane_colorop_blend(struct drm_plane_state *plane_state,
dc_plane_state->cm.flags.bits.blend_enable = 1;
}
- if (lut_state && !lut_state->bypass) {
+ if (!lut_state->bypass) {
drm_dbg(dev, "Blend LUT colorop with ID: %d\n", lut_colorop->base.id);
tf->type = TF_TYPE_DISTRIBUTED_POINTS;
tf->tf = default_tf;
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_color_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_color_test.c
index d2ae35bf550f..8e00da61a04b 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_color_test.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_color_test.c
@@ -1847,8 +1847,9 @@ struct dm_test_colorop_fixture {
* @test: KUnit test context
* @type: colorop type to assign
*
- * Fabricates a minimal drm_atomic_commit with one colorop slot so that
- * for_each_new_colorop_in_state() finds exactly the colorop under test.
+ * Fabricates a minimal drm_atomic_commit with the colorop in the only colorop
+ * slot (index 0), so that drm_atomic_get_new_colorop_state() returns its new
+ * state.
*
* Returns: a populated fixture (by value).
*/
@@ -1865,6 +1866,7 @@ dm_test_colorop_setup(struct kunit *test, enum drm_colorop_type type)
f.colorop = kunit_kzalloc(test, sizeof(*f.colorop), GFP_KERNEL);
KUNIT_ASSERT_NOT_NULL(test, f.colorop);
f.colorop->dev = &f.adev->ddev;
+ f.colorop->index = 0;
f.colorop->type = type;
f.colorop_state = kunit_kzalloc(test, sizeof(*f.colorop_state), GFP_KERNEL);
@@ -1911,8 +1913,10 @@ static void dm_test_colorop_multiplier_applied(struct kunit *test)
}
/**
- * dm_test_colorop_multiplier_no_match - Non-multiplier colorop leaves hdr_mult untouched
+ * dm_test_colorop_multiplier_no_match - Non-multiplier colorop: return -EINVAL.
* @test: KUnit test context
+ *
+ * left hdr_mult untouched
*/
static void dm_test_colorop_multiplier_no_match(struct kunit *test)
{
@@ -1923,7 +1927,7 @@ static void dm_test_colorop_multiplier_no_match(struct kunit *test)
KUNIT_EXPECT_EQ(test,
__set_dm_plane_colorop_multiplier(f.plane_state, f.dc_plane_state, f.colorop),
- 0);
+ -EINVAL);
KUNIT_EXPECT_EQ(test, f.dc_plane_state->hdr_mult.value, 0LL);
}
@@ -2414,7 +2418,7 @@ static void dm_test_update_plane_color_mgmt_plane_ctm(struct kunit *test)
* dm_test_colorop_pipeline_add - append one colorop to a fabricated pipeline
* @test: KUnit test context
* @f: color update fixture that owns the atomic state
- * @index: colorop array index to populate
+ * @index: colorop array index to populate, also used as the colorop index
* @type: colorop type
* @curve_1d_type: 1D curve type for DRM_COLOROP_1D_CURVE states
* @bypass: bypass flag for the new colorop state
@@ -2434,6 +2438,7 @@ dm_test_colorop_pipeline_add(struct kunit *test,
colorop = kunit_kzalloc(test, sizeof(*colorop), GFP_KERNEL);
KUNIT_ASSERT_NOT_NULL(test, colorop);
colorop->dev = &f->adev->ddev;
+ colorop->index = index;
colorop->type = type;
colorop->size = MAX_COLOR_LUT_ENTRIES;
--
2.53.0
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v5 14/15] drm/atomic: make drm_atomic_add_affected_colorops() static
2026-11-11 16:05 [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
` (12 preceding siblings ...)
2026-11-11 16:05 ` [PATCH v5 13/15] drm/amd/display: allow individual colorop changes Melissa Wen
@ 2026-11-11 16:05 ` Melissa Wen
2026-11-11 16:05 ` [PATCH v5 15/15] drm/amd/display: distinguish colorop setup error from no colorop support Melissa Wen
` (4 subsequent siblings)
18 siblings, 0 replies; 22+ messages in thread
From: Melissa Wen @ 2026-11-11 16:05 UTC (permalink / raw)
To: airlied, alexander.deucher, alex.hung, aurabindo.pillai,
christian.koenig, contact, daniels, harry.wentland,
maarten.lankhorst, mripard, mwen, sebastian.wick, simona,
siqueira, sunpeng.li, tzimmermann
Cc: Uma Shankar, Chaitanya Kumar Borah, Xaver Hugl, Pekka Paalanen,
Matthew Schwartz, amd-gfx, kernel-dev, Rob Clark,
Dmitry Baryshkov, Sean Paul, Marijn Suijten, linux-arm-msm,
freedreno, intel-xe, intel-gfx, dri-devel, louis.chauvet,
John Harrison
After refactoring the AMD colorop state lifetime,
drm_atomic_add_affected_colorops() is no longer used anywhere but
drm_atomic_duplicate_state. Move this helper to drm_atomic_helper.c,
make it static and rename to duplicate_plane_colorops for clarity.
Signed-off-by: Melissa Wen <mwen@igalia.com>
---
drivers/gpu/drm/drm_atomic.c | 46 -------------------------
drivers/gpu/drm/drm_atomic_helper.c | 52 ++++++++++++++++++++++++++++-
include/drm/drm_atomic.h | 4 ---
3 files changed, 51 insertions(+), 51 deletions(-)
diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index d8b56fa47d45..821e05eb232a 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -1888,52 +1888,6 @@ drm_atomic_add_affected_planes(struct drm_atomic_commit *state,
}
EXPORT_SYMBOL(drm_atomic_add_affected_planes);
-/**
- * drm_atomic_add_affected_colorops - add colorops for plane
- * @state: atomic state
- * @plane: DRM plane
- *
- * This function walks the current configuration and adds all colorops
- * currently used by @plane to the atomic configuration @state. This is useful
- * when an atomic commit also needs to check all currently enabled colorop on
- * @plane, e.g. when changing the mode. It's also useful when re-enabling a plane
- * to avoid special code to force-enable all colorops.
- *
- * Since acquiring a colorop state will always also acquire the w/w mutex of the
- * current plane for that colorop (if there is any) adding all the colorop states for
- * a plane will not reduce parallelism of atomic updates.
- *
- * Returns:
- * 0 on success or can fail with -EDEADLK or -ENOMEM. When the error is EDEADLK
- * then the w/w mutex code has detected a deadlock and the entire atomic
- * sequence must be restarted. All other errors are fatal.
- */
-int
-drm_atomic_add_affected_colorops(struct drm_atomic_commit *state,
- struct drm_plane *plane)
-{
- struct drm_colorop *colorop;
- struct drm_colorop_state *colorop_state;
-
- WARN_ON(!drm_atomic_get_new_plane_state(state, plane));
-
- drm_dbg_atomic(plane->dev,
- "Adding all current colorops for [PLANE:%d:%s] to %p\n",
- plane->base.id, plane->name, state);
-
- drm_for_each_colorop(colorop, plane->dev) {
- if (colorop->plane != plane)
- continue;
-
- colorop_state = drm_atomic_get_colorop_state(state, colorop);
- if (IS_ERR(colorop_state))
- return PTR_ERR(colorop_state);
- }
-
- return 0;
-}
-EXPORT_SYMBOL(drm_atomic_add_affected_colorops);
-
/**
* drm_atomic_check_only - check whether a given config would work
* @state: atomic configuration to check
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index 60e69061faa9..358b89e93620 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -3697,6 +3697,56 @@ void drm_atomic_helper_shutdown(struct drm_device *dev)
}
EXPORT_SYMBOL(drm_atomic_helper_shutdown);
+/*
+ * duplicate_plane_colorops - add colorops for plane
+ * @state: atomic state
+ * @plane: DRM plane
+ *
+ * Add the state of each colorop of a given @plane to @state, including
+ * colorops from color pipelines that are not currently active. This duplicated
+ * state is used to restore the hardware state later; furthermore, the
+ * drm_atomic_helper_resume() function, for instance, resets all colorop
+ * states before committing it, and any colorop that is omitted would lose its
+ * settings.
+ *
+ * Use this only in duplicated states: the drm_atomic_check_only() function
+ * rejects colorops from a pipeline that the atomic commit is neither enabling
+ * nor disabling it; this check is only bypassed when state->duplicated is set.
+ *
+ * Since acquiring a colorop state will always also acquire the w/w mutex of the
+ * current plane for that colorop (if there is any) adding all the colorop states for
+ * a plane will not reduce parallelism of atomic updates.
+ *
+ * Returns:
+ * 0 on success or can fail with -EDEADLK or -ENOMEM. When the error is EDEADLK
+ * then the w/w mutex code has detected a deadlock and the entire atomic
+ * sequence must be restarted. All other errors are fatal.
+ */
+static int
+duplicate_plane_colorops(struct drm_atomic_commit *state,
+ struct drm_plane *plane)
+{
+ struct drm_colorop *colorop;
+ struct drm_colorop_state *colorop_state;
+
+ WARN_ON(!drm_atomic_get_new_plane_state(state, plane));
+
+ drm_dbg_atomic(plane->dev,
+ "Adding all colorops for [PLANE:%d:%s] to %p\n",
+ plane->base.id, plane->name, state);
+
+ drm_for_each_colorop(colorop, plane->dev) {
+ if (colorop->plane != plane)
+ continue;
+
+ colorop_state = drm_atomic_get_colorop_state(state, colorop);
+ if (IS_ERR(colorop_state))
+ return PTR_ERR(colorop_state);
+ }
+
+ return 0;
+}
+
/**
* drm_atomic_helper_duplicate_state - duplicate an atomic state object
* @dev: DRM device
@@ -3758,7 +3808,7 @@ drm_atomic_helper_duplicate_state(struct drm_device *dev,
goto free;
}
- err = drm_atomic_add_affected_colorops(state, plane);
+ err = duplicate_plane_colorops(state, plane);
if (err)
goto free;
}
diff --git a/include/drm/drm_atomic.h b/include/drm/drm_atomic.h
index 3ae35b09c0cf..1ba000e392f4 100644
--- a/include/drm/drm_atomic.h
+++ b/include/drm/drm_atomic.h
@@ -937,10 +937,6 @@ drm_atomic_add_affected_connectors(struct drm_atomic_commit *state,
int __must_check
drm_atomic_add_affected_planes(struct drm_atomic_commit *state,
struct drm_crtc *crtc);
-int __must_check
-drm_atomic_add_affected_colorops(struct drm_atomic_commit *state,
- struct drm_plane *plane);
-
int __must_check drm_atomic_check_only(struct drm_atomic_commit *state);
int __must_check drm_atomic_commit(struct drm_atomic_commit *state);
int __must_check drm_atomic_nonblocking_commit(struct drm_atomic_commit *state);
--
2.53.0
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v5 15/15] drm/amd/display: distinguish colorop setup error from no colorop support
2026-11-11 16:05 [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
` (13 preceding siblings ...)
2026-11-11 16:05 ` [PATCH v5 14/15] drm/atomic: make drm_atomic_add_affected_colorops() static Melissa Wen
@ 2026-11-11 16:05 ` Melissa Wen
2026-11-11 16:18 ` ✗ CI.checkpatch: warning for drm/atomic: only add states of active or transient active colorops Patchwork
` (3 subsequent siblings)
18 siblings, 0 replies; 22+ messages in thread
From: Melissa Wen @ 2026-11-11 16:05 UTC (permalink / raw)
To: airlied, alexander.deucher, alex.hung, aurabindo.pillai,
christian.koenig, contact, daniels, harry.wentland,
maarten.lankhorst, mripard, mwen, sebastian.wick, simona,
siqueira, sunpeng.li, tzimmermann
Cc: Uma Shankar, Chaitanya Kumar Borah, Xaver Hugl, Pekka Paalanen,
Matthew Schwartz, amd-gfx, kernel-dev, Rob Clark,
Dmitry Baryshkov, Sean Paul, Marijn Suijten, linux-arm-msm,
freedreno, intel-xe, intel-gfx, dri-devel, louis.chauvet,
John Harrison
amdgpu_dm_plane_set_colorop_properties() returns -EINVAL both when the
plane has no color pipeline selected, where falling back to the legacy
color properties is correct, and when programming an active pipeline
fails, so the caller treats every failure as the former and silently
programs the plane from the legacy properties, leaving it in a mixed
state and userspace with no error. Check if plane_state->color_pipeline
is set instead, so the legacy path is only taken when no pipeline is set
and any other failure is propagated out of the atomic check. Update
AMD KUnit color tests accordingly.
Fixes: 9ba25915efba ("drm/amd/display: Add support for sRGB EOTF in DEGAM block")
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Melissa Wen <mwen@igalia.com>
---
.../drm/amd/display/amdgpu_dm/amdgpu_dm_color.c | 8 ++++----
.../amdgpu_dm/tests/amdgpu_dm_color_test.c | 17 +++++++++--------
2 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
index 7332c8874397..3bc4cbe820c6 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
@@ -2009,10 +2009,10 @@ amdgpu_dm_plane_set_colorop_properties(struct drm_plane_state *plane_state,
bool has_3dlut = adev->dm.dc->caps.color.dpp.hw_3d_lut || adev->dm.dc->caps.color.mpc.preblend;
int ret;
- /* Fixed Matrix (YUV to RGB) */
- if (!colorop)
+ if (drm_WARN_ON(dev, !colorop))
return -EINVAL;
+ /* Fixed Matrix (YUV to RGB) */
ret = __set_dm_plane_colorop_fixed_matrix(plane_state, dc_plane_state, colorop);
if (ret)
return ret;
@@ -2194,8 +2194,8 @@ int amdgpu_dm_update_plane_color_mgmt(struct dm_crtc_state *crtc,
dc_plane_state->input_csc_color_matrix.enable_adjustment = false;
}
- if (!amdgpu_dm_plane_set_colorop_properties(plane_state, dc_plane_state))
- return 0;
+ if (plane_state->color_pipeline)
+ return amdgpu_dm_plane_set_colorop_properties(plane_state, dc_plane_state);
return amdgpu_dm_plane_set_color_properties(plane_state, dc_plane_state);
}
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_color_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_color_test.c
index 8e00da61a04b..61543a3026e9 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_color_test.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_color_test.c
@@ -2539,7 +2539,7 @@ static void dm_test_update_plane_color_mgmt_colorop_bypass_pipeline(struct kunit
}
/**
- * dm_test_update_plane_color_mgmt_colorop_missing_multiplier - missing multiplier op falls back
+ * dm_test_update_plane_color_mgmt_colorop_missing_multiplier - missing multiplier op is rejected
* @test: KUnit test context
*/
static void dm_test_update_plane_color_mgmt_colorop_missing_multiplier(struct kunit *test)
@@ -2560,13 +2560,13 @@ static void dm_test_update_plane_color_mgmt_colorop_missing_multiplier(struct ku
KUNIT_EXPECT_EQ(test,
amdgpu_dm_update_plane_color_mgmt(f.crtc_state, &f.dm_plane_state->base, f.dc_plane_state),
- 0);
+ -EINVAL);
KUNIT_EXPECT_FALSE(test, f.dc_plane_state->cm.flags.bits.shaper_enable);
KUNIT_EXPECT_FALSE(test, f.dc_plane_state->cm.flags.bits.blend_enable);
}
/**
- * dm_test_update_plane_color_mgmt_colorop_missing_3x4 - missing 3x4 op falls back
+ * dm_test_update_plane_color_mgmt_colorop_missing_3x4 - missing 3x4 op is rejected
* @test: KUnit test context
*/
static void dm_test_update_plane_color_mgmt_colorop_missing_3x4(struct kunit *test)
@@ -2589,13 +2589,13 @@ static void dm_test_update_plane_color_mgmt_colorop_missing_3x4(struct kunit *te
KUNIT_EXPECT_EQ(test,
amdgpu_dm_update_plane_color_mgmt(f.crtc_state, &f.dm_plane_state->base, f.dc_plane_state),
- 0);
+ -EINVAL);
KUNIT_EXPECT_FALSE(test, f.dc_plane_state->cm.flags.bits.shaper_enable);
KUNIT_EXPECT_FALSE(test, f.dc_plane_state->cm.flags.bits.blend_enable);
}
/**
- * dm_test_update_plane_color_mgmt_colorop_truncated - truncated pipelines fall back
+ * dm_test_update_plane_color_mgmt_colorop_truncated - truncated pipelines are rejected
* @test: KUnit test context
*
* Covers each pipeline exit after the 3x4 matrix while all present colorops
@@ -2640,7 +2640,8 @@ static void dm_test_update_plane_color_mgmt_colorop_truncated(struct kunit *test
memset(f.dc_plane_state, 0, sizeof(*f.dc_plane_state));
ret = amdgpu_dm_update_plane_color_mgmt(crtc_state, plane_state, dc_plane_state);
- KUNIT_EXPECT_EQ_MSG(test, ret, 0, "pipeline length %d should fall back", count);
+ KUNIT_EXPECT_EQ_MSG(test, ret, -EINVAL,
+ "pipeline length %d should be rejected", count);
KUNIT_EXPECT_FALSE(test, f.dc_plane_state->cm.flags.bits.shaper_enable);
KUNIT_EXPECT_FALSE(test, f.dc_plane_state->cm.flags.bits.lut3d_enable);
KUNIT_EXPECT_FALSE(test, f.dc_plane_state->cm.flags.bits.blend_enable);
@@ -2810,7 +2811,7 @@ static void dm_test_update_plane_color_mgmt_colorop_3dlut(struct kunit *test)
}
/**
- * dm_test_update_plane_color_mgmt_colorop_3dlut_no_data - empty 3D LUT falls back
+ * dm_test_update_plane_color_mgmt_colorop_3dlut_no_data - active 3D LUT without data is rejected
* @test: KUnit test context
*/
static void dm_test_update_plane_color_mgmt_colorop_3dlut_no_data(struct kunit *test)
@@ -2851,7 +2852,7 @@ static void dm_test_update_plane_color_mgmt_colorop_3dlut_no_data(struct kunit *
ret = amdgpu_dm_update_plane_color_mgmt(f.crtc_state, plane_state,
f.dc_plane_state);
- KUNIT_EXPECT_EQ(test, ret, 0);
+ KUNIT_EXPECT_EQ(test, ret, -EINVAL);
KUNIT_EXPECT_FALSE(test, f.dc_plane_state->cm.flags.bits.lut3d_enable);
}
--
2.53.0
^ permalink raw reply related [flat|nested] 22+ messages in thread
* ✗ CI.checkpatch: warning for drm/atomic: only add states of active or transient active colorops
2026-11-11 16:05 [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
` (14 preceding siblings ...)
2026-11-11 16:05 ` [PATCH v5 15/15] drm/amd/display: distinguish colorop setup error from no colorop support Melissa Wen
@ 2026-11-11 16:18 ` Patchwork
2026-11-11 16:20 ` ✓ CI.KUnit: success " Patchwork
` (2 subsequent siblings)
18 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2026-11-11 16:18 UTC (permalink / raw)
To: Melissa Wen; +Cc: intel-xe
== Series Details ==
Series: drm/atomic: only add states of active or transient active colorops
URL : https://patchwork.freedesktop.org/series/178329/
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
3009867cd31863246e4afc138520a7a8bd37bb11
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit b5653e62472247be2c3009b3e6be788215eda83d
Author: Melissa Wen <mwen@igalia.com>
Date: Wed Nov 11 17:05:28 2026 +0100
drm/amd/display: distinguish colorop setup error from no colorop support
amdgpu_dm_plane_set_colorop_properties() returns -EINVAL both when the
plane has no color pipeline selected, where falling back to the legacy
color properties is correct, and when programming an active pipeline
fails, so the caller treats every failure as the former and silently
programs the plane from the legacy properties, leaving it in a mixed
state and userspace with no error. Check if plane_state->color_pipeline
is set instead, so the legacy path is only taken when no pipeline is set
and any other failure is propagated out of the atomic check. Update
AMD KUnit color tests accordingly.
Fixes: 9ba25915efba ("drm/amd/display: Add support for sRGB EOTF in DEGAM block")
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Melissa Wen <mwen@igalia.com>
+ /mt/dim checkpatch 1434742f20cf3d14b493e40c453536b5414b9762 drm-intel
dea324d78194 drm/amd/display: Update colorop pipeline tests for new fixed matrix op
9bc8f54ac445 drm/amd/display: add missing FIXED_MATRIX colorop to AMD KUnit tests
6cf9986e9c67 drm/atomic: only add states of active or transient active colorops
-:100: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'colorop' - possible side-effects?
#100: FILE: include/drm/drm_colorop.h:586:
+#define drm_for_each_colorop_in_pipeline(colorop, pipeline) \
+ for ((colorop) = (pipeline); (colorop); (colorop) = (colorop)->next)
total: 0 errors, 0 warnings, 1 checks, 80 lines checked
0607b0c8d8dd drm/amd/display: add plane to commit on KUnit cursor mode tests
a366b3dc97df drm/amd/display: only check colorops of an active color pipeline
-:14: WARNING:BAD_REPORTED_BY_LINK: Reported-by: should be immediately followed by Closes: or Link: with a URL to the report
#14:
Reported-by: Sashiko <sashiko-bot@kernel.org>
Fixes: d3a549f4df78 ("drm/amd/display: Use overlay cursor when color pipeline is active")
total: 0 errors, 1 warnings, 0 checks, 34 lines checked
3598b3dd36c9 drm/atomic: reject colorop update from inactive color pipeline
75384a90ebbc drm/atomic: duplicate state of all colorops
31ee6baed5c5 drm/atomic: check if an active colorop has a blob if its type requires one
887b7057f9a3 drm/amd/display: truly bypass plane colorop 3x4 matrix and hdr mult
-:47: WARNING:LONG_LINE: line length of 105 exceeds 100 columns
#47: FILE: drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c:1747:
+ dc_plane_state->hdr_mult = amdgpu_dm_fixpt_from_s3132(colorop_state->multiplier);
total: 0 errors, 1 warnings, 0 checks, 30 lines checked
fc501dab4516 drm/amd/display: make shaper bypass mode cleaner
78587c616b76 drm/amd/display: make blnd bypass mode clearer
f7e649ce2db9 drm/amd/display: don't ignore failure on blend colorop setup
-:10: WARNING:BAD_REPORTED_BY_LINK: Reported-by: should be immediately followed by Closes: or Link: with a URL to the report
#10:
Reported-by: Sashiko <sashiko-bot@kernel.org>
Fixes: 5ed78b44e4e6 ("drm/amd/display: add shaper and blend colorops for 1D Curve Custom LUT")
total: 0 errors, 1 warnings, 0 checks, 38 lines checked
4ab8e0dc325c drm/amd/display: allow individual colorop changes
-:166: CHECK:SPACING: No space is necessary after a cast
#166: FILE: drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c:1683:
+ ctm = (struct drm_color_ctm_3x4 *) blob->data;
total: 0 errors, 0 warnings, 1 checks, 403 lines checked
fd1c6e9fca5e drm/atomic: make drm_atomic_add_affected_colorops() static
b5653e624722 drm/amd/display: distinguish colorop setup error from no colorop support
^ permalink raw reply [flat|nested] 22+ messages in thread
* ✓ CI.KUnit: success for drm/atomic: only add states of active or transient active colorops
2026-11-11 16:05 [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
` (15 preceding siblings ...)
2026-11-11 16:18 ` ✗ CI.checkpatch: warning for drm/atomic: only add states of active or transient active colorops Patchwork
@ 2026-11-11 16:20 ` Patchwork
2026-11-11 16:54 ` ✓ Xe.CI.BAT: " Patchwork
2026-11-12 1:57 ` ✓ Xe.CI.FULL: " Patchwork
18 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2026-11-11 16:20 UTC (permalink / raw)
To: Melissa Wen; +Cc: intel-xe
== Series Details ==
Series: drm/atomic: only add states of active or transient active colorops
URL : https://patchwork.freedesktop.org/series/178329/
State : success
== Summary ==
+ trap cleanup EXIT
+ kunitconfigs=('/kernel/drivers/gpu/tests/.kunitconfig' '/kernel/drivers/gpu/drm/xe/.kunitconfig' '/kernel/drivers/gpu/drm/tests/.kunitconfig' '/kernel/drivers/gpu/drm/ttm/tests/.kunitconfig' '/kernel/drivers/dma-buf/.kunitconfig')
+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/tests/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/tests/.kunitconfig
[16:18:01] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[16:18:07] 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
[16:18:27] Starting KUnit Kernel (1/1)...
[16:18:27] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[16:18:27] ================= gpu_buddy (14 subtests) ==================
[16:18:27] [PASSED] gpu_test_buddy_alloc_limit
[16:18:27] [PASSED] gpu_test_buddy_alloc_optimistic
[16:18:27] [PASSED] gpu_test_buddy_alloc_pessimistic
[16:18:27] [PASSED] gpu_test_buddy_alloc_pathological
[16:18:27] [PASSED] gpu_test_buddy_alloc_contiguous
[16:18:27] [PASSED] gpu_test_buddy_alloc_clear
[16:18:27] [PASSED] gpu_test_buddy_alloc_range
[16:18:27] [PASSED] gpu_test_buddy_alloc_range_bias
[16:18:28] [PASSED] gpu_test_buddy_fragmentation_performance
[16:18:29] [PASSED] gpu_test_buddy_dirty_tracker_performance
[16:18:29] [PASSED] gpu_test_buddy_alloc_exceeds_max_order
[16:18:29] [PASSED] gpu_test_buddy_offset_aligned_allocation
[16:18:29] [PASSED] gpu_test_buddy_subtree_offset_alignment_stress
[16:18:29] [PASSED] gpu_test_buddy_addr_to_block
[16:18:29] ==================== [PASSED] gpu_buddy ====================
[16:18:29] ============================================================
[16:18:29] Testing complete. Ran 14 tests: passed: 14
[16:18:29] Elapsed time: 27.437s total, 5.115s configuring, 20.404s building, 1.870s running
+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/drm/xe/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[16:18:29] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[16:18:32] 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
[16:19:09] Starting KUnit Kernel (1/1)...
[16:19:09] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[16:19:10] ================== guc_buf (11 subtests) ===================
[16:19:10] [PASSED] test_smallest
[16:19:10] [PASSED] test_largest
[16:19:10] [PASSED] test_granular
[16:19:10] [PASSED] test_unique
[16:19:10] [PASSED] test_overlap
[16:19:10] [PASSED] test_reusable
[16:19:10] [PASSED] test_too_big
[16:19:10] [PASSED] test_flush
[16:19:10] [PASSED] test_lookup
[16:19:10] [PASSED] test_data
[16:19:10] [PASSED] test_class
[16:19:10] ===================== [PASSED] guc_buf =====================
[16:19:10] =================== guc_dbm (7 subtests) ===================
[16:19:10] [PASSED] test_empty
[16:19:10] [PASSED] test_default
[16:19:10] ======================== test_size ========================
[16:19:10] [PASSED] 4
[16:19:10] [PASSED] 8
[16:19:10] [PASSED] 32
[16:19:10] [PASSED] 256
[16:19:10] ==================== [PASSED] test_size ====================
[16:19:10] ======================= test_reuse ========================
[16:19:10] [PASSED] 4
[16:19:10] [PASSED] 8
[16:19:10] [PASSED] 32
[16:19:10] [PASSED] 256
[16:19:10] =================== [PASSED] test_reuse ====================
[16:19:10] =================== test_range_overlap ====================
[16:19:10] [PASSED] 4
[16:19:10] [PASSED] 8
[16:19:10] [PASSED] 32
[16:19:10] [PASSED] 256
[16:19:10] =============== [PASSED] test_range_overlap ================
[16:19:10] =================== test_range_compact ====================
[16:19:10] [PASSED] 4
[16:19:10] [PASSED] 8
[16:19:10] [PASSED] 32
[16:19:10] [PASSED] 256
[16:19:10] =============== [PASSED] test_range_compact ================
[16:19:10] ==================== test_range_spare =====================
[16:19:10] [PASSED] 4
[16:19:10] [PASSED] 8
[16:19:10] [PASSED] 32
[16:19:10] [PASSED] 256
[16:19:10] ================ [PASSED] test_range_spare =================
[16:19:10] ===================== [PASSED] guc_dbm =====================
[16:19:10] ================== guc_idm (22 subtests) ===================
[16:19:10] [PASSED] bad_init
[16:19:10] [PASSED] no_init
[16:19:10] [PASSED] init_fini
[16:19:10] [PASSED] check_init_small
[16:19:10] [PASSED] check_init_shared
[16:19:10] [PASSED] check_used
[16:19:10] [PASSED] check_quota
[16:19:10] [PASSED] check_all
[16:19:10] [PASSED] check_limits
[16:19:10] [PASSED] check_overlap
[16:19:10] [PASSED] check_overlap_alloc
[16:19:10] [PASSED] check_overlap_release
[16:19:10] [PASSED] check_overlap_partial_init
[16:19:10] [PASSED] check_overlap_partial_shared_range_blocking
[16:19:10] [PASSED] check_used_usable
[16:19:10] [PASSED] check_used_shareable
[16:19:10] [PASSED] check_used_mixed
[16:19:10] [PASSED] check_release_usable_range
[16:19:10] [PASSED] check_release_shareable_range
[16:19:10] [PASSED] check_split_boundaries
[16:19:10] [PASSED] check_shareable_spare
[16:19:10] [PASSED] check_shareable_spare_fragmented_tail
[16:19:10] ===================== [PASSED] guc_idm =====================
[16:19:10] ============== guc_klv_helpers (13 subtests) ===============
[16:19:10] [PASSED] test_count
[16:19:10] [PASSED] test_encode_u32
[16:19:10] [PASSED] test_encode_u64
[16:19:10] [PASSED] test_encode_string
[16:19:10] [PASSED] test_encode_object_raw
[16:19:10] [PASSED] test_encode_object_klv
[16:19:10] [PASSED] test_encode_object_nested
[16:19:10] [PASSED] test_encode_object_basic
[16:19:10] ===================== test_decode_u16 =====================
[16:19:10] [PASSED] empty
[16:19:10] [PASSED] valid
[16:19:10] [PASSED] max
[16:19:10] [PASSED] big
[16:19:10] [PASSED] long
[16:19:10] ================= [PASSED] test_decode_u16 =================
[16:19:10] ===================== test_decode_u32 =====================
[16:19:10] [PASSED] empty
[16:19:10] [PASSED] valid
[16:19:10] [PASSED] max
[16:19:10] [PASSED] long
[16:19:10] ================= [PASSED] test_decode_u32 =================
[16:19:10] ===================== test_decode_u64 =====================
[16:19:10] [PASSED] empty
[16:19:10] [PASSED] short
[16:19:10] [PASSED] valid
[16:19:10] [PASSED] max
[16:19:10] [PASSED] long
[16:19:10] ================= [PASSED] test_decode_u64 =================
[16:19:10] ===================== test_decode_str =====================
[16:19:10] [PASSED] empty
[16:19:10] [PASSED] one
[16:19:10] [PASSED] one_trash
[16:19:10] [PASSED] two
[16:19:10] [PASSED] two_trash
[16:19:10] [PASSED] three
[16:19:10] [PASSED] dword
[16:19:10] [PASSED] four
[16:19:10] [PASSED] five
[16:19:10] [PASSED] six
[16:19:10] [PASSED] seven
[16:19:10] [PASSED] qword
[16:19:10] ================= [PASSED] test_decode_str =================
[16:19:10] [PASSED] test_print
[16:19:10] ================= [PASSED] guc_klv_helpers =================
[16:19:10] =================== xe_log (4 subtests) ====================
[16:19:10] [PASSED] demo_cper
[16:19:10] [PASSED] demo_dmesg
[16:19:10] ======================= test_dmesg ========================
[16:19:10] [PASSED] test_fatal
[16:19:10] [PASSED] test_fatal_tile
[16:19:10] [PASSED] test_fatal_gt
[16:19:10] [PASSED] test_fatal_comp
[16:19:10] [PASSED] test_fatal_comp_tile
[16:19:10] [PASSED] test_fatal_comp_gt
[16:19:10] [PASSED] test_fatal_all
[16:19:10] [PASSED] test_recoverable
[16:19:10] [PASSED] test_recoverable_tile
[16:19:10] [PASSED] test_recoverable_gt
[16:19:10] [PASSED] test_recoverable_comp
[16:19:10] [PASSED] test_recoverable_comp_tile
[16:19:10] [PASSED] test_recoverable_comp_gt
[16:19:10] [PASSED] test_recoverable_all
[16:19:10] [PASSED] test_info
[16:19:10] [PASSED] test_info_tile
[16:19:10] [PASSED] test_info_gt
[16:19:10] [PASSED] test_info_err
[16:19:10] [PASSED] test_info_comp
[16:19:10] [PASSED] test_info_comp_tile
[16:19:10] [PASSED] test_info_comp_gt
[16:19:10] [PASSED] test_info_all
[16:19:10] [PASSED] test_hw_fatal
[16:19:10] [PASSED] test_hw_recoverable
[16:19:10] [PASSED] test_hw_corrected
[16:19:10] [PASSED] test_hw_informational
[16:19:10] =================== [PASSED] test_dmesg ====================
[16:19:10] ====================== test_invalid =======================
[16:19:10] [SKIPPED] no-component no-location no-warn (requires CONFIG_DRM_XE_DEBUG)
[16:19:10] [SKIPPED] reserved location (requires CONFIG_DRM_XE_DEBUG)
[16:19:10] [SKIPPED] unknown location (requires CONFIG_DRM_XE_DEBUG)
[16:19:10] [SKIPPED] nonzero-device-id location (requires CONFIG_DRM_XE_DEBUG)
[16:19:10] [SKIPPED] invalid-tile-id location (requires CONFIG_DRM_XE_DEBUG)
[16:19:10] [SKIPPED] invalid-gt-id location (requires CONFIG_DRM_XE_DEBUG)
[16:19:10] [SKIPPED] unknown component class (requires CONFIG_DRM_XE_DEBUG)
[16:19:10] [SKIPPED] unknown system component (requires CONFIG_DRM_XE_DEBUG)
[16:19:10] [SKIPPED] unknown hardware component (requires CONFIG_DRM_XE_DEBUG)
[16:19:10] [SKIPPED] unknown component and location (requires CONFIG_DRM_XE_DEBUG)
[16:19:10] ================== [SKIPPED] test_invalid ==================
[16:19:10] ===================== [PASSED] xe_log ======================
[16:19:10] ================== no_relay (3 subtests) ===================
[16:19:10] [PASSED] xe_drops_guc2pf_if_not_ready
[16:19:10] [PASSED] xe_drops_guc2vf_if_not_ready
[16:19:10] [PASSED] xe_rejects_send_if_not_ready
[16:19:10] ==================== [PASSED] no_relay =====================
[16:19:10] ================== pf_relay (14 subtests) ==================
[16:19:10] [PASSED] pf_rejects_guc2pf_too_short
[16:19:10] [PASSED] pf_rejects_guc2pf_too_long
[16:19:10] [PASSED] pf_rejects_guc2pf_no_payload
[16:19:10] [PASSED] pf_fails_no_payload
[16:19:10] [PASSED] pf_fails_bad_origin
[16:19:10] [PASSED] pf_fails_bad_type
[16:19:10] [PASSED] pf_txn_reports_error
[16:19:10] [PASSED] pf_txn_sends_pf2guc
[16:19:10] [PASSED] pf_sends_pf2guc
[16:19:10] [SKIPPED] pf_loopback_nop (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[16:19:10] [SKIPPED] pf_loopback_echo (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[16:19:10] [SKIPPED] pf_loopback_fail (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[16:19:10] [SKIPPED] pf_loopback_busy (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[16:19:10] [SKIPPED] pf_loopback_retry (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[16:19:10] ==================== [PASSED] pf_relay =====================
[16:19:10] ================== vf_relay (3 subtests) ===================
[16:19:10] [PASSED] vf_rejects_guc2vf_too_short
[16:19:10] [PASSED] vf_rejects_guc2vf_too_long
[16:19:10] [PASSED] vf_rejects_guc2vf_no_payload
[16:19:10] ==================== [PASSED] vf_relay =====================
[16:19:10] ================ pf_gt_config (9 subtests) =================
[16:19:10] [PASSED] fair_contexts_1vf
[16:19:10] [PASSED] fair_doorbells_1vf
[16:19:10] [PASSED] fair_ggtt_1vf
[16:19:10] ====================== fair_vram_1vf ======================
[16:19:10] [PASSED] 3.50 GiB
[16:19:10] [PASSED] 11.5 GiB
[16:19:10] [PASSED] 15.5 GiB
[16:19:10] [PASSED] 31.5 GiB
[16:19:10] [PASSED] 63.5 GiB
[16:19:10] [PASSED] 1.91 GiB
[16:19:10] ================== [PASSED] fair_vram_1vf ==================
[16:19:10] ================ fair_vram_1vf_admin_only =================
[16:19:10] [PASSED] 3.50 GiB
[16:19:10] [PASSED] 11.5 GiB
[16:19:10] [PASSED] 15.5 GiB
[16:19:10] [PASSED] 31.5 GiB
[16:19:10] [PASSED] 63.5 GiB
[16:19:10] [PASSED] 1.91 GiB
[16:19:10] ============ [PASSED] fair_vram_1vf_admin_only =============
[16:19:10] ====================== fair_contexts ======================
[16:19:10] [PASSED] 1 VF
[16:19:10] [PASSED] 2 VFs
[16:19:10] [PASSED] 3 VFs
[16:19:10] [PASSED] 4 VFs
[16:19:10] [PASSED] 5 VFs
[16:19:10] [PASSED] 6 VFs
[16:19:10] [PASSED] 7 VFs
[16:19:10] [PASSED] 8 VFs
[16:19:10] [PASSED] 9 VFs
[16:19:10] [PASSED] 10 VFs
[16:19:10] [PASSED] 11 VFs
[16:19:10] [PASSED] 12 VFs
[16:19:10] [PASSED] 13 VFs
[16:19:10] [PASSED] 14 VFs
[16:19:10] [PASSED] 15 VFs
[16:19:10] [PASSED] 16 VFs
[16:19:10] [PASSED] 17 VFs
[16:19:10] [PASSED] 18 VFs
[16:19:10] [PASSED] 19 VFs
[16:19:10] [PASSED] 20 VFs
[16:19:10] [PASSED] 21 VFs
[16:19:10] [PASSED] 22 VFs
[16:19:10] [PASSED] 23 VFs
[16:19:10] [PASSED] 24 VFs
[16:19:10] [PASSED] 25 VFs
[16:19:10] [PASSED] 26 VFs
[16:19:10] [PASSED] 27 VFs
[16:19:10] [PASSED] 28 VFs
[16:19:10] [PASSED] 29 VFs
[16:19:10] [PASSED] 30 VFs
[16:19:10] [PASSED] 31 VFs
[16:19:10] [PASSED] 32 VFs
[16:19:10] [PASSED] 33 VFs
[16:19:10] [PASSED] 34 VFs
[16:19:10] [PASSED] 35 VFs
[16:19:10] [PASSED] 36 VFs
[16:19:10] [PASSED] 37 VFs
[16:19:10] [PASSED] 38 VFs
[16:19:10] [PASSED] 39 VFs
[16:19:10] [PASSED] 40 VFs
[16:19:10] [PASSED] 41 VFs
[16:19:10] [PASSED] 42 VFs
[16:19:10] [PASSED] 43 VFs
[16:19:10] [PASSED] 44 VFs
[16:19:10] [PASSED] 45 VFs
[16:19:10] [PASSED] 46 VFs
[16:19:10] [PASSED] 47 VFs
[16:19:10] [PASSED] 48 VFs
[16:19:10] [PASSED] 49 VFs
[16:19:10] [PASSED] 50 VFs
[16:19:10] [PASSED] 51 VFs
[16:19:10] [PASSED] 52 VFs
[16:19:10] [PASSED] 53 VFs
[16:19:10] [PASSED] 54 VFs
[16:19:10] [PASSED] 55 VFs
[16:19:10] [PASSED] 56 VFs
[16:19:10] [PASSED] 57 VFs
[16:19:10] [PASSED] 58 VFs
[16:19:10] [PASSED] 59 VFs
[16:19:10] [PASSED] 60 VFs
[16:19:10] [PASSED] 61 VFs
[16:19:10] [PASSED] 62 VFs
[16:19:10] [PASSED] 63 VFs
[16:19:10] ================== [PASSED] fair_contexts ==================
[16:19:10] ===================== fair_doorbells ======================
[16:19:10] [PASSED] 1 VF
[16:19:10] [PASSED] 2 VFs
[16:19:10] [PASSED] 3 VFs
[16:19:10] [PASSED] 4 VFs
[16:19:10] [PASSED] 5 VFs
[16:19:10] [PASSED] 6 VFs
[16:19:10] [PASSED] 7 VFs
[16:19:10] [PASSED] 8 VFs
[16:19:10] [PASSED] 9 VFs
[16:19:10] [PASSED] 10 VFs
[16:19:10] [PASSED] 11 VFs
[16:19:10] [PASSED] 12 VFs
[16:19:10] [PASSED] 13 VFs
[16:19:10] [PASSED] 14 VFs
[16:19:10] [PASSED] 15 VFs
[16:19:10] [PASSED] 16 VFs
[16:19:10] [PASSED] 17 VFs
[16:19:10] [PASSED] 18 VFs
[16:19:10] [PASSED] 19 VFs
[16:19:10] [PASSED] 20 VFs
[16:19:10] [PASSED] 21 VFs
[16:19:10] [PASSED] 22 VFs
[16:19:10] [PASSED] 23 VFs
[16:19:10] [PASSED] 24 VFs
[16:19:10] [PASSED] 25 VFs
[16:19:10] [PASSED] 26 VFs
[16:19:10] [PASSED] 27 VFs
[16:19:10] [PASSED] 28 VFs
[16:19:10] [PASSED] 29 VFs
[16:19:10] [PASSED] 30 VFs
[16:19:10] [PASSED] 31 VFs
[16:19:10] [PASSED] 32 VFs
[16:19:10] [PASSED] 33 VFs
[16:19:10] [PASSED] 34 VFs
[16:19:10] [PASSED] 35 VFs
[16:19:10] [PASSED] 36 VFs
[16:19:10] [PASSED] 37 VFs
[16:19:10] [PASSED] 38 VFs
[16:19:10] [PASSED] 39 VFs
[16:19:10] [PASSED] 40 VFs
[16:19:10] [PASSED] 41 VFs
[16:19:10] [PASSED] 42 VFs
[16:19:10] [PASSED] 43 VFs
[16:19:10] [PASSED] 44 VFs
[16:19:10] [PASSED] 45 VFs
[16:19:10] [PASSED] 46 VFs
[16:19:10] [PASSED] 47 VFs
[16:19:10] [PASSED] 48 VFs
[16:19:10] [PASSED] 49 VFs
[16:19:10] [PASSED] 50 VFs
[16:19:10] [PASSED] 51 VFs
[16:19:10] [PASSED] 52 VFs
[16:19:10] [PASSED] 53 VFs
[16:19:10] [PASSED] 54 VFs
[16:19:10] [PASSED] 55 VFs
[16:19:10] [PASSED] 56 VFs
[16:19:10] [PASSED] 57 VFs
[16:19:10] [PASSED] 58 VFs
[16:19:10] [PASSED] 59 VFs
[16:19:10] [PASSED] 60 VFs
[16:19:10] [PASSED] 61 VFs
[16:19:10] [PASSED] 62 VFs
[16:19:10] [PASSED] 63 VFs
[16:19:10] ================= [PASSED] fair_doorbells ==================
[16:19:10] ======================== fair_ggtt ========================
[16:19:10] [PASSED] 1 VF
[16:19:10] [PASSED] 2 VFs
[16:19:10] [PASSED] 3 VFs
[16:19:10] [PASSED] 4 VFs
[16:19:10] [PASSED] 5 VFs
[16:19:10] [PASSED] 6 VFs
[16:19:10] [PASSED] 7 VFs
[16:19:10] [PASSED] 8 VFs
[16:19:10] [PASSED] 9 VFs
[16:19:10] [PASSED] 10 VFs
[16:19:10] [PASSED] 11 VFs
[16:19:10] [PASSED] 12 VFs
[16:19:10] [PASSED] 13 VFs
[16:19:10] [PASSED] 14 VFs
[16:19:10] [PASSED] 15 VFs
[16:19:10] [PASSED] 16 VFs
[16:19:10] [PASSED] 17 VFs
[16:19:10] [PASSED] 18 VFs
[16:19:10] [PASSED] 19 VFs
[16:19:10] [PASSED] 20 VFs
[16:19:10] [PASSED] 21 VFs
[16:19:10] [PASSED] 22 VFs
[16:19:10] [PASSED] 23 VFs
[16:19:10] [PASSED] 24 VFs
[16:19:10] [PASSED] 25 VFs
[16:19:10] [PASSED] 26 VFs
[16:19:10] [PASSED] 27 VFs
[16:19:10] [PASSED] 28 VFs
[16:19:10] [PASSED] 29 VFs
[16:19:10] [PASSED] 30 VFs
[16:19:10] [PASSED] 31 VFs
[16:19:10] [PASSED] 32 VFs
[16:19:10] [PASSED] 33 VFs
[16:19:10] [PASSED] 34 VFs
[16:19:10] [PASSED] 35 VFs
[16:19:10] [PASSED] 36 VFs
[16:19:10] [PASSED] 37 VFs
[16:19:10] [PASSED] 38 VFs
[16:19:10] [PASSED] 39 VFs
[16:19:10] [PASSED] 40 VFs
[16:19:10] [PASSED] 41 VFs
[16:19:10] [PASSED] 42 VFs
[16:19:10] [PASSED] 43 VFs
[16:19:10] [PASSED] 44 VFs
[16:19:10] [PASSED] 45 VFs
[16:19:10] [PASSED] 46 VFs
[16:19:10] [PASSED] 47 VFs
[16:19:10] [PASSED] 48 VFs
[16:19:10] [PASSED] 49 VFs
[16:19:10] [PASSED] 50 VFs
[16:19:10] [PASSED] 51 VFs
[16:19:10] [PASSED] 52 VFs
[16:19:10] [PASSED] 53 VFs
[16:19:10] [PASSED] 54 VFs
[16:19:10] [PASSED] 55 VFs
[16:19:10] [PASSED] 56 VFs
[16:19:10] [PASSED] 57 VFs
[16:19:10] [PASSED] 58 VFs
[16:19:10] [PASSED] 59 VFs
[16:19:10] [PASSED] 60 VFs
[16:19:10] [PASSED] 61 VFs
[16:19:10] [PASSED] 62 VFs
[16:19:10] [PASSED] 63 VFs
[16:19:10] ==================== [PASSED] fair_ggtt ====================
[16:19:10] ======================== fair_vram ========================
[16:19:10] [PASSED] 1 VF
[16:19:10] [PASSED] 2 VFs
[16:19:10] [PASSED] 3 VFs
[16:19:10] [PASSED] 4 VFs
[16:19:10] [PASSED] 5 VFs
[16:19:10] [PASSED] 6 VFs
[16:19:10] [PASSED] 7 VFs
[16:19:10] [PASSED] 8 VFs
[16:19:10] [PASSED] 9 VFs
[16:19:10] [PASSED] 10 VFs
[16:19:10] [PASSED] 11 VFs
[16:19:10] [PASSED] 12 VFs
[16:19:10] [PASSED] 13 VFs
[16:19:10] [PASSED] 14 VFs
[16:19:10] [PASSED] 15 VFs
[16:19:10] [PASSED] 16 VFs
[16:19:10] [PASSED] 17 VFs
[16:19:10] [PASSED] 18 VFs
[16:19:10] [PASSED] 19 VFs
[16:19:10] [PASSED] 20 VFs
[16:19:10] [PASSED] 21 VFs
[16:19:10] [PASSED] 22 VFs
[16:19:10] [PASSED] 23 VFs
[16:19:10] [PASSED] 24 VFs
[16:19:10] [PASSED] 25 VFs
[16:19:10] [PASSED] 26 VFs
[16:19:10] [PASSED] 27 VFs
[16:19:10] [PASSED] 28 VFs
[16:19:10] [PASSED] 29 VFs
[16:19:10] [PASSED] 30 VFs
[16:19:10] [PASSED] 31 VFs
[16:19:10] [PASSED] 32 VFs
[16:19:10] [PASSED] 33 VFs
[16:19:10] [PASSED] 34 VFs
[16:19:10] [PASSED] 35 VFs
[16:19:10] [PASSED] 36 VFs
[16:19:10] [PASSED] 37 VFs
[16:19:10] [PASSED] 38 VFs
[16:19:10] [PASSED] 39 VFs
[16:19:10] [PASSED] 40 VFs
[16:19:10] [PASSED] 41 VFs
[16:19:10] [PASSED] 42 VFs
[16:19:10] [PASSED] 43 VFs
[16:19:10] [PASSED] 44 VFs
[16:19:10] [PASSED] 45 VFs
[16:19:10] [PASSED] 46 VFs
[16:19:10] [PASSED] 47 VFs
[16:19:10] [PASSED] 48 VFs
[16:19:10] [PASSED] 49 VFs
[16:19:10] [PASSED] 50 VFs
[16:19:10] [PASSED] 51 VFs
[16:19:10] [PASSED] 52 VFs
[16:19:10] [PASSED] 53 VFs
[16:19:10] [PASSED] 54 VFs
[16:19:10] [PASSED] 55 VFs
[16:19:10] [PASSED] 56 VFs
[16:19:10] [PASSED] 57 VFs
[16:19:10] [PASSED] 58 VFs
[16:19:10] [PASSED] 59 VFs
[16:19:10] [PASSED] 60 VFs
[16:19:10] [PASSED] 61 VFs
[16:19:10] [PASSED] 62 VFs
[16:19:10] [PASSED] 63 VFs
[16:19:10] ==================== [PASSED] fair_vram ====================
[16:19:10] ================== [PASSED] pf_gt_config ===================
[16:19:10] ===================== lmtt (1 subtest) =====================
[16:19:10] ======================== test_ops =========================
[16:19:10] [PASSED] 2-level
[16:19:10] [PASSED] multi-level
[16:19:10] ==================== [PASSED] test_ops =====================
[16:19:10] ====================== [PASSED] lmtt =======================
[16:19:10] ================= sriov_packet (1 subtest) =================
[16:19:10] [PASSED] test_descriptor_init
[16:19:10] ================== [PASSED] sriov_packet ===================
[16:19:10] ================= pf_service (11 subtests) =================
[16:19:10] [PASSED] pf_negotiate_any
[16:19:10] [PASSED] pf_negotiate_base_match
[16:19:10] [PASSED] pf_negotiate_base_newer
[16:19:10] [PASSED] pf_negotiate_base_next
[16:19:10] [SKIPPED] pf_negotiate_base_older (no older minor)
[16:19:10] [PASSED] pf_negotiate_base_prev
[16:19:10] [PASSED] pf_negotiate_latest_match
[16:19:10] [PASSED] pf_negotiate_latest_newer
[16:19:10] [PASSED] pf_negotiate_latest_next
[16:19:10] [SKIPPED] pf_negotiate_latest_older (no older minor)
[16:19:10] [SKIPPED] pf_negotiate_latest_prev (no prev major)
[16:19:10] =================== [PASSED] pf_service ====================
[16:19:10] ================= xe_guc_g2g (2 subtests) ==================
[16:19:10] ============== xe_live_guc_g2g_kunit_default ==============
[16:19:10] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[16:19:10] ============== xe_live_guc_g2g_kunit_allmem ===============
[16:19:10] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[16:19:10] =================== [SKIPPED] xe_guc_g2g ===================
[16:19:10] =================== xe_mocs (2 subtests) ===================
[16:19:10] ================ xe_live_mocs_kernel_kunit ================
[16:19:10] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[16:19:10] ================ xe_live_mocs_reset_kunit =================
[16:19:10] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[16:19:10] ==================== [SKIPPED] xe_mocs =====================
[16:19:10] ================= xe_migrate (3 subtests) ==================
[16:19:10] ================= xe_migrate_sanity_kunit =================
[16:19:10] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[16:19:10] ================== xe_validate_ccs_kunit ==================
[16:19:10] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[16:19:10] ============= xe_migrate_access_memory_kunit ==============
[16:19:10] ========= [SKIPPED] xe_migrate_access_memory_kunit =========
[16:19:10] =================== [SKIPPED] xe_migrate ===================
[16:19:10] ================== xe_dma_buf (1 subtest) ==================
[16:19:10] ==================== xe_dma_buf_kunit =====================
[16:19:10] ================ [SKIPPED] xe_dma_buf_kunit ================
[16:19:10] =================== [SKIPPED] xe_dma_buf ===================
[16:19:10] ================= xe_bo_shrink (1 subtest) =================
[16:19:10] =================== xe_bo_shrink_kunit ====================
[16:19:10] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[16:19:10] ================== [SKIPPED] xe_bo_shrink ==================
[16:19:10] ==================== xe_bo (2 subtests) ====================
[16:19:10] ================== xe_ccs_migrate_kunit ===================
[16:19:10] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[16:19:10] ==================== xe_bo_evict_kunit ====================
[16:19:10] =============== [SKIPPED] xe_bo_evict_kunit ================
[16:19:10] ===================== [SKIPPED] xe_bo ======================
[16:19:10] =================== xe_any (9 subtests) ====================
[16:19:10] [PASSED] test_to_xe
[16:19:10] [PASSED] test_to_dev
[16:19:10] [PASSED] test_to_pdev
[16:19:10] [PASSED] test_to_drm
[16:19:10] [PASSED] test_if_pdev
[16:19:10] [PASSED] test_if_xe
[16:19:10] [PASSED] test_if_tile
[16:19:10] [PASSED] test_if_gt
[16:19:10] [PASSED] test_to_id
[16:19:10] ===================== [PASSED] xe_any ======================
[16:19:10] ==================== args (13 subtests) ====================
[16:19:10] [PASSED] count_args_test
[16:19:10] [PASSED] call_args_example
[16:19:10] [PASSED] call_args_test
[16:19:10] [PASSED] drop_first_arg_example
[16:19:10] [PASSED] drop_first_arg_test
[16:19:10] [PASSED] first_arg_example
[16:19:10] [PASSED] first_arg_test
[16:19:10] [PASSED] last_arg_example
[16:19:10] [PASSED] last_arg_test
[16:19:10] [PASSED] pick_arg_example
[16:19:10] [PASSED] if_args_example
[16:19:10] [PASSED] if_args_test
[16:19:10] [PASSED] sep_comma_example
[16:19:10] ====================== [PASSED] args =======================
[16:19:10] =================== xe_pci (3 subtests) ====================
[16:19:10] ==================== check_graphics_ip ====================
[16:19:10] [PASSED] 12.00 Xe_LP
[16:19:10] [PASSED] 12.10 Xe_LP+
[16:19:10] [PASSED] 12.55 Xe_HPG
[16:19:10] [PASSED] 12.60 Xe_HPC
[16:19:10] [PASSED] 12.70 Xe_LPG
[16:19:10] [PASSED] 12.71 Xe_LPG
[16:19:10] [PASSED] 12.74 Xe_LPG+
[16:19:10] [PASSED] 20.01 Xe2_HPG
[16:19:10] [PASSED] 20.02 Xe2_HPG
[16:19:10] [PASSED] 20.04 Xe2_LPG
[16:19:10] [PASSED] 30.00 Xe3_LPG
[16:19:10] [PASSED] 30.01 Xe3_LPG
[16:19:10] [PASSED] 30.03 Xe3_LPG
[16:19:10] [PASSED] 30.04 Xe3_LPG
[16:19:10] [PASSED] 30.05 Xe3_LPG
[16:19:10] [PASSED] 35.10 Xe3p_LPG
[16:19:10] [PASSED] 35.11 Xe3p_XPC
[16:19:10] ================ [PASSED] check_graphics_ip ================
[16:19:10] ===================== check_media_ip ======================
[16:19:10] [PASSED] 12.00 Xe_M
[16:19:10] [PASSED] 12.55 Xe_HPM
[16:19:10] [PASSED] 13.00 Xe_LPM+
[16:19:10] [PASSED] 13.01 Xe2_HPM
[16:19:10] [PASSED] 20.00 Xe2_LPM
[16:19:10] [PASSED] 30.00 Xe3_LPM
[16:19:10] [PASSED] 30.02 Xe3_LPM
[16:19:10] [PASSED] 35.00 Xe3p_LPM
[16:19:10] [PASSED] 35.03 Xe3p_HPM
[16:19:10] ================= [PASSED] check_media_ip ==================
[16:19:10] =================== check_platform_desc ===================
[16:19:10] [PASSED] 0x9A60 (TIGERLAKE)
[16:19:10] [PASSED] 0x9A68 (TIGERLAKE)
[16:19:10] [PASSED] 0x9A70 (TIGERLAKE)
[16:19:10] [PASSED] 0x9A40 (TIGERLAKE)
[16:19:10] [PASSED] 0x9A49 (TIGERLAKE)
[16:19:10] [PASSED] 0x9A59 (TIGERLAKE)
[16:19:10] [PASSED] 0x9A78 (TIGERLAKE)
[16:19:10] [PASSED] 0x9AC0 (TIGERLAKE)
[16:19:10] [PASSED] 0x9AC9 (TIGERLAKE)
[16:19:10] [PASSED] 0x9AD9 (TIGERLAKE)
[16:19:10] [PASSED] 0x9AF8 (TIGERLAKE)
[16:19:10] [PASSED] 0x4C80 (ROCKETLAKE)
[16:19:10] [PASSED] 0x4C8A (ROCKETLAKE)
[16:19:10] [PASSED] 0x4C8B (ROCKETLAKE)
[16:19:10] [PASSED] 0x4C8C (ROCKETLAKE)
[16:19:10] [PASSED] 0x4C90 (ROCKETLAKE)
[16:19:10] [PASSED] 0x4C9A (ROCKETLAKE)
[16:19:10] [PASSED] 0x4680 (ALDERLAKE_S)
[16:19:10] [PASSED] 0x4682 (ALDERLAKE_S)
[16:19:10] [PASSED] 0x4688 (ALDERLAKE_S)
[16:19:10] [PASSED] 0x468A (ALDERLAKE_S)
[16:19:10] [PASSED] 0x468B (ALDERLAKE_S)
[16:19:10] [PASSED] 0x4690 (ALDERLAKE_S)
[16:19:10] [PASSED] 0x4692 (ALDERLAKE_S)
[16:19:10] [PASSED] 0x4693 (ALDERLAKE_S)
[16:19:10] [PASSED] 0x46A0 (ALDERLAKE_P)
[16:19:10] [PASSED] 0x46A1 (ALDERLAKE_P)
[16:19:10] [PASSED] 0x46A2 (ALDERLAKE_P)
[16:19:10] [PASSED] 0x46A3 (ALDERLAKE_P)
[16:19:10] [PASSED] 0x46A6 (ALDERLAKE_P)
[16:19:10] [PASSED] 0x46A8 (ALDERLAKE_P)
[16:19:10] [PASSED] 0x46AA (ALDERLAKE_P)
[16:19:10] [PASSED] 0x462A (ALDERLAKE_P)
[16:19:10] [PASSED] 0x4626 (ALDERLAKE_P)
[16:19:10] [PASSED] 0x4628 (ALDERLAKE_P)
[16:19:10] [PASSED] 0x46B0 (ALDERLAKE_P)
[16:19:10] [PASSED] 0x46B1 (ALDERLAKE_P)
[16:19:10] [PASSED] 0x46B2 (ALDERLAKE_P)
[16:19:10] [PASSED] 0x46B3 (ALDERLAKE_P)
[16:19:10] [PASSED] 0x46C0 (ALDERLAKE_P)
[16:19:10] [PASSED] 0x46C1 (ALDERLAKE_P)
[16:19:10] [PASSED] 0x46C2 (ALDERLAKE_P)
[16:19:10] [PASSED] 0x46C3 (ALDERLAKE_P)
[16:19:10] [PASSED] 0x46D0 (ALDERLAKE_N)
[16:19:10] [PASSED] 0x46D1 (ALDERLAKE_N)
[16:19:10] [PASSED] 0x46D2 (ALDERLAKE_N)
[16:19:10] [PASSED] 0x46D3 (ALDERLAKE_N)
[16:19:10] [PASSED] 0x46D4 (ALDERLAKE_N)
[16:19:10] [PASSED] 0xA721 (ALDERLAKE_P)
[16:19:10] [PASSED] 0xA7A1 (ALDERLAKE_P)
[16:19:10] [PASSED] 0xA7A9 (ALDERLAKE_P)
[16:19:10] [PASSED] 0xA7AC (ALDERLAKE_P)
[16:19:10] [PASSED] 0xA7AD (ALDERLAKE_P)
[16:19:10] [PASSED] 0xA720 (ALDERLAKE_P)
[16:19:10] [PASSED] 0xA7A0 (ALDERLAKE_P)
[16:19:10] [PASSED] 0xA7A8 (ALDERLAKE_P)
[16:19:10] [PASSED] 0xA7AA (ALDERLAKE_P)
[16:19:10] [PASSED] 0xA7AB (ALDERLAKE_P)
[16:19:10] [PASSED] 0xA780 (ALDERLAKE_S)
[16:19:10] [PASSED] 0xA781 (ALDERLAKE_S)
[16:19:10] [PASSED] 0xA782 (ALDERLAKE_S)
[16:19:10] [PASSED] 0xA783 (ALDERLAKE_S)
[16:19:10] [PASSED] 0xA788 (ALDERLAKE_S)
[16:19:10] [PASSED] 0xA789 (ALDERLAKE_S)
[16:19:10] [PASSED] 0xA78A (ALDERLAKE_S)
[16:19:10] [PASSED] 0xA78B (ALDERLAKE_S)
[16:19:10] [PASSED] 0x4905 (DG1)
[16:19:10] [PASSED] 0x4906 (DG1)
[16:19:10] [PASSED] 0x4907 (DG1)
[16:19:10] [PASSED] 0x4908 (DG1)
[16:19:10] [PASSED] 0x4909 (DG1)
[16:19:10] [PASSED] 0x56C0 (DG2)
[16:19:10] [PASSED] 0x56C2 (DG2)
[16:19:10] [PASSED] 0x56C1 (DG2)
[16:19:10] [PASSED] 0x7D51 (METEORLAKE)
[16:19:10] [PASSED] 0x7DD1 (METEORLAKE)
[16:19:10] [PASSED] 0x7D41 (METEORLAKE)
[16:19:10] [PASSED] 0x7D67 (METEORLAKE)
[16:19:10] [PASSED] 0xB640 (METEORLAKE)
[16:19:10] [PASSED] 0x56A0 (DG2)
[16:19:10] [PASSED] 0x56A1 (DG2)
[16:19:10] [PASSED] 0x56A2 (DG2)
[16:19:10] [PASSED] 0x56BE (DG2)
[16:19:10] [PASSED] 0x56BF (DG2)
[16:19:10] [PASSED] 0x5690 (DG2)
[16:19:10] [PASSED] 0x5691 (DG2)
[16:19:10] [PASSED] 0x5692 (DG2)
[16:19:10] [PASSED] 0x56A5 (DG2)
[16:19:10] [PASSED] 0x56A6 (DG2)
[16:19:10] [PASSED] 0x56B0 (DG2)
[16:19:10] [PASSED] 0x56B1 (DG2)
[16:19:10] [PASSED] 0x56BA (DG2)
[16:19:10] [PASSED] 0x56BB (DG2)
[16:19:10] [PASSED] 0x56BC (DG2)
[16:19:10] [PASSED] 0x56BD (DG2)
[16:19:10] [PASSED] 0x5693 (DG2)
[16:19:10] [PASSED] 0x5694 (DG2)
[16:19:10] [PASSED] 0x5695 (DG2)
[16:19:10] [PASSED] 0x56A3 (DG2)
[16:19:10] [PASSED] 0x56A4 (DG2)
[16:19:10] [PASSED] 0x56B2 (DG2)
[16:19:10] [PASSED] 0x56B3 (DG2)
[16:19:10] [PASSED] 0x5696 (DG2)
[16:19:10] [PASSED] 0x5697 (DG2)
[16:19:10] [PASSED] 0xB69 (PVC)
[16:19:10] [PASSED] 0xB6E (PVC)
[16:19:10] [PASSED] 0xBD4 (PVC)
[16:19:10] [PASSED] 0xBD5 (PVC)
[16:19:10] [PASSED] 0xBD6 (PVC)
[16:19:10] [PASSED] 0xBD7 (PVC)
[16:19:10] [PASSED] 0xBD8 (PVC)
[16:19:10] [PASSED] 0xBD9 (PVC)
[16:19:10] [PASSED] 0xBDA (PVC)
[16:19:10] [PASSED] 0xBDB (PVC)
[16:19:10] [PASSED] 0xBE0 (PVC)
[16:19:10] [PASSED] 0xBE1 (PVC)
[16:19:10] [PASSED] 0xBE5 (PVC)
[16:19:10] [PASSED] 0x7D40 (METEORLAKE)
[16:19:10] [PASSED] 0x7D45 (METEORLAKE)
[16:19:10] [PASSED] 0x7D55 (METEORLAKE)
[16:19:10] [PASSED] 0x7D60 (METEORLAKE)
[16:19:10] [PASSED] 0x7DD5 (METEORLAKE)
[16:19:10] [PASSED] 0x6420 (LUNARLAKE)
[16:19:10] [PASSED] 0x64A0 (LUNARLAKE)
[16:19:10] [PASSED] 0x64B0 (LUNARLAKE)
[16:19:10] [PASSED] 0xE202 (BATTLEMAGE)
[16:19:10] [PASSED] 0xE209 (BATTLEMAGE)
[16:19:10] [PASSED] 0xE20B (BATTLEMAGE)
[16:19:10] [PASSED] 0xE20C (BATTLEMAGE)
[16:19:10] [PASSED] 0xE20D (BATTLEMAGE)
[16:19:10] [PASSED] 0xE210 (BATTLEMAGE)
[16:19:10] [PASSED] 0xE211 (BATTLEMAGE)
[16:19:10] [PASSED] 0xE212 (BATTLEMAGE)
[16:19:10] [PASSED] 0xE216 (BATTLEMAGE)
[16:19:10] [PASSED] 0xE220 (BATTLEMAGE)
[16:19:10] [PASSED] 0xE221 (BATTLEMAGE)
[16:19:10] [PASSED] 0xE222 (BATTLEMAGE)
[16:19:10] [PASSED] 0xE223 (BATTLEMAGE)
[16:19:10] [PASSED] 0xB080 (PANTHERLAKE)
[16:19:10] [PASSED] 0xB081 (PANTHERLAKE)
[16:19:10] [PASSED] 0xB082 (PANTHERLAKE)
[16:19:10] [PASSED] 0xB083 (PANTHERLAKE)
[16:19:10] [PASSED] 0xB084 (PANTHERLAKE)
[16:19:10] [PASSED] 0xB085 (PANTHERLAKE)
[16:19:10] [PASSED] 0xB086 (PANTHERLAKE)
[16:19:10] [PASSED] 0xB087 (PANTHERLAKE)
[16:19:10] [PASSED] 0xB08F (PANTHERLAKE)
[16:19:10] [PASSED] 0xB090 (PANTHERLAKE)
[16:19:10] [PASSED] 0xB0A0 (PANTHERLAKE)
[16:19:10] [PASSED] 0xB0A1 (PANTHERLAKE)
[16:19:10] [PASSED] 0xB0B0 (PANTHERLAKE)
[16:19:10] [PASSED] 0xFD80 (PANTHERLAKE)
[16:19:10] [PASSED] 0xFD81 (PANTHERLAKE)
[16:19:10] [PASSED] 0xD740 (NOVALAKE_S)
[16:19:10] [PASSED] 0xD741 (NOVALAKE_S)
[16:19:10] [PASSED] 0xD742 (NOVALAKE_S)
[16:19:10] [PASSED] 0xD743 (NOVALAKE_S)
[16:19:10] [PASSED] 0xD745 (NOVALAKE_S)
[16:19:10] [PASSED] 0xD74A (NOVALAKE_S)
[16:19:10] [PASSED] 0xD74B (NOVALAKE_S)
[16:19:10] [PASSED] 0x674C (CRESCENTISLAND)
[16:19:10] [PASSED] 0x674D (CRESCENTISLAND)
[16:19:10] [PASSED] 0x674E (CRESCENTISLAND)
[16:19:10] [PASSED] 0x674F (CRESCENTISLAND)
[16:19:10] [PASSED] 0x6750 (CRESCENTISLAND)
[16:19:10] [PASSED] 0x6751 (CRESCENTISLAND)
[16:19:10] [PASSED] 0x6752 (CRESCENTISLAND)
[16:19:10] [PASSED] 0xD750 (NOVALAKE_P)
[16:19:10] [PASSED] 0xD751 (NOVALAKE_P)
[16:19:10] [PASSED] 0xD752 (NOVALAKE_P)
[16:19:10] [PASSED] 0xD753 (NOVALAKE_P)
[16:19:10] [PASSED] 0xD754 (NOVALAKE_P)
[16:19:10] [PASSED] 0xD755 (NOVALAKE_P)
[16:19:10] [PASSED] 0xD756 (NOVALAKE_P)
[16:19:10] [PASSED] 0xD757 (NOVALAKE_P)
[16:19:10] [PASSED] 0xD75F (NOVALAKE_P)
[16:19:10] =============== [PASSED] check_platform_desc ===============
[16:19:10] ===================== [PASSED] xe_pci ======================
[16:19:10] ============= xe_rtp_tables_test (5 subtests) ==============
[16:19:10] ================== xe_rtp_table_gt_test ===================
[16:19:10] [PASSED] gt_was/14011060649
[16:19:10] [PASSED] gt_was/14011059788
[16:19:10] [PASSED] gt_was/14015795083
[16:19:10] [PASSED] gt_was/16021867713
[16:19:10] [PASSED] gt_was/14019449301
[16:19:10] [PASSED] gt_was/16028005424
[16:19:10] [PASSED] gt_was/14026578760
[16:19:10] [PASSED] gt_was/1409420604
[16:19:10] [PASSED] gt_was/1408615072
[16:19:10] [PASSED] gt_was/22010523718
[16:19:10] [PASSED] gt_was/14011006942
[16:19:10] [PASSED] gt_was/14014830051
[16:19:10] [PASSED] gt_was/18018781329
[16:19:10] [PASSED] gt_was/1509235366
[16:19:10] [PASSED] gt_was/18018781329
[16:19:10] [PASSED] gt_was/16016694945
[16:19:10] [PASSED] gt_was/14018575942
[16:19:10] [PASSED] gt_was/22016670082
[16:19:10] [PASSED] gt_was/22016670082
[16:19:10] [PASSED] gt_was/14017421178
[16:19:10] [PASSED] gt_was/16025250150
[16:19:10] [PASSED] gt_was/14021871409
[16:19:10] [PASSED] gt_was/16021865536
[16:19:10] [PASSED] gt_was/14021486841
[16:19:10] [PASSED] gt_was/14025160223
[16:19:10] [PASSED] gt_was/14026144927, 16029437861, 14026127056
[16:19:10] [PASSED] gt_was/14025635424
[16:19:10] [PASSED] gt_was/16028005424
[16:19:10] ============== [PASSED] xe_rtp_table_gt_test ===============
[16:19:10] ================== xe_rtp_table_gt_test ===================
[16:19:10] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable
[16:19:10] [PASSED] gt_tunings/Tuning: 32B Access Enable
[16:19:10] [PASSED] gt_tunings/Tuning: L3 cache
[16:19:10] [PASSED] gt_tunings/Tuning: L3 cache - media
[16:19:10] [PASSED] gt_tunings/Tuning: Compression Overfetch
[16:19:10] [PASSED] gt_tunings/Tuning: Compression Overfetch - media
[16:19:10] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3
[16:19:10] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media
[16:19:10] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only
[16:19:10] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media
[16:19:10] [PASSED] gt_tunings/Tuning: Stateless compression control
[16:19:10] [PASSED] gt_tunings/Tuning: Stateless compression control - media
[16:19:10] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache
[16:19:10] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media
[16:19:10] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB
[16:19:10] [PASSED] gt_tunings/Tuning: Force All Non-Compressible Memory Reads to be 256B Overfetches
[16:19:10] ============== [PASSED] xe_rtp_table_gt_test ===============
[16:19:10] ================== xe_rtp_table_oob_test ==================
[16:19:10] [PASSED] oob_was/1607983814
[16:19:10] [PASSED] oob_was/16010904313
[16:19:10] [PASSED] oob_was/18022495364
[16:19:10] [PASSED] oob_was/22012773006
[16:19:10] [PASSED] oob_was/14014475959
[16:19:10] [PASSED] oob_was/22011391025
[16:19:10] [PASSED] oob_was/22012727170
[16:19:10] [PASSED] oob_was/22012727685
[16:19:10] [PASSED] oob_was/22016596838
[16:19:10] [PASSED] oob_was/18020744125
[16:19:10] [PASSED] oob_was/1409600907
[16:19:10] [PASSED] oob_was/22014953428
[16:19:10] [PASSED] oob_was/16017236439
[16:19:10] [PASSED] oob_was/14019821291
[16:19:10] [PASSED] oob_was/14015076503
[16:19:10] [PASSED] oob_was/22016122933
[16:19:10] [PASSED] oob_was/14018913170
[16:19:10] [PASSED] oob_was/14018094691
[16:19:10] [PASSED] oob_was/18024947630
[16:19:10] [PASSED] oob_was/16022287689
[16:19:10] [PASSED] oob_was/13011645652
[16:19:10] [PASSED] oob_was/14022293748
[16:19:10] [PASSED] oob_was/22019794406
[16:19:10] [PASSED] oob_was/22019338487
[16:19:10] [PASSED] oob_was/16023588340
[16:19:10] [PASSED] oob_was/14019789679
[16:19:10] [PASSED] oob_was/14022866841
[16:19:10] [PASSED] oob_was/16021333562
[16:19:10] [PASSED] oob_was/14016712196
[16:19:10] [PASSED] oob_was/14015568240
[16:19:10] [PASSED] oob_was/18013179988
[16:19:10] [PASSED] oob_was/1508761755
[16:19:10] [PASSED] oob_was/16023105232
[16:19:10] [PASSED] oob_was/16026508708
[16:19:10] [PASSED] oob_was/14020001231
[16:19:10] [PASSED] oob_was/16023683509
[16:19:10] [PASSED] oob_was/14025515070
[16:19:10] [PASSED] oob_was/15015404425_disable
[16:19:10] [PASSED] oob_was/16026007364
[16:19:10] [PASSED] oob_was/14020316580
[16:19:10] [PASSED] oob_was/14025883347
[16:19:10] [PASSED] oob_was/16029380221
[16:19:10] [PASSED] oob_was/22022079272
[16:19:10] [PASSED] oob_was/16029897822
[16:19:10] [PASSED] oob_was/14026539277
[16:19:10] [PASSED] oob_was/14027054324
[16:19:10] [PASSED] oob_was/14025941587
[16:19:10] [PASSED] oob_was/16030224309
[16:19:10] [PASSED] oob_was/14028709524
[16:19:10] [PASSED] oob_was/14028250015
[16:19:10] [PASSED] oob_was/16031259911
[16:19:10] ============== [PASSED] xe_rtp_table_oob_test ==============
[16:19:10] ================ xe_rtp_table_dev_oob_test ================
[16:19:10] [PASSED] device_oob_was/22010954014
[16:19:10] [PASSED] device_oob_was/15015404425
[16:19:10] [PASSED] device_oob_was/22019338487_display
[16:19:10] [PASSED] device_oob_was/14022085890
[16:19:10] [PASSED] device_oob_was/14026633728
[16:19:10] [PASSED] device_oob_was/14026746987
[16:19:10] [PASSED] device_oob_was/14026779378
[16:19:10] [PASSED] device_oob_was/14028586678
[16:19:10] ============ [PASSED] xe_rtp_table_dev_oob_test ============
[16:19:10] ========== xe_rtp_table_missing_upper_bound_test ==========
[16:19:10] [PASSED] register_whitelist/WaAllowPMDepthAndInvocationCountAccessFromUMD, 1408556865
[16:19:10] [PASSED] register_whitelist/1508744258, 14012131227, 1808121037
[16:19:10] [PASSED] register_whitelist/1806527549
[16:19:10] [PASSED] register_whitelist/allow_read_ctx_timestamp
[16:19:10] [PASSED] register_whitelist/allow_read_queue_timestamp
[16:19:10] [PASSED] register_whitelist/16014440446
[16:19:10] [PASSED] register_whitelist/16017236439
[16:19:10] [PASSED] register_whitelist/16020183090
[16:19:10] [PASSED] register_whitelist/14024997852
[16:19:10] [PASSED] register_whitelist/14024997852
[16:19:10] ====== [PASSED] xe_rtp_table_missing_upper_bound_test ======
[16:19:10] =============== [PASSED] xe_rtp_tables_test ================
[16:19:10] =================== xe_rtp (3 subtests) ====================
[16:19:10] =================== xe_rtp_rules_tests ====================
[16:19:10] [PASSED] no
[16:19:10] [PASSED] yes
[16:19:10] [PASSED] no-and-no
[16:19:10] [PASSED] no-and-yes
[16:19:10] [PASSED] yes-and-no
[16:19:10] [PASSED] yes-and-yes
[16:19:10] [PASSED] no-or-no
[16:19:10] [PASSED] no-or-yes
[16:19:10] [PASSED] yes-or-no
[16:19:10] [PASSED] yes-or-yes
[16:19:10] [PASSED] no-yes-or-yes-no
[16:19:10] [PASSED] no-yes-or-yes-yes
[16:19:10] [PASSED] yes-yes-or-no-yes
[16:19:10] [PASSED] yes-yes-or-yes-yes
[16:19:10] [PASSED] no-no-or-yes-or-no
[16:19:10] [PASSED] or
[16:19:10] [PASSED] or-yes
[16:19:10] [PASSED] or-no
[16:19:10] [PASSED] yes-or
[16:19:10] [PASSED] no-or
[16:19:10] [PASSED] no-or-or-yes
[16:19:10] [PASSED] yes-or-or-no
[16:19:10] [PASSED] no-or-or-no
[16:19:10] [PASSED] missing-context-engine-class
[16:19:10] [PASSED] missing-context-engine-class-or-yes
[16:19:10] [PASSED] missing-context-engine-class-or-or-yes
[16:19:10] =============== [PASSED] xe_rtp_rules_tests ================
[16:19:10] =============== xe_rtp_process_to_sr_tests ================
[16:19:10] [PASSED] coalesce-same-reg
[16:19:10] [PASSED] coalesce-same-reg-literal-and-func
[16:19:10] [PASSED] no-match-no-add
[16:19:10] [PASSED] two-regs-two-entries
[16:19:10] [PASSED] clr-one-set-other
[16:19:10] [PASSED] set-field
[16:19:10] [PASSED] conflict-duplicate
[16:19:10] [PASSED] conflict-not-disjoint
[16:19:10] [PASSED] conflict-not-disjoint-literal-and-func
[16:19:10] [PASSED] conflict-reg-type
[16:19:10] [PASSED] bad-mcr-reg-forced-to-regular
[16:19:10] [PASSED] bad-regular-reg-forced-to-mcr
[16:19:10] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[16:19:10] ================== xe_rtp_process_tests ===================
[16:19:10] [PASSED] active1
[16:19:10] [PASSED] active2
[16:19:10] [PASSED] active-inactive
[16:19:10] [PASSED] inactive-active
[16:19:10] [PASSED] inactive-active-inactive
[16:19:10] [PASSED] inactive-inactive-inactive
[16:19:10] ============== [PASSED] xe_rtp_process_tests ===============
[16:19:10] ===================== [PASSED] xe_rtp ======================
[16:19:10] ==================== xe_wa (1 subtest) =====================
[16:19:10] ======================== xe_wa_gt =========================
[16:19:10] [PASSED] TIGERLAKE B0
[16:19:10] [PASSED] DG1 A0
[16:19:10] [PASSED] DG1 B0
[16:19:10] [PASSED] ALDERLAKE_S A0
[16:19:10] [PASSED] ALDERLAKE_S B0
[16:19:10] [PASSED] ALDERLAKE_S C0
[16:19:10] [PASSED] ALDERLAKE_S D0
[16:19:10] [PASSED] ALDERLAKE_P A0
[16:19:10] [PASSED] ALDERLAKE_P B0
[16:19:10] [PASSED] ALDERLAKE_P C0
[16:19:10] [PASSED] ALDERLAKE_S RPLS D0
[16:19:10] [PASSED] ALDERLAKE_P RPLU E0
[16:19:10] [PASSED] DG2 G10 C0
[16:19:10] [PASSED] DG2 G11 B1
[16:19:10] [PASSED] DG2 G12 A1
[16:19:10] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[16:19:10] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[16:19:10] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[16:19:10] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[16:19:10] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[16:19:10] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[16:19:10] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[16:19:10] ==================== [PASSED] xe_wa_gt =====================
[16:19:10] ====================== [PASSED] xe_wa ======================
[16:19:10] ============================================================
[16:19:10] Testing complete. Ran 843 tests: passed: 814, skipped: 29
[16:19:10] Elapsed time: 41.185s total, 2.494s configuring, 37.975s building, 0.707s running
+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/drm/tests/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[16:19:10] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[16:19:13] 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
[16:19:38] Starting KUnit Kernel (1/1)...
[16:19:38] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[16:19:38] ============ drm_test_pick_cmdline (2 subtests) ============
[16:19:38] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[16:19:38] =============== drm_test_pick_cmdline_named ===============
[16:19:38] [PASSED] NTSC
[16:19:38] [PASSED] NTSC-J
[16:19:38] [PASSED] PAL
[16:19:38] [PASSED] PAL-M
[16:19:38] =========== [PASSED] drm_test_pick_cmdline_named ===========
[16:19:38] ============== [PASSED] drm_test_pick_cmdline ==============
[16:19:38] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[16:19:38] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[16:19:38] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[16:19:38] =========== drm_validate_clone_mode (2 subtests) ===========
[16:19:38] ============== drm_test_check_in_clone_mode ===============
[16:19:38] [PASSED] in_clone_mode
[16:19:38] [PASSED] not_in_clone_mode
[16:19:38] ========== [PASSED] drm_test_check_in_clone_mode ===========
[16:19:38] =============== drm_test_check_valid_clones ===============
[16:19:38] [PASSED] not_in_clone_mode
[16:19:38] [PASSED] valid_clone
[16:19:38] [PASSED] invalid_clone
[16:19:38] =========== [PASSED] drm_test_check_valid_clones ===========
[16:19:38] ============= [PASSED] drm_validate_clone_mode =============
[16:19:38] ============= drm_validate_modeset (1 subtest) =============
[16:19:38] [PASSED] drm_test_check_connector_changed_modeset
[16:19:38] ============== [PASSED] drm_validate_modeset ===============
[16:19:38] ====== drm_test_bridge_get_current_state (1 subtest) =======
[16:19:38] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[16:19:38] ======== [PASSED] drm_test_bridge_get_current_state ========
[16:19:38] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[16:19:38] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[16:19:38] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[16:19:38] [PASSED] drm_test_drm_bridge_helper_hdmi_output_bus_fmts
[16:19:38] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[16:19:38] ============== drm_bridge_alloc (2 subtests) ===============
[16:19:38] [PASSED] drm_test_drm_bridge_alloc_basic
[16:19:38] [PASSED] drm_test_drm_bridge_alloc_get_put
[16:19:38] ================ [PASSED] drm_bridge_alloc =================
[16:19:38] ============= drm_bridge_bus_fmt (5 subtests) ==============
[16:19:38] [PASSED] drm_test_bridge_rgb_yuv_rgb
[16:19:38] [PASSED] drm_test_bridge_must_convert_to_yuv444
[16:19:38] [PASSED] drm_test_bridge_hdmi_auto_rgb
[16:19:38] [PASSED] drm_test_bridge_auto_first
[16:19:38] [PASSED] drm_test_bridge_rgb_yuv_no_path
[16:19:38] =============== [PASSED] drm_bridge_bus_fmt ================
[16:19:38] ============= drm_cmdline_parser (40 subtests) =============
[16:19:38] [PASSED] drm_test_cmdline_force_d_only
[16:19:38] [PASSED] drm_test_cmdline_force_D_only_dvi
[16:19:38] [PASSED] drm_test_cmdline_force_D_only_hdmi
[16:19:38] [PASSED] drm_test_cmdline_force_D_only_not_digital
[16:19:38] [PASSED] drm_test_cmdline_force_e_only
[16:19:38] [PASSED] drm_test_cmdline_res
[16:19:38] [PASSED] drm_test_cmdline_res_vesa
[16:19:38] [PASSED] drm_test_cmdline_res_vesa_rblank
[16:19:38] [PASSED] drm_test_cmdline_res_rblank
[16:19:38] [PASSED] drm_test_cmdline_res_bpp
[16:19:38] [PASSED] drm_test_cmdline_res_refresh
[16:19:38] [PASSED] drm_test_cmdline_res_bpp_refresh
[16:19:38] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[16:19:38] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[16:19:38] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[16:19:38] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[16:19:38] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[16:19:38] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[16:19:38] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[16:19:38] [PASSED] drm_test_cmdline_res_margins_force_on
[16:19:38] [PASSED] drm_test_cmdline_res_vesa_margins
[16:19:38] [PASSED] drm_test_cmdline_name
[16:19:38] [PASSED] drm_test_cmdline_name_bpp
[16:19:38] [PASSED] drm_test_cmdline_name_option
[16:19:38] [PASSED] drm_test_cmdline_name_bpp_option
[16:19:38] [PASSED] drm_test_cmdline_rotate_0
[16:19:38] [PASSED] drm_test_cmdline_rotate_90
[16:19:38] [PASSED] drm_test_cmdline_rotate_180
[16:19:38] [PASSED] drm_test_cmdline_rotate_270
[16:19:38] [PASSED] drm_test_cmdline_hmirror
[16:19:38] [PASSED] drm_test_cmdline_vmirror
[16:19:38] [PASSED] drm_test_cmdline_margin_options
[16:19:38] [PASSED] drm_test_cmdline_multiple_options
[16:19:38] [PASSED] drm_test_cmdline_bpp_extra_and_option
[16:19:38] [PASSED] drm_test_cmdline_extra_and_option
[16:19:38] [PASSED] drm_test_cmdline_freestanding_options
[16:19:38] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[16:19:38] [PASSED] drm_test_cmdline_panel_orientation
[16:19:38] ================ drm_test_cmdline_invalid =================
[16:19:38] [PASSED] margin_only
[16:19:38] [PASSED] interlace_only
[16:19:38] [PASSED] res_missing_x
[16:19:38] [PASSED] res_missing_y
[16:19:38] [PASSED] res_bad_y
[16:19:38] [PASSED] res_missing_y_bpp
[16:19:38] [PASSED] res_bad_bpp
[16:19:38] [PASSED] res_bad_refresh
[16:19:38] [PASSED] res_bpp_refresh_force_on_off
[16:19:38] [PASSED] res_invalid_mode
[16:19:38] [PASSED] res_bpp_wrong_place_mode
[16:19:38] [PASSED] name_bpp_refresh
[16:19:38] [PASSED] name_refresh
[16:19:38] [PASSED] name_refresh_wrong_mode
[16:19:38] [PASSED] name_refresh_invalid_mode
[16:19:38] [PASSED] rotate_multiple
[16:19:38] [PASSED] rotate_invalid_val
[16:19:38] [PASSED] rotate_truncated
[16:19:38] [PASSED] invalid_option
[16:19:38] [PASSED] invalid_tv_option
[16:19:38] [PASSED] truncated_tv_option
[16:19:38] ============ [PASSED] drm_test_cmdline_invalid =============
[16:19:38] =============== drm_test_cmdline_tv_options ===============
[16:19:38] [PASSED] NTSC
[16:19:38] [PASSED] NTSC_443
[16:19:38] [PASSED] NTSC_J
[16:19:38] [PASSED] PAL
[16:19:38] [PASSED] PAL_M
[16:19:38] [PASSED] PAL_N
[16:19:38] [PASSED] SECAM
[16:19:38] [PASSED] MONO_525
[16:19:38] [PASSED] MONO_625
[16:19:38] =========== [PASSED] drm_test_cmdline_tv_options ===========
[16:19:38] =============== [PASSED] drm_cmdline_parser ================
[16:19:38] ========== drmm_connector_hdmi_init (20 subtests) ==========
[16:19:38] [PASSED] drm_test_connector_hdmi_init_valid
[16:19:38] [PASSED] drm_test_connector_hdmi_init_bpc_8
[16:19:38] [PASSED] drm_test_connector_hdmi_init_bpc_10
[16:19:38] [PASSED] drm_test_connector_hdmi_init_bpc_12
[16:19:38] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[16:19:38] [PASSED] drm_test_connector_hdmi_init_bpc_null
[16:19:38] [PASSED] drm_test_connector_hdmi_init_formats_empty
[16:19:38] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[16:19:38] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[16:19:38] [PASSED] supported_formats=0x9 yuv420_allowed=1
[16:19:38] [PASSED] supported_formats=0x9 yuv420_allowed=0
[16:19:38] [PASSED] supported_formats=0x5 yuv420_allowed=1
[16:19:38] [PASSED] supported_formats=0x5 yuv420_allowed=0
[16:19:38] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[16:19:38] [PASSED] drm_test_connector_hdmi_init_null_ddc
[16:19:38] [PASSED] drm_test_connector_hdmi_init_null_product
[16:19:38] [PASSED] drm_test_connector_hdmi_init_null_vendor
[16:19:38] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[16:19:38] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[16:19:38] [PASSED] drm_test_connector_hdmi_init_product_valid
[16:19:38] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[16:19:38] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[16:19:38] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[16:19:38] ========= drm_test_connector_hdmi_init_type_valid =========
[16:19:38] [PASSED] HDMI-A
[16:19:38] [PASSED] HDMI-B
[16:19:38] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[16:19:38] ======== drm_test_connector_hdmi_init_type_invalid ========
[16:19:38] [PASSED] Unknown
[16:19:38] [PASSED] VGA
[16:19:38] [PASSED] DVI-I
[16:19:38] [PASSED] DVI-D
[16:19:38] [PASSED] DVI-A
[16:19:38] [PASSED] Composite
[16:19:38] [PASSED] SVIDEO
[16:19:38] [PASSED] LVDS
[16:19:38] [PASSED] Component
[16:19:38] [PASSED] DIN
[16:19:38] [PASSED] DP
[16:19:38] [PASSED] TV
[16:19:38] [PASSED] eDP
[16:19:38] [PASSED] Virtual
[16:19:38] [PASSED] DSI
[16:19:38] [PASSED] DPI
[16:19:38] [PASSED] Writeback
[16:19:38] [PASSED] SPI
[16:19:38] [PASSED] USB
[16:19:38] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[16:19:38] ============ [PASSED] drmm_connector_hdmi_init =============
[16:19:38] ============= drmm_connector_init (3 subtests) =============
[16:19:38] [PASSED] drm_test_drmm_connector_init
[16:19:38] [PASSED] drm_test_drmm_connector_init_null_ddc
[16:19:38] ========= drm_test_drmm_connector_init_type_valid =========
[16:19:38] [PASSED] Unknown
[16:19:38] [PASSED] VGA
[16:19:38] [PASSED] DVI-I
[16:19:38] [PASSED] DVI-D
[16:19:38] [PASSED] DVI-A
[16:19:38] [PASSED] Composite
[16:19:38] [PASSED] SVIDEO
[16:19:38] [PASSED] LVDS
[16:19:38] [PASSED] Component
[16:19:38] [PASSED] DIN
[16:19:38] [PASSED] DP
[16:19:38] [PASSED] HDMI-A
[16:19:38] [PASSED] HDMI-B
[16:19:38] [PASSED] TV
[16:19:38] [PASSED] eDP
[16:19:38] [PASSED] Virtual
[16:19:38] [PASSED] DSI
[16:19:38] [PASSED] DPI
[16:19:38] [PASSED] Writeback
[16:19:38] [PASSED] SPI
[16:19:38] [PASSED] USB
[16:19:38] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[16:19:38] =============== [PASSED] drmm_connector_init ===============
[16:19:38] ========= drm_connector_dynamic_init (6 subtests) ==========
[16:19:38] [PASSED] drm_test_drm_connector_dynamic_init
[16:19:38] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[16:19:38] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[16:19:38] [PASSED] drm_test_drm_connector_dynamic_init_properties
[16:19:38] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[16:19:38] [PASSED] Unknown
[16:19:38] [PASSED] VGA
[16:19:38] [PASSED] DVI-I
[16:19:38] [PASSED] DVI-D
[16:19:38] [PASSED] DVI-A
[16:19:38] [PASSED] Composite
[16:19:38] [PASSED] SVIDEO
[16:19:38] [PASSED] LVDS
[16:19:38] [PASSED] Component
[16:19:38] [PASSED] DIN
[16:19:38] [PASSED] DP
[16:19:38] [PASSED] HDMI-A
[16:19:38] [PASSED] HDMI-B
[16:19:38] [PASSED] TV
[16:19:38] [PASSED] eDP
[16:19:38] [PASSED] Virtual
[16:19:38] [PASSED] DSI
[16:19:38] [PASSED] DPI
[16:19:38] [PASSED] Writeback
[16:19:38] [PASSED] SPI
[16:19:38] [PASSED] USB
[16:19:38] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[16:19:38] ======== drm_test_drm_connector_dynamic_init_name =========
[16:19:38] [PASSED] Unknown
[16:19:38] [PASSED] VGA
[16:19:38] [PASSED] DVI-I
[16:19:38] [PASSED] DVI-D
[16:19:38] [PASSED] DVI-A
[16:19:38] [PASSED] Composite
[16:19:38] [PASSED] SVIDEO
[16:19:38] [PASSED] LVDS
[16:19:38] [PASSED] Component
[16:19:38] [PASSED] DIN
[16:19:38] [PASSED] DP
[16:19:38] [PASSED] HDMI-A
[16:19:38] [PASSED] HDMI-B
[16:19:38] [PASSED] TV
[16:19:38] [PASSED] eDP
[16:19:38] [PASSED] Virtual
[16:19:38] [PASSED] DSI
[16:19:38] [PASSED] DPI
[16:19:38] [PASSED] Writeback
[16:19:38] [PASSED] SPI
[16:19:38] [PASSED] USB
[16:19:38] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[16:19:38] =========== [PASSED] drm_connector_dynamic_init ============
[16:19:38] ==== drm_connector_dynamic_register_early (4 subtests) =====
[16:19:38] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[16:19:38] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[16:19:38] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[16:19:38] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[16:19:38] ====== [PASSED] drm_connector_dynamic_register_early =======
[16:19:38] ======= drm_connector_dynamic_register (7 subtests) ========
[16:19:38] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[16:19:38] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[16:19:38] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[16:19:38] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[16:19:38] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[16:19:38] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[16:19:38] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[16:19:38] ========= [PASSED] drm_connector_dynamic_register ==========
[16:19:38] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[16:19:38] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[16:19:38] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[16:19:38] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[16:19:38] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[16:19:38] ========== drm_test_get_tv_mode_from_name_valid ===========
[16:19:38] [PASSED] NTSC
[16:19:38] [PASSED] NTSC-443
[16:19:38] [PASSED] NTSC-J
[16:19:38] [PASSED] PAL
[16:19:38] [PASSED] PAL-M
[16:19:38] [PASSED] PAL-N
[16:19:38] [PASSED] SECAM
[16:19:38] [PASSED] Mono
[16:19:38] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[16:19:38] [PASSED] drm_test_get_tv_mode_from_name_truncated
[16:19:38] ============ [PASSED] drm_get_tv_mode_from_name ============
[16:19:38] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[16:19:38] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[16:19:38] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[16:19:38] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[16:19:38] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[16:19:38] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[16:19:38] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[16:19:38] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[16:19:38] [PASSED] VIC 96
[16:19:38] [PASSED] VIC 97
[16:19:38] [PASSED] VIC 101
[16:19:38] [PASSED] VIC 102
[16:19:38] [PASSED] VIC 106
[16:19:38] [PASSED] VIC 107
[16:19:38] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[16:19:38] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[16:19:38] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[16:19:38] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[16:19:38] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[16:19:38] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[16:19:38] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[16:19:38] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[16:19:38] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[16:19:38] [PASSED] Automatic
[16:19:38] [PASSED] Full
[16:19:38] [PASSED] Limited 16:235
[16:19:38] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[16:19:38] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[16:19:38] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[16:19:38] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[16:19:38] === drm_test_drm_hdmi_connector_get_output_format_name ====
[16:19:38] [PASSED] RGB
[16:19:38] [PASSED] YUV 4:2:0
[16:19:38] [PASSED] YUV 4:2:2
[16:19:38] [PASSED] YUV 4:4:4
[16:19:38] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[16:19:38] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[16:19:38] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[16:19:38] ============= drm_damage_helper (21 subtests) ==============
[16:19:38] [PASSED] drm_test_damage_iter_no_damage
[16:19:38] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[16:19:38] [PASSED] drm_test_damage_iter_no_damage_src_moved
[16:19:38] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[16:19:38] [PASSED] drm_test_damage_iter_no_damage_not_visible
[16:19:38] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[16:19:38] [PASSED] drm_test_damage_iter_no_damage_no_fb
[16:19:38] [PASSED] drm_test_damage_iter_simple_damage
[16:19:38] [PASSED] drm_test_damage_iter_single_damage
[16:19:38] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[16:19:38] [PASSED] drm_test_damage_iter_single_damage_outside_src
[16:19:38] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[16:19:38] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[16:19:38] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[16:19:38] [PASSED] drm_test_damage_iter_single_damage_src_moved
[16:19:38] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[16:19:38] [PASSED] drm_test_damage_iter_damage
[16:19:38] [PASSED] drm_test_damage_iter_damage_one_intersect
[16:19:38] [PASSED] drm_test_damage_iter_damage_one_outside
[16:19:38] [PASSED] drm_test_damage_iter_damage_src_moved
[16:19:38] [PASSED] drm_test_damage_iter_damage_not_visible
[16:19:38] ================ [PASSED] drm_damage_helper ================
[16:19:38] ============== drm_dp_mst_helper (3 subtests) ==============
[16:19:38] ============== drm_test_dp_mst_calc_pbn_mode ==============
[16:19:38] [PASSED] Clock 154000 BPP 30 DSC disabled
[16:19:38] [PASSED] Clock 234000 BPP 30 DSC disabled
[16:19:38] [PASSED] Clock 297000 BPP 24 DSC disabled
[16:19:38] [PASSED] Clock 332880 BPP 24 DSC enabled
[16:19:38] [PASSED] Clock 324540 BPP 24 DSC enabled
[16:19:38] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[16:19:38] ============== drm_test_dp_mst_calc_pbn_div ===============
[16:19:38] [PASSED] Link rate 2000000 lane count 4
[16:19:38] [PASSED] Link rate 2000000 lane count 2
[16:19:38] [PASSED] Link rate 2000000 lane count 1
[16:19:38] [PASSED] Link rate 1350000 lane count 4
[16:19:38] [PASSED] Link rate 1350000 lane count 2
[16:19:38] [PASSED] Link rate 1350000 lane count 1
[16:19:38] [PASSED] Link rate 1000000 lane count 4
[16:19:38] [PASSED] Link rate 1000000 lane count 2
[16:19:38] [PASSED] Link rate 1000000 lane count 1
[16:19:38] [PASSED] Link rate 810000 lane count 4
[16:19:38] [PASSED] Link rate 810000 lane count 2
[16:19:38] [PASSED] Link rate 810000 lane count 1
[16:19:38] [PASSED] Link rate 540000 lane count 4
[16:19:38] [PASSED] Link rate 540000 lane count 2
[16:19:38] [PASSED] Link rate 540000 lane count 1
[16:19:38] [PASSED] Link rate 270000 lane count 4
[16:19:38] [PASSED] Link rate 270000 lane count 2
[16:19:38] [PASSED] Link rate 270000 lane count 1
[16:19:38] [PASSED] Link rate 162000 lane count 4
[16:19:38] [PASSED] Link rate 162000 lane count 2
[16:19:38] [PASSED] Link rate 162000 lane count 1
[16:19:38] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[16:19:38] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[16:19:38] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[16:19:38] [PASSED] DP_POWER_UP_PHY with port number
[16:19:38] [PASSED] DP_POWER_DOWN_PHY with port number
[16:19:38] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[16:19:38] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[16:19:38] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[16:19:38] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[16:19:38] [PASSED] DP_QUERY_PAYLOAD with port number
[16:19:38] [PASSED] DP_QUERY_PAYLOAD with VCPI
[16:19:38] [PASSED] DP_REMOTE_DPCD_READ with port number
[16:19:38] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[16:19:38] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[16:19:38] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[16:19:38] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[16:19:38] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[16:19:38] [PASSED] DP_REMOTE_I2C_READ with port number
[16:19:38] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[16:19:38] [PASSED] DP_REMOTE_I2C_READ with transactions array
[16:19:38] [PASSED] DP_REMOTE_I2C_WRITE with port number
[16:19:38] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[16:19:38] [PASSED] DP_REMOTE_I2C_WRITE with data array
[16:19:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[16:19:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[16:19:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[16:19:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[16:19:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[16:19:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[16:19:38] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[16:19:38] ================ [PASSED] drm_dp_mst_helper ================
[16:19:38] ================== drm_exec (7 subtests) ===================
[16:19:38] [PASSED] sanitycheck
[16:19:38] [PASSED] test_lock
[16:19:38] [PASSED] test_lock_unlock
[16:19:38] [PASSED] test_duplicates
[16:19:38] [PASSED] test_prepare
[16:19:38] [PASSED] test_prepare_array
[16:19:38] [PASSED] test_multiple_loops
[16:19:38] ==================== [PASSED] drm_exec =====================
[16:19:38] =========== drm_format_helper_test (17 subtests) ===========
[16:19:38] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[16:19:38] [PASSED] single_pixel_source_buffer
[16:19:38] [PASSED] single_pixel_clip_rectangle
[16:19:38] [PASSED] well_known_colors
[16:19:38] [PASSED] destination_pitch
[16:19:38] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[16:19:38] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[16:19:38] [PASSED] single_pixel_source_buffer
[16:19:38] [PASSED] single_pixel_clip_rectangle
[16:19:38] [PASSED] well_known_colors
[16:19:38] [PASSED] destination_pitch
[16:19:38] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[16:19:38] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[16:19:38] [PASSED] single_pixel_source_buffer
[16:19:38] [PASSED] single_pixel_clip_rectangle
[16:19:38] [PASSED] well_known_colors
[16:19:38] [PASSED] destination_pitch
[16:19:38] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[16:19:38] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[16:19:38] [PASSED] single_pixel_source_buffer
[16:19:38] [PASSED] single_pixel_clip_rectangle
[16:19:38] [PASSED] well_known_colors
[16:19:38] [PASSED] destination_pitch
[16:19:38] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[16:19:38] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[16:19:38] [PASSED] single_pixel_source_buffer
[16:19:38] [PASSED] single_pixel_clip_rectangle
[16:19:38] [PASSED] well_known_colors
[16:19:38] [PASSED] destination_pitch
[16:19:38] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[16:19:38] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[16:19:38] [PASSED] single_pixel_source_buffer
[16:19:38] [PASSED] single_pixel_clip_rectangle
[16:19:38] [PASSED] well_known_colors
[16:19:38] [PASSED] destination_pitch
[16:19:38] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[16:19:38] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[16:19:38] [PASSED] single_pixel_source_buffer
[16:19:38] [PASSED] single_pixel_clip_rectangle
[16:19:38] [PASSED] well_known_colors
[16:19:38] [PASSED] destination_pitch
[16:19:38] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[16:19:38] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[16:19:38] [PASSED] single_pixel_source_buffer
[16:19:38] [PASSED] single_pixel_clip_rectangle
[16:19:38] [PASSED] well_known_colors
[16:19:38] [PASSED] destination_pitch
[16:19:38] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[16:19:38] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[16:19:38] [PASSED] single_pixel_source_buffer
[16:19:38] [PASSED] single_pixel_clip_rectangle
[16:19:38] [PASSED] well_known_colors
[16:19:38] [PASSED] destination_pitch
[16:19:38] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[16:19:38] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[16:19:38] [PASSED] single_pixel_source_buffer
[16:19:38] [PASSED] single_pixel_clip_rectangle
[16:19:38] [PASSED] well_known_colors
[16:19:38] [PASSED] destination_pitch
[16:19:38] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[16:19:38] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[16:19:38] [PASSED] single_pixel_source_buffer
[16:19:38] [PASSED] single_pixel_clip_rectangle
[16:19:38] [PASSED] well_known_colors
[16:19:38] [PASSED] destination_pitch
[16:19:38] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[16:19:38] ============== drm_test_fb_xrgb8888_to_mono ===============
[16:19:38] [PASSED] single_pixel_source_buffer
[16:19:38] [PASSED] single_pixel_clip_rectangle
[16:19:38] [PASSED] well_known_colors
[16:19:38] [PASSED] destination_pitch
[16:19:38] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[16:19:38] ==================== drm_test_fb_swab =====================
[16:19:38] [PASSED] single_pixel_source_buffer
[16:19:38] [PASSED] single_pixel_clip_rectangle
[16:19:38] [PASSED] well_known_colors
[16:19:38] [PASSED] destination_pitch
[16:19:38] ================ [PASSED] drm_test_fb_swab =================
[16:19:38] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[16:19:38] [PASSED] single_pixel_source_buffer
[16:19:38] [PASSED] single_pixel_clip_rectangle
[16:19:38] [PASSED] well_known_colors
[16:19:38] [PASSED] destination_pitch
[16:19:38] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[16:19:38] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[16:19:38] [PASSED] single_pixel_source_buffer
[16:19:38] [PASSED] single_pixel_clip_rectangle
[16:19:38] [PASSED] well_known_colors
[16:19:38] [PASSED] destination_pitch
[16:19:38] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[16:19:38] ================= drm_test_fb_clip_offset =================
[16:19:38] [PASSED] pass through
[16:19:38] [PASSED] horizontal offset
[16:19:38] [PASSED] vertical offset
[16:19:38] [PASSED] horizontal and vertical offset
[16:19:38] [PASSED] horizontal offset (custom pitch)
[16:19:38] [PASSED] vertical offset (custom pitch)
[16:19:38] [PASSED] horizontal and vertical offset (custom pitch)
[16:19:38] ============= [PASSED] drm_test_fb_clip_offset =============
[16:19:38] =================== drm_test_fb_memcpy ====================
[16:19:38] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[16:19:38] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[16:19:38] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[16:19:38] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[16:19:38] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[16:19:38] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[16:19:38] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[16:19:38] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[16:19:38] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[16:19:38] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[16:19:38] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[16:19:38] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[16:19:38] =============== [PASSED] drm_test_fb_memcpy ================
[16:19:38] ============= [PASSED] drm_format_helper_test ==============
[16:19:38] ================= drm_format (18 subtests) =================
[16:19:38] [PASSED] drm_test_format_block_width_invalid
[16:19:38] [PASSED] drm_test_format_block_width_one_plane
[16:19:38] [PASSED] drm_test_format_block_width_two_plane
[16:19:38] [PASSED] drm_test_format_block_width_three_plane
[16:19:38] [PASSED] drm_test_format_block_width_tiled
[16:19:38] [PASSED] drm_test_format_block_height_invalid
[16:19:38] [PASSED] drm_test_format_block_height_one_plane
[16:19:38] [PASSED] drm_test_format_block_height_two_plane
[16:19:38] [PASSED] drm_test_format_block_height_three_plane
[16:19:38] [PASSED] drm_test_format_block_height_tiled
[16:19:38] [PASSED] drm_test_format_min_pitch_invalid
[16:19:38] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[16:19:38] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[16:19:38] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[16:19:38] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[16:19:38] [PASSED] drm_test_format_min_pitch_two_plane
[16:19:38] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[16:19:38] [PASSED] drm_test_format_min_pitch_tiled
[16:19:38] =================== [PASSED] drm_format ====================
[16:19:38] ============== drm_framebuffer (10 subtests) ===============
[16:19:38] ========== drm_test_framebuffer_check_src_coords ==========
[16:19:38] [PASSED] Success: source fits into fb
[16:19:38] [PASSED] Fail: overflowing fb with x-axis coordinate
[16:19:38] [PASSED] Fail: overflowing fb with y-axis coordinate
[16:19:38] [PASSED] Fail: overflowing fb with source width
[16:19:38] [PASSED] Fail: overflowing fb with source height
[16:19:38] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[16:19:38] [PASSED] drm_test_framebuffer_cleanup
[16:19:38] =============== drm_test_framebuffer_create ===============
[16:19:38] [PASSED] ABGR8888 normal sizes
[16:19:38] [PASSED] ABGR8888 max sizes
[16:19:38] [PASSED] ABGR8888 pitch greater than min required
[16:19:38] [PASSED] ABGR8888 pitch less than min required
[16:19:38] [PASSED] ABGR8888 Invalid width
[16:19:38] [PASSED] ABGR8888 Invalid buffer handle
[16:19:38] [PASSED] No pixel format
[16:19:38] [PASSED] ABGR8888 Width 0
[16:19:38] [PASSED] ABGR8888 Height 0
[16:19:38] [PASSED] ABGR8888 Out of bound height * pitch combination
[16:19:38] [PASSED] ABGR8888 Large buffer offset
[16:19:38] [PASSED] ABGR8888 Buffer offset for inexistent plane
[16:19:38] [PASSED] ABGR8888 Invalid flag
[16:19:38] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[16:19:38] [PASSED] ABGR8888 Valid buffer modifier
[16:19:38] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[16:19:38] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[16:19:38] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[16:19:38] [PASSED] NV12 Normal sizes
[16:19:38] [PASSED] NV12 Max sizes
[16:19:38] [PASSED] NV12 Invalid pitch
[16:19:38] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[16:19:38] [PASSED] NV12 different modifier per-plane
[16:19:38] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[16:19:38] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[16:19:38] [PASSED] NV12 Modifier for inexistent plane
[16:19:38] [PASSED] NV12 Handle for inexistent plane
[16:19:38] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[16:19:38] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[16:19:38] [PASSED] YVU420 Normal sizes
[16:19:38] [PASSED] YVU420 Max sizes
[16:19:38] [PASSED] YVU420 Invalid pitch
[16:19:38] [PASSED] YVU420 Different pitches
[16:19:38] [PASSED] YVU420 Different buffer offsets/pitches
[16:19:38] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[16:19:38] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[16:19:38] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[16:19:38] [PASSED] YVU420 Valid modifier
[16:19:38] [PASSED] YVU420 Different modifiers per plane
[16:19:38] [PASSED] YVU420 Modifier for inexistent plane
[16:19:38] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[16:19:38] [PASSED] X0L2 Normal sizes
[16:19:38] [PASSED] X0L2 Max sizes
[16:19:38] [PASSED] X0L2 Invalid pitch
[16:19:38] [PASSED] X0L2 Pitch greater than minimum required
[16:19:38] [PASSED] X0L2 Handle for inexistent plane
[16:19:38] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[16:19:38] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[16:19:38] [PASSED] X0L2 Valid modifier
[16:19:38] [PASSED] X0L2 Modifier for inexistent plane
[16:19:38] =========== [PASSED] drm_test_framebuffer_create ===========
[16:19:38] [PASSED] drm_test_framebuffer_free
[16:19:38] [PASSED] drm_test_framebuffer_init
[16:19:38] [PASSED] drm_test_framebuffer_init_bad_format
[16:19:38] [PASSED] drm_test_framebuffer_init_dev_mismatch
[16:19:38] [PASSED] drm_test_framebuffer_lookup
[16:19:38] [PASSED] drm_test_framebuffer_lookup_inexistent
[16:19:38] [PASSED] drm_test_framebuffer_modifiers_not_supported
[16:19:38] ================= [PASSED] drm_framebuffer =================
[16:19:38] ================ drm_gem_shmem (8 subtests) ================
[16:19:38] [PASSED] drm_gem_shmem_test_obj_create
[16:19:38] [PASSED] drm_gem_shmem_test_obj_create_private
[16:19:38] [PASSED] drm_gem_shmem_test_pin_pages
[16:19:38] [PASSED] drm_gem_shmem_test_vmap
[16:19:38] [PASSED] drm_gem_shmem_test_get_sg_table
[16:19:38] [PASSED] drm_gem_shmem_test_get_pages_sgt
[16:19:38] [PASSED] drm_gem_shmem_test_madvise
[16:19:38] [PASSED] drm_gem_shmem_test_purge
[16:19:38] ================== [PASSED] drm_gem_shmem ==================
[16:19:38] === drm_atomic_helper_connector_hdmi_check (29 subtests) ===
[16:19:38] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[16:19:38] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[16:19:38] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[16:19:38] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[16:19:38] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[16:19:38] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[16:19:38] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[16:19:38] [PASSED] Automatic
[16:19:38] [PASSED] Full
[16:19:38] [PASSED] Limited 16:235
[16:19:38] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[16:19:38] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[16:19:38] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[16:19:38] [PASSED] drm_test_check_disable_connector
[16:19:38] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[16:19:38] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[16:19:38] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[16:19:38] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[16:19:38] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[16:19:38] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[16:19:38] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[16:19:38] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[16:19:38] [PASSED] drm_test_check_output_bpc_dvi
[16:19:38] [PASSED] drm_test_check_output_bpc_format_vic_1
[16:19:38] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[16:19:38] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[16:19:38] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[16:19:38] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[16:19:38] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[16:19:38] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[16:19:38] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[16:19:38] ============ drm_test_check_hdmi_color_format =============
[16:19:38] [PASSED] AUTO -> RGB
[16:19:38] [PASSED] YCBCR422 -> YUV422
[16:19:38] [PASSED] YCBCR420 -> YUV420
[16:19:38] [PASSED] YCBCR444 -> YUV444
[16:19:38] [PASSED] RGB -> RGB
[16:19:38] ======== [PASSED] drm_test_check_hdmi_color_format =========
[16:19:38] ======== drm_test_check_hdmi_color_format_420_only ========
[16:19:38] [PASSED] RGB should fail
[16:19:38] [PASSED] YUV444 should fail
[16:19:38] [PASSED] YUV422 should fail
[16:19:38] [PASSED] YUV420 should work
[16:19:38] ==== [PASSED] drm_test_check_hdmi_color_format_420_only ====
[16:19:38] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[16:19:38] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[16:19:38] [PASSED] drm_test_check_broadcast_rgb_value
[16:19:38] [PASSED] drm_test_check_bpc_8_value
[16:19:38] [PASSED] drm_test_check_bpc_10_value
[16:19:38] [PASSED] drm_test_check_bpc_12_value
[16:19:38] [PASSED] drm_test_check_format_value
[16:19:38] [PASSED] drm_test_check_tmds_char_value
[16:19:38] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[16:19:38] = drm_atomic_helper_connector_hdmi_mode_valid (7 subtests) =
[16:19:38] [PASSED] drm_test_check_mode_valid
[16:19:38] [PASSED] drm_test_check_mode_valid_reject
[16:19:38] [PASSED] drm_test_check_mode_valid_reject_rate
[16:19:38] [PASSED] drm_test_check_mode_valid_reject_max_clock
[16:19:38] [PASSED] drm_test_check_mode_valid_yuv420_only_max_clock
[16:19:38] [PASSED] drm_test_check_mode_valid_reject_yuv420_only_connector
[16:19:38] [PASSED] drm_test_check_mode_valid_accept_yuv420_also_connector_rgb
[16:19:38] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[16:19:38] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[16:19:38] [PASSED] drm_test_check_infoframes
[16:19:38] [PASSED] drm_test_check_reject_avi_infoframe
[16:19:38] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[16:19:38] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[16:19:38] [PASSED] drm_test_check_reject_audio_infoframe
[16:19:38] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[16:19:38] ================= drm_managed (2 subtests) =================
[16:19:38] [PASSED] drm_test_managed_release_action
[16:19:38] [PASSED] drm_test_managed_run_action
[16:19:38] =================== [PASSED] drm_managed ===================
[16:19:38] =================== drm_mm (6 subtests) ====================
[16:19:38] [PASSED] drm_test_mm_init
[16:19:38] [PASSED] drm_test_mm_debug
[16:19:38] [PASSED] drm_test_mm_align32
[16:19:38] [PASSED] drm_test_mm_align64
[16:19:38] [PASSED] drm_test_mm_lowest
[16:19:38] [PASSED] drm_test_mm_highest
[16:19:38] ===================== [PASSED] drm_mm ======================
[16:19:38] ============= drm_modes_analog_tv (5 subtests) =============
[16:19:38] [PASSED] drm_test_modes_analog_tv_mono_576i
[16:19:38] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[16:19:38] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[16:19:38] [PASSED] drm_test_modes_analog_tv_pal_576i
[16:19:38] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[16:19:38] =============== [PASSED] drm_modes_analog_tv ===============
[16:19:38] ============== drm_panic_helper (3 subtests) ===============
[16:19:38] ============= drm_test_panic_screen_user_map ==============
[16:19:38] [PASSED] Panic screen user, mode: 1024 x 768 XR24 little-endian (0x34325258)
[16:19:38] [PASSED] Panic screen user, mode: 494 x 494 XR24 little-endian (0x34325258)
[16:19:38] [PASSED] Panic screen user, mode: 1920 x 1080 XR24 little-endian (0x34325258)
[16:19:38] [PASSED] Panic screen user, mode: 1024 x 768 RG16 little-endian (0x36314752)
[16:19:38] [PASSED] Panic screen user, mode: 1024 x 768 RG24 little-endian (0x34324752)
[16:19:38] [PASSED] Panic screen kmsg, mode: 1024 x 768 XR24 little-endian (0x34325258)
[16:19:38] [PASSED] Panic screen kmsg, mode: 494 x 494 XR24 little-endian (0x34325258)
[16:19:38] [PASSED] Panic screen kmsg, mode: 1920 x 1080 XR24 little-endian (0x34325258)
[16:19:38] [PASSED] Panic screen kmsg, mode: 1024 x 768 RG16 little-endian (0x36314752)
[16:19:38] [PASSED] Panic screen kmsg, mode: 1024 x 768 RG24 little-endian (0x34324752)
[16:19:38] ========= [PASSED] drm_test_panic_screen_user_map ==========
[16:19:38] ============= drm_test_panic_screen_user_page =============
[16:19:38] [PASSED] Panic screen user, mode: 1024 x 768 XR24 little-endian (0x34325258)
[16:19:38] [PASSED] Panic screen user, mode: 494 x 494 XR24 little-endian (0x34325258)
[16:19:38] [PASSED] Panic screen user, mode: 1920 x 1080 XR24 little-endian (0x34325258)
[16:19:38] [PASSED] Panic screen user, mode: 1024 x 768 RG16 little-endian (0x36314752)
[16:19:38] [PASSED] Panic screen user, mode: 1024 x 768 RG24 little-endian (0x34324752)
[16:19:38] [PASSED] Panic screen kmsg, mode: 1024 x 768 XR24 little-endian (0x34325258)
[16:19:38] [PASSED] Panic screen kmsg, mode: 494 x 494 XR24 little-endian (0x34325258)
[16:19:38] [PASSED] Panic screen kmsg, mode: 1920 x 1080 XR24 little-endian (0x34325258)
[16:19:38] [PASSED] Panic screen kmsg, mode: 1024 x 768 RG16 little-endian (0x36314752)
[16:19:38] [PASSED] Panic screen kmsg, mode: 1024 x 768 RG24 little-endian (0x34324752)
[16:19:38] ========= [PASSED] drm_test_panic_screen_user_page =========
[16:19:38] ========== drm_test_panic_screen_user_set_pixel ===========
[16:19:38] [PASSED] Panic screen user, mode: 1024 x 768 XR24 little-endian (0x34325258)
[16:19:38] [PASSED] Panic screen user, mode: 494 x 494 XR24 little-endian (0x34325258)
[16:19:38] [PASSED] Panic screen user, mode: 1920 x 1080 XR24 little-endian (0x34325258)
[16:19:38] [PASSED] Panic screen user, mode: 1024 x 768 RG16 little-endian (0x36314752)
[16:19:38] [PASSED] Panic screen user, mode: 1024 x 768 RG24 little-endian (0x34324752)
[16:19:38] [PASSED] Panic screen kmsg, mode: 1024 x 768 XR24 little-endian (0x34325258)
[16:19:38] [PASSED] Panic screen kmsg, mode: 494 x 494 XR24 little-endian (0x34325258)
[16:19:38] [PASSED] Panic screen kmsg, mode: 1920 x 1080 XR24 little-endian (0x34325258)
[16:19:38] [PASSED] Panic screen kmsg, mode: 1024 x 768 RG16 little-endian (0x36314752)
[16:19:38] [PASSED] Panic screen kmsg, mode: 1024 x 768 RG24 little-endian (0x34324752)
[16:19:38] ====== [PASSED] drm_test_panic_screen_user_set_pixel =======
[16:19:38] ================ [PASSED] drm_panic_helper =================
[16:19:38] ============== drm_plane_helper (2 subtests) ===============
[16:19:38] =============== drm_test_check_plane_state ================
[16:19:38] [PASSED] clipping_simple
[16:19:38] [PASSED] clipping_rotate_reflect
[16:19:38] [PASSED] positioning_simple
[16:19:38] [PASSED] upscaling
[16:19:38] [PASSED] downscaling
[16:19:38] [PASSED] rounding1
[16:19:38] [PASSED] rounding2
[16:19:38] [PASSED] rounding3
[16:19:38] [PASSED] rounding4
[16:19:38] =========== [PASSED] drm_test_check_plane_state ============
[16:19:38] =========== drm_test_check_invalid_plane_state ============
[16:19:38] [PASSED] positioning_invalid
[16:19:38] [PASSED] upscaling_invalid
[16:19:38] [PASSED] downscaling_invalid
[16:19:38] ======= [PASSED] drm_test_check_invalid_plane_state ========
[16:19:38] ================ [PASSED] drm_plane_helper =================
[16:19:38] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[16:19:38] ====== drm_test_connector_helper_tv_get_modes_check =======
[16:19:38] [PASSED] None
[16:19:38] [PASSED] PAL
[16:19:38] [PASSED] NTSC
[16:19:38] [PASSED] Both, NTSC Default
[16:19:38] [PASSED] Both, PAL Default
[16:19:38] [PASSED] Both, NTSC Default, with PAL on command-line
[16:19:38] [PASSED] Both, PAL Default, with NTSC on command-line
[16:19:38] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[16:19:38] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[16:19:38] ================== drm_rect (9 subtests) ===================
[16:19:38] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[16:19:38] [PASSED] drm_test_rect_clip_scaled_not_clipped
[16:19:38] [PASSED] drm_test_rect_clip_scaled_clipped
[16:19:38] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[16:19:38] ================= drm_test_rect_intersect =================
[16:19:38] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[16:19:38] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[16:19:38] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[16:19:38] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[16:19:38] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[16:19:38] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[16:19:38] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[16:19:38] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[16:19:38] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[16:19:38] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[16:19:38] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[16:19:38] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[16:19:38] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[16:19:38] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[16:19:38] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[16:19:38] ============= [PASSED] drm_test_rect_intersect =============
[16:19:38] ================ drm_test_rect_calc_hscale ================
[16:19:38] [PASSED] normal use
[16:19:38] [PASSED] out of max range
[16:19:38] [PASSED] out of min range
[16:19:38] [PASSED] zero dst
[16:19:38] [PASSED] negative src
[16:19:38] [PASSED] negative dst
[16:19:38] ============ [PASSED] drm_test_rect_calc_hscale ============
[16:19:38] ================ drm_test_rect_calc_vscale ================
[16:19:38] [PASSED] normal use
[16:19:38] [PASSED] out of max range
[16:19:38] [PASSED] out of min range
[16:19:38] [PASSED] zero dst
[16:19:38] [PASSED] negative src
[16:19:38] [PASSED] negative dst
[16:19:38] ============ [PASSED] drm_test_rect_calc_vscale ============
[16:19:38] ================== drm_test_rect_rotate ===================
[16:19:38] [PASSED] reflect-x
[16:19:38] [PASSED] reflect-y
[16:19:38] [PASSED] rotate-0
[16:19:38] [PASSED] rotate-90
[16:19:38] [PASSED] rotate-180
[16:19:38] [PASSED] rotate-270
[16:19:38] ============== [PASSED] drm_test_rect_rotate ===============
[16:19:38] ================ drm_test_rect_rotate_inv =================
[16:19:38] [PASSED] reflect-x
[16:19:38] [PASSED] reflect-y
[16:19:38] [PASSED] rotate-0
[16:19:38] [PASSED] rotate-90
[16:19:38] [PASSED] rotate-180
[16:19:38] [PASSED] rotate-270
[16:19:38] ============ [PASSED] drm_test_rect_rotate_inv =============
[16:19:38] ==================== [PASSED] drm_rect =====================
[16:19:38] ============ drm_sysfb_modeset_test (1 subtest) ============
[16:19:38] ============ drm_test_sysfb_build_fourcc_list =============
[16:19:38] [PASSED] no native formats
[16:19:38] [PASSED] XRGB8888 as native format
[16:19:38] [PASSED] remove duplicates
[16:19:38] [PASSED] convert alpha formats
[16:19:38] [PASSED] random formats
[16:19:38] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[16:19:38] ============= [PASSED] drm_sysfb_modeset_test ==============
[16:19:38] ================== drm_fixp (2 subtests) ===================
[16:19:38] [PASSED] drm_test_int2fixp
[16:19:38] [PASSED] drm_test_sm2fixp
[16:19:38] ==================== [PASSED] drm_fixp =====================
[16:19:38] ============================================================
[16:19:38] Testing complete. Ran 667 tests: passed: 667
[16:19:39] Elapsed time: 28.161s total, 2.499s configuring, 25.195s building, 0.458s running
+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[16:19:39] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[16:19:41] 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
[16:19:51] Starting KUnit Kernel (1/1)...
[16:19:51] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[16:19:51] ================= ttm_device (5 subtests) ==================
[16:19:51] [PASSED] ttm_device_init_basic
[16:19:51] [PASSED] ttm_device_init_multiple
[16:19:51] [PASSED] ttm_device_fini_basic
[16:19:51] [PASSED] ttm_device_init_no_vma_man
[16:19:51] ================== ttm_device_init_pools ==================
[16:19:51] [PASSED] No DMA allocations, no DMA32 required
[16:19:51] [PASSED] DMA allocations, DMA32 required
[16:19:51] [PASSED] No DMA allocations, DMA32 required
[16:19:51] [PASSED] DMA allocations, no DMA32 required
[16:19:51] ============== [PASSED] ttm_device_init_pools ==============
[16:19:51] =================== [PASSED] ttm_device ====================
[16:19:51] ================== ttm_pool (8 subtests) ===================
[16:19:51] ================== ttm_pool_alloc_basic ===================
[16:19:51] [PASSED] One page
[16:19:51] [PASSED] More than one page
[16:19:51] [PASSED] Above the allocation limit
[16:19:51] [PASSED] One page, with coherent DMA mappings enabled
[16:19:51] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[16:19:51] ============== [PASSED] ttm_pool_alloc_basic ===============
[16:19:51] ============== ttm_pool_alloc_basic_dma_addr ==============
[16:19:51] [PASSED] One page
[16:19:51] [PASSED] More than one page
[16:19:51] [PASSED] Above the allocation limit
[16:19:51] [PASSED] One page, with coherent DMA mappings enabled
[16:19:51] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[16:19:51] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[16:19:51] [PASSED] ttm_pool_alloc_order_caching_match
[16:19:51] [PASSED] ttm_pool_alloc_caching_mismatch
[16:19:51] [PASSED] ttm_pool_alloc_order_mismatch
[16:19:51] [PASSED] ttm_pool_free_dma_alloc
[16:19:51] [PASSED] ttm_pool_free_no_dma_alloc
[16:19:51] [PASSED] ttm_pool_fini_basic
[16:19:51] ==================== [PASSED] ttm_pool =====================
[16:19:51] ================ ttm_resource (8 subtests) =================
[16:19:51] ================= ttm_resource_init_basic =================
[16:19:51] [PASSED] Init resource in TTM_PL_SYSTEM
[16:19:51] [PASSED] Init resource in TTM_PL_VRAM
[16:19:51] [PASSED] Init resource in a private placement
[16:19:51] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[16:19:51] ============= [PASSED] ttm_resource_init_basic =============
[16:19:51] [PASSED] ttm_resource_init_pinned
[16:19:51] [PASSED] ttm_resource_fini_basic
[16:19:51] [PASSED] ttm_resource_manager_init_basic
[16:19:51] [PASSED] ttm_resource_manager_usage_basic
[16:19:51] [PASSED] ttm_resource_manager_set_used_basic
[16:19:51] [PASSED] ttm_sys_man_alloc_basic
[16:19:51] [PASSED] ttm_sys_man_free_basic
[16:19:51] ================== [PASSED] ttm_resource ===================
[16:19:51] =================== ttm_tt (15 subtests) ===================
[16:19:51] ==================== ttm_tt_init_basic ====================
[16:19:51] [PASSED] Page-aligned size
[16:19:51] [PASSED] Extra pages requested
[16:19:51] ================ [PASSED] ttm_tt_init_basic ================
[16:19:51] [PASSED] ttm_tt_init_misaligned
[16:19:51] [PASSED] ttm_tt_fini_basic
[16:19:51] [PASSED] ttm_tt_fini_sg
[16:19:51] [PASSED] ttm_tt_fini_shmem
[16:19:51] [PASSED] ttm_tt_create_basic
[16:19:51] [PASSED] ttm_tt_create_invalid_bo_type
[16:19:51] [PASSED] ttm_tt_create_ttm_exists
[16:19:51] [PASSED] ttm_tt_create_failed
[16:19:51] [PASSED] ttm_tt_destroy_basic
[16:19:51] [PASSED] ttm_tt_populate_null_ttm
[16:19:51] [PASSED] ttm_tt_populate_populated_ttm
[16:19:51] [PASSED] ttm_tt_unpopulate_basic
[16:19:51] [PASSED] ttm_tt_unpopulate_empty_ttm
[16:19:51] [PASSED] ttm_tt_swapin_basic
[16:19:51] ===================== [PASSED] ttm_tt ======================
[16:19:51] =================== ttm_bo (14 subtests) ===================
[16:19:51] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[16:19:51] [PASSED] Cannot be interrupted and sleeps
[16:19:51] [PASSED] Cannot be interrupted, locks straight away
[16:19:51] [PASSED] Can be interrupted, sleeps
[16:19:51] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[16:19:51] [PASSED] ttm_bo_reserve_locked_no_sleep
[16:19:51] [PASSED] ttm_bo_reserve_no_wait_ticket
[16:19:51] [PASSED] ttm_bo_reserve_double_resv
[16:19:51] [PASSED] ttm_bo_reserve_interrupted
[16:19:51] [PASSED] ttm_bo_reserve_deadlock
[16:19:51] [PASSED] ttm_bo_unreserve_basic
[16:19:51] [PASSED] ttm_bo_unreserve_pinned
[16:19:51] [PASSED] ttm_bo_unreserve_bulk
[16:19:51] [PASSED] ttm_bo_fini_basic
[16:19:51] [PASSED] ttm_bo_fini_shared_resv
[16:19:51] [PASSED] ttm_bo_pin_basic
[16:19:51] [PASSED] ttm_bo_pin_unpin_resource
[16:19:51] [PASSED] ttm_bo_multiple_pin_one_unpin
[16:19:51] ===================== [PASSED] ttm_bo ======================
[16:19:51] ============== ttm_bo_validate (22 subtests) ===============
[16:19:51] ============== ttm_bo_init_reserved_sys_man ===============
[16:19:51] [PASSED] Buffer object for userspace
[16:19:51] [PASSED] Kernel buffer object
[16:19:51] [PASSED] Shared buffer object
[16:19:51] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[16:19:51] ============== ttm_bo_init_reserved_mock_man ==============
[16:19:51] [PASSED] Buffer object for userspace
[16:19:51] [PASSED] Kernel buffer object
[16:19:51] [PASSED] Shared buffer object
[16:19:51] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[16:19:51] [PASSED] ttm_bo_init_reserved_resv
[16:19:51] ================== ttm_bo_validate_basic ==================
[16:19:51] [PASSED] Buffer object for userspace
[16:19:51] [PASSED] Kernel buffer object
[16:19:51] [PASSED] Shared buffer object
[16:19:51] ============== [PASSED] ttm_bo_validate_basic ==============
[16:19:51] [PASSED] ttm_bo_validate_invalid_placement
[16:19:51] ============= ttm_bo_validate_same_placement ==============
[16:19:51] [PASSED] System manager
[16:19:51] [PASSED] VRAM manager
[16:19:51] ========= [PASSED] ttm_bo_validate_same_placement ==========
[16:19:51] [PASSED] ttm_bo_validate_failed_alloc
[16:19:51] [PASSED] ttm_bo_validate_pinned
[16:19:51] [PASSED] ttm_bo_validate_busy_placement
[16:19:51] ================ ttm_bo_validate_multihop =================
[16:19:51] [PASSED] Buffer object for userspace
[16:19:51] [PASSED] Kernel buffer object
[16:19:51] [PASSED] Shared buffer object
[16:19:51] ============ [PASSED] ttm_bo_validate_multihop =============
[16:19:51] ========== ttm_bo_validate_no_placement_signaled ==========
[16:19:51] [PASSED] Buffer object in system domain, no page vector
[16:19:51] [PASSED] Buffer object in system domain with an existing page vector
[16:19:51] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[16:19:51] ======== ttm_bo_validate_no_placement_not_signaled ========
[16:19:51] [PASSED] Buffer object for userspace
[16:19:51] [PASSED] Kernel buffer object
[16:19:51] [PASSED] Shared buffer object
[16:19:51] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[16:19:51] [PASSED] ttm_bo_validate_move_fence_signaled
[16:19:52] ========= ttm_bo_validate_move_fence_not_signaled =========
[16:19:52] [PASSED] Waits for GPU
[16:19:52] [PASSED] Tries to lock straight away
[16:19:52] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[16:19:52] [PASSED] ttm_bo_validate_swapout
[16:19:52] [PASSED] ttm_bo_validate_happy_evict
[16:19:52] [PASSED] ttm_bo_validate_all_pinned_evict
[16:19:52] [PASSED] ttm_bo_validate_allowed_only_evict
[16:19:52] [PASSED] ttm_bo_validate_deleted_evict
[16:19:52] [PASSED] ttm_bo_validate_busy_domain_evict
[16:19:52] [PASSED] ttm_bo_validate_evict_gutting
[16:19:52] [PASSED] ttm_bo_validate_recrusive_evict
[16:19:52] ================= [PASSED] ttm_bo_validate =================
[16:19:52] ============================================================
[16:19:52] Testing complete. Ran 102 tests: passed: 102
[16:19:52] Elapsed time: 12.891s total, 2.481s configuring, 10.195s building, 0.187s running
+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/dma-buf/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/dma-buf/.kunitconfig
[16:19:52] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[16:19:54] 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
[16:20:03] Starting KUnit Kernel (1/1)...
[16:20:03] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[16:20:03] =============== dma-buf-fence (12 subtests) ================
[16:20:03] [PASSED] test_sanitycheck
[16:20:03] [PASSED] test_signaling
[16:20:03] [PASSED] test_add_callback
[16:20:03] [PASSED] test_late_add_callback
[16:20:03] [PASSED] test_rm_callback
[16:20:03] [PASSED] test_late_rm_callback
[16:20:03] [PASSED] test_status
[16:20:03] [PASSED] test_error
[16:20:03] [PASSED] test_wait
[16:20:03] [PASSED] test_wait_timeout
[16:20:03] [PASSED] test_stub
[16:20:03] [SKIPPED] test_race_signal_callback (requires at least 2 CPUs)
[16:20:03] ================== [PASSED] dma-buf-fence ==================
[16:20:03] ============ dma-buf-fence-chain (11 subtests) =============
[16:20:03] [PASSED] test_sanitycheck
[16:20:03] [PASSED] test_find_seqno
[16:20:03] [PASSED] test_find_signaled
[16:20:03] [PASSED] test_find_out_of_order
[16:20:08] [PASSED] test_find_gap
[16:20:08] [PASSED] test_find_race
[16:20:08] [PASSED] test_signal_forward
[16:20:08] [PASSED] test_signal_backward
[16:20:08] [PASSED] test_wait_forward
[16:20:08] [PASSED] test_wait_backward
[16:20:08] [PASSED] test_wait_random
[16:20:08] =============== [PASSED] dma-buf-fence-chain ===============
[16:20:08] ============ dma-buf-fence-unwrap (11 subtests) ============
[16:20:08] [PASSED] test_sanitycheck
[16:20:08] [PASSED] test_unwrap_array
[16:20:08] [PASSED] test_unwrap_chain
[16:20:08] [PASSED] test_unwrap_chain_array
[16:20:08] [PASSED] test_unwrap_merge
[16:20:08] [PASSED] test_unwrap_merge_duplicate
[16:20:08] [PASSED] test_unwrap_merge_seqno
[16:20:08] [PASSED] test_unwrap_merge_order
[16:20:08] [PASSED] test_unwrap_merge_complex
[16:20:08] [PASSED] test_unwrap_merge_complex_seqno
[16:20:08] [PASSED] test_dedup_empty
[16:20:08] ============== [PASSED] dma-buf-fence-unwrap ===============
[16:20:08] ================ dma-buf-resv (5 subtests) =================
[16:20:08] [PASSED] test_sanitycheck
[16:20:08] ===================== test_signaling ======================
[16:20:08] [PASSED] kernel
[16:20:08] [PASSED] write
[16:20:08] [PASSED] read
[16:20:08] [PASSED] bookkeep
[16:20:08] ================= [PASSED] test_signaling ==================
[16:20:08] ====================== test_for_each ======================
[16:20:08] [PASSED] kernel
[16:20:08] [PASSED] write
[16:20:08] [PASSED] read
[16:20:08] [PASSED] bookkeep
[16:20:08] ================== [PASSED] test_for_each ==================
[16:20:08] ================= test_for_each_unlocked ==================
[16:20:08] [PASSED] kernel
[16:20:08] [PASSED] write
[16:20:08] [PASSED] read
[16:20:08] [PASSED] bookkeep
[16:20:08] ============= [PASSED] test_for_each_unlocked ==============
[16:20:08] ===================== test_get_fences =====================
[16:20:08] [PASSED] kernel
[16:20:08] [PASSED] write
[16:20:08] [PASSED] read
[16:20:08] [PASSED] bookkeep
[16:20:08] ================= [PASSED] test_get_fences =================
[16:20:08] ================== [PASSED] dma-buf-resv ===================
[16:20:08] ============================================================
[16:20:08] Testing complete. Ran 51 tests: passed: 50, skipped: 1
[16:20:08] Elapsed time: 16.595s total, 2.535s configuring, 8.789s building, 5.266s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 22+ messages in thread
* ✓ Xe.CI.BAT: success for drm/atomic: only add states of active or transient active colorops
2026-11-11 16:05 [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
` (16 preceding siblings ...)
2026-11-11 16:20 ` ✓ CI.KUnit: success " Patchwork
@ 2026-11-11 16:54 ` Patchwork
2026-11-12 1:57 ` ✓ Xe.CI.FULL: " Patchwork
18 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2026-11-11 16:54 UTC (permalink / raw)
To: Melissa Wen; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 889 bytes --]
== Series Details ==
Series: drm/atomic: only add states of active or transient active colorops
URL : https://patchwork.freedesktop.org/series/178329/
State : success
== Summary ==
CI Bug Log - changes from xe-6113-1434742f20cf3d14b493e40c453536b5414b9762_BAT -> xe-pw-178329v1_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (15 -> 15)
------------------------------
No changes in participating hosts
Changes
-------
No changes found
Build changes
-------------
* Linux: xe-6113-1434742f20cf3d14b493e40c453536b5414b9762 -> xe-pw-178329v1
IGT_9186: 9186
xe-6113-1434742f20cf3d14b493e40c453536b5414b9762: 1434742f20cf3d14b493e40c453536b5414b9762
xe-pw-178329v1: 178329v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/index.html
[-- Attachment #2: Type: text/html, Size: 1437 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v5 03/15] drm/atomic: only add states of active or transient active colorops
2026-11-11 16:05 ` [PATCH v5 03/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
@ 2026-11-11 17:12 ` sashiko-bot
0 siblings, 0 replies; 22+ messages in thread
From: sashiko-bot @ 2026-11-11 17:12 UTC (permalink / raw)
To: Melissa Wen; +Cc: intel-xe, intel-gfx, dri-devel
Thank you for your contribution! Sashiko AI review found 1 potential
issue to consider:
- [Low] drm/atomic: missing Fixes trailer for
drm_atomic_add_affected_planes() fix
--
commit ee3d4ff90daed11fcddfd7b71b626ca04e91bc82
Author: Melissa Wen <mwen@igalia.com>
> drm/atomic: only add states of active or transient active colorops
>
> Only consider affected colorop states those that are part of an active
> color pipeline or a pipeline that is about to be activated or
> deactivated in the same atomic commit, i.e., colorop is in the chain of
> old/new plane color pipeline property. To cover color_pipeline
> deactivation, remove the condition for plane_state->color_pipeline.
>
> Signed-off-by: Melissa Wen <mwen@igalia.com>
[Severity: Low]
Since this fixes colorop state inclusion in
drm_atomic_add_affected_planes(), should it include:
Fixes: 6955d6bca053 ("drm/atomic: Add affected colorops with affected planes")
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261111160814.21326-1-mwen@igalia.com?part=3
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v5 07/15] drm/atomic: duplicate state of all colorops
2026-11-11 16:05 ` [PATCH v5 07/15] drm/atomic: duplicate state of all colorops Melissa Wen
@ 2026-11-11 17:38 ` sashiko-bot
0 siblings, 0 replies; 22+ messages in thread
From: sashiko-bot @ 2026-11-11 17:38 UTC (permalink / raw)
To: Melissa Wen; +Cc: intel-xe, intel-gfx, dri-devel
Thank you for your contribution! Sashiko AI review found 1 potential
issue to consider:
- [Low] drm/atomic: missing Fixes trailer for colorop state duplication
fix
--
commit 65883c26981f13bf34ba82b7178f631ec645b8e7
Author: Melissa Wen <mwen@igalia.com>
> drm/atomic: duplicate state of all colorops
>
> Userspace expects that colorop settings of an inactive color pipeline
> persist, so that, when the color pipeline is activated again, preserves
> the values they had when it was deactivated. Colorop setup is expected
> to persist even during a suspend/resume. To snapshot colorop settings
> correctly, duplicate state of all colorops in a given plane, regardless
> of whether color pipeline is active. Depends on skipping
> drm_atomic_colorop_check() for duplicated state done in previous commit.
>
> Reviewed-by: Harry Wentland <harry.wentland@amd.com>
> Signed-off-by: Melissa Wen <mwen@igalia.com>
[Severity: Low]
This fixes the plane_state->color_pipeline condition in
drm_atomic_helper_duplicate_state() that caused inactive colorop states
to be lost across suspend and resume. Should the commit message
include:
Fixes: 6bf7969a145e ("drm/drm_atomic: duplicate colorop states if plane color pipeline in use")
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261111160814.21326-1-mwen@igalia.com?part=7
^ permalink raw reply [flat|nested] 22+ messages in thread
* ✓ Xe.CI.FULL: success for drm/atomic: only add states of active or transient active colorops
2026-11-11 16:05 [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
` (17 preceding siblings ...)
2026-11-11 16:54 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-11-12 1:57 ` Patchwork
18 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2026-11-12 1:57 UTC (permalink / raw)
To: Melissa Wen; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 34923 bytes --]
== Series Details ==
Series: drm/atomic: only add states of active or transient active colorops
URL : https://patchwork.freedesktop.org/series/178329/
State : success
== Summary ==
CI Bug Log - changes from xe-6113-1434742f20cf3d14b493e40c453536b5414b9762_FULL -> xe-pw-178329v1_FULL
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (3 -> 3)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in xe-pw-178329v1_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@intel_hwmon@hwmon-write:
- shard-ptl: NOTRUN -> [SKIP][1] ([Intel XE#7225])
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@intel_hwmon@hwmon-write.html
- shard-lnl: NOTRUN -> [SKIP][2] ([Intel XE#1125] / [Intel XE#7312])
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-2/igt@intel_hwmon@hwmon-write.html
* igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- shard-ptl: NOTRUN -> [SKIP][3] ([Intel XE#5765])
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-7/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
* igt@kms_addfb_basic@invalid-smem-bo-on-discrete:
- shard-ptl: NOTRUN -> [SKIP][4] ([Intel XE#3157])
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html
- shard-lnl: NOTRUN -> [SKIP][5] ([Intel XE#3157])
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-2/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html
* igt@kms_async_flips@alternate-sync-async-flip-atomic:
- shard-bmg: [PASS][6] -> [FAIL][7] ([Intel XE#3718] / [Intel XE#6078])
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6113-1434742f20cf3d14b493e40c453536b5414b9762/shard-bmg-6/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-bmg-8/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
* igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-c-dp-2:
- shard-bmg: [PASS][8] -> [FAIL][9] ([Intel XE#6078])
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6113-1434742f20cf3d14b493e40c453536b5414b9762/shard-bmg-6/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-c-dp-2.html
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-bmg-8/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-c-dp-2.html
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
- shard-ptl: NOTRUN -> [SKIP][10] ([Intel XE#6925])
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-7/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
* igt@kms_big_fb@linear-16bpp-rotate-270:
- shard-ptl: NOTRUN -> [SKIP][11] ([Intel XE#5901])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@kms_big_fb@linear-16bpp-rotate-270.html
- shard-lnl: NOTRUN -> [SKIP][12] ([Intel XE#1407])
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-2/igt@kms_big_fb@linear-16bpp-rotate-270.html
* igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
- shard-lnl: [PASS][13] -> [FAIL][14] ([Intel XE#1231])
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6113-1434742f20cf3d14b493e40c453536b5414b9762/shard-lnl-3/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-4/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
* igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip:
- shard-ptl: NOTRUN -> [SKIP][15] ([Intel XE#5808]) +1 other test skip
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip.html
- shard-lnl: NOTRUN -> [SKIP][16] ([Intel XE#1124]) +1 other test skip
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-2/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip.html
* igt@kms_bw@connected-linear-tiling-2-displays-target-3840x2160p:
- shard-ptl: NOTRUN -> [SKIP][17] ([Intel XE#7679])
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-7/igt@kms_bw@connected-linear-tiling-2-displays-target-3840x2160p.html
* igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs:
- shard-ptl: NOTRUN -> [SKIP][18] ([Intel XE#5822]) +2 other tests skip
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-7/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs@pipe-d-edp-1:
- shard-ptl: NOTRUN -> [SKIP][19] ([Intel XE#5823] / [Intel XE#6918]) +9 other tests skip
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-7/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs@pipe-d-edp-1.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs@pipe-b-dp-2:
- shard-bmg: NOTRUN -> [SKIP][20] ([Intel XE#2652]) +3 other tests skip
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-bmg-5/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs@pipe-b-dp-2.html
* igt@kms_ccs@random-ccs-data-y-tiled-ccs:
- shard-lnl: NOTRUN -> [SKIP][21] ([Intel XE#2887])
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-2/igt@kms_ccs@random-ccs-data-y-tiled-ccs.html
* igt@kms_chamelium_color_pipeline@plane-fixed-matrix-yuv-rgb-bt709:
- shard-lnl: NOTRUN -> [SKIP][22] ([Intel XE#7358]) +1 other test skip
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-1/igt@kms_chamelium_color_pipeline@plane-fixed-matrix-yuv-rgb-bt709.html
* igt@kms_content_protection@atomic-hdcp14@pipe-a-dp-1:
- shard-bmg: NOTRUN -> [FAIL][23] ([Intel XE#3304]) +1 other test fail
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-bmg-7/igt@kms_content_protection@atomic-hdcp14@pipe-a-dp-1.html
* igt@kms_content_protection@legacy-hdcp14:
- shard-lnl: NOTRUN -> [SKIP][24] ([Intel XE#7642])
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-1/igt@kms_content_protection@legacy-hdcp14.html
* igt@kms_content_protection@lic-type-0-hdcp14@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][25] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374]) +2 other tests fail
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-bmg-5/igt@kms_content_protection@lic-type-0-hdcp14@pipe-a-dp-2.html
* igt@kms_cursor_crc@cursor-rapid-movement-max-size:
- shard-ptl: NOTRUN -> [SKIP][26] ([Intel XE#5900]) +1 other test skip
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@kms_cursor_crc@cursor-rapid-movement-max-size.html
* igt@kms_cursor_crc@cursor-sliding-32x32:
- shard-lnl: NOTRUN -> [SKIP][27] ([Intel XE#1424]) +1 other test skip
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-1/igt@kms_cursor_crc@cursor-sliding-32x32.html
- shard-bmg: NOTRUN -> [SKIP][28] ([Intel XE#2320])
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-bmg-4/igt@kms_cursor_crc@cursor-sliding-32x32.html
* igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic:
- shard-ptl: NOTRUN -> [SKIP][29] ([Intel XE#5962]) +1 other test skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-7/igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic.html
* igt@kms_cursor_legacy@cursorb-vs-flipb-toggle:
- shard-ptl: NOTRUN -> [SKIP][30] ([Intel XE#5962] / [Intel XE#7343])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@kms_cursor_legacy@cursorb-vs-flipb-toggle.html
- shard-lnl: NOTRUN -> [SKIP][31] ([Intel XE#309] / [Intel XE#7343]) +1 other test skip
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-2/igt@kms_cursor_legacy@cursorb-vs-flipb-toggle.html
* igt@kms_flip@2x-flip-vs-panning-interruptible:
- shard-ptl: NOTRUN -> [SKIP][32] ([Intel XE#2316])
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-7/igt@kms_flip@2x-flip-vs-panning-interruptible.html
* igt@kms_flip@absolute-wf_vblank-interruptible@a-edp1:
- shard-lnl: NOTRUN -> [DMESG-WARN][33] ([Intel XE#9513]) +1 other test dmesg-warn
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-2/igt@kms_flip@absolute-wf_vblank-interruptible@a-edp1.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling:
- shard-ptl: NOTRUN -> [SKIP][34] ([Intel XE#5828]) +1 other test skip
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-7/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling:
- shard-ptl: NOTRUN -> [SKIP][35] ([Intel XE#7178])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling.html
- shard-lnl: NOTRUN -> [SKIP][36] ([Intel XE#7178] / [Intel XE#7351])
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-2/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling.html
* igt@kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-render:
- shard-lnl: NOTRUN -> [SKIP][37] ([Intel XE#6312] / [Intel XE#651]) +1 other test skip
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-1/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@drrshdr-1p-primscrn-cur-indfb-draw-render:
- shard-lnl: NOTRUN -> [SKIP][38] ([Intel XE#6312]) +1 other test skip
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-2/igt@kms_frontbuffer_tracking@drrshdr-1p-primscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@drrshdr-1p-primscrn-shrfb-msflip-blt:
- shard-ptl: NOTRUN -> [SKIP][39] ([Intel XE#6312]) +3 other tests skip
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-7/igt@kms_frontbuffer_tracking@drrshdr-1p-primscrn-shrfb-msflip-blt.html
* igt@kms_frontbuffer_tracking@drrshdr-2p-primscrn-pri-shrfb-draw-render:
- shard-ptl: NOTRUN -> [SKIP][40] ([Intel XE#5812]) +16 other tests skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@kms_frontbuffer_tracking@drrshdr-2p-primscrn-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-move:
- shard-ptl: NOTRUN -> [SKIP][41] ([Intel XE#5800] / [Intel XE#6312]) +1 other test skip
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-move.html
* igt@kms_frontbuffer_tracking@fbcdrrshdr-suspend:
- shard-bmg: NOTRUN -> [SKIP][42] ([Intel XE#2311])
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-bmg-4/igt@kms_frontbuffer_tracking@fbcdrrshdr-suspend.html
* igt@kms_frontbuffer_tracking@hdr-1p-primscrn-pri-indfb-draw-blt:
- shard-ptl: NOTRUN -> [SKIP][43] ([Intel XE#7865]) +5 other tests skip
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@kms_frontbuffer_tracking@hdr-1p-primscrn-pri-indfb-draw-blt.html
- shard-lnl: NOTRUN -> [SKIP][44] ([Intel XE#7865]) +4 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-2/igt@kms_frontbuffer_tracking@hdr-1p-primscrn-pri-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@hdr-2p-primscrn-cur-indfb-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][45] ([Intel XE#7905]) +9 other tests skip
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-1/igt@kms_frontbuffer_tracking@hdr-2p-primscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@hdr-argb161616f-draw-mmap-wc:
- shard-ptl: NOTRUN -> [SKIP][46] ([Intel XE#7061]) +2 other tests skip
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@kms_frontbuffer_tracking@hdr-argb161616f-draw-mmap-wc.html
- shard-lnl: NOTRUN -> [SKIP][47] ([Intel XE#7061]) +2 other tests skip
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-2/igt@kms_frontbuffer_tracking@hdr-argb161616f-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][48] ([Intel XE#656] / [Intel XE#7905]) +9 other tests skip
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-1/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-shrfb-pgflip-blt:
- shard-bmg: NOTRUN -> [SKIP][49] ([Intel XE#2313]) +2 other tests skip
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-bmg-4/igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-shrfb-pgflip-blt.html
* igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier:
- shard-ptl: NOTRUN -> [SKIP][50] ([Intel XE#7283])
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-7/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier.html
* igt@kms_plane@pixel-format-y-tiled-ccs-modifier:
- shard-lnl: NOTRUN -> [SKIP][51] ([Intel XE#7283]) +1 other test skip
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-1/igt@kms_plane@pixel-format-y-tiled-ccs-modifier.html
* igt@kms_plane_multiple@2x-tiling-x:
- shard-ptl: NOTRUN -> [SKIP][52] ([Intel XE#4596] / [Intel XE#5854])
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@kms_plane_multiple@2x-tiling-x.html
- shard-lnl: NOTRUN -> [SKIP][53] ([Intel XE#4596] / [Intel XE#5854])
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-2/igt@kms_plane_multiple@2x-tiling-x.html
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf:
- shard-lnl: NOTRUN -> [SKIP][54] ([Intel XE#2893] / [Intel XE#4608] / [Intel XE#7304])
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-1/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf@pipe-a-edp-1:
- shard-lnl: NOTRUN -> [SKIP][55] ([Intel XE#4608])
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-1/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf@pipe-a-edp-1.html
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf@pipe-b-edp-1:
- shard-lnl: NOTRUN -> [SKIP][56] ([Intel XE#4608] / [Intel XE#7304])
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-1/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf@pipe-b-edp-1.html
* igt@kms_rotation_crc@bad-pixel-format:
- shard-ptl: NOTRUN -> [SKIP][57] ([Intel XE#5821])
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-7/igt@kms_rotation_crc@bad-pixel-format.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
- shard-ptl: NOTRUN -> [SKIP][58] ([Intel XE#5813])
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-7/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
* igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all:
- shard-lnl: NOTRUN -> [SKIP][59] ([Intel XE#1091] / [Intel XE#2849])
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-2/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html
* igt@xe_evict@evict-mixed-threads-small-multi-queue:
- shard-ptl: NOTRUN -> [SKIP][60] ([Intel XE#5764])
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@xe_evict@evict-mixed-threads-small-multi-queue.html
* igt@xe_evict@evict-small-multi-queue-priority:
- shard-lnl: NOTRUN -> [SKIP][61] ([Intel XE#6540] / [Intel XE#688]) +1 other test skip
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-1/igt@xe_evict@evict-small-multi-queue-priority.html
* igt@xe_exec_balancer@twice-cm-virtual-rebind:
- shard-ptl: NOTRUN -> [SKIP][62] ([Intel XE#7482]) +2 other tests skip
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@xe_exec_balancer@twice-cm-virtual-rebind.html
* igt@xe_exec_balancer@twice-cm-virtual-userptr-rebind:
- shard-lnl: NOTRUN -> [SKIP][63] ([Intel XE#7482]) +2 other tests skip
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-1/igt@xe_exec_balancer@twice-cm-virtual-userptr-rebind.html
* igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-invalidate-race:
- shard-ptl: NOTRUN -> [SKIP][64] ([Intel XE#5575] / [Intel XE#7484]) +2 other tests skip
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-invalidate-race.html
- shard-lnl: NOTRUN -> [SKIP][65] ([Intel XE#1392]) +1 other test skip
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-2/igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-invalidate-race.html
* igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr-invalidate-race-prefetch:
- shard-lnl: NOTRUN -> [SKIP][66] ([Intel XE#8374]) +1 other test skip
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-2/igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr-invalidate-race-prefetch.html
* igt@xe_exec_fault_mode@twice-multi-queue-rebind-imm:
- shard-ptl: NOTRUN -> [SKIP][67] ([Intel XE#8374]) +1 other test skip
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@xe_exec_fault_mode@twice-multi-queue-rebind-imm.html
* igt@xe_exec_multi_queue@max-queues-preempt-mode-userptr-invalidate:
- shard-ptl: NOTRUN -> [SKIP][68] ([Intel XE#8364]) +1 other test skip
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-7/igt@xe_exec_multi_queue@max-queues-preempt-mode-userptr-invalidate.html
* igt@xe_exec_multi_queue@max-queues-priority:
- shard-lnl: NOTRUN -> [SKIP][69] ([Intel XE#8364])
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-1/igt@xe_exec_multi_queue@max-queues-priority.html
* igt@xe_exec_reset@multi-queue-long-spin-many-queue-switch:
- shard-ptl: NOTRUN -> [SKIP][70] ([Intel XE#8369])
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-7/igt@xe_exec_reset@multi-queue-long-spin-many-queue-switch.html
* igt@xe_exec_threads@threads-multi-queue-hang-fd-userptr-invalidate-race:
- shard-ptl: NOTRUN -> [SKIP][71] ([Intel XE#8378])
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@xe_exec_threads@threads-multi-queue-hang-fd-userptr-invalidate-race.html
- shard-lnl: NOTRUN -> [SKIP][72] ([Intel XE#8378])
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-2/igt@xe_exec_threads@threads-multi-queue-hang-fd-userptr-invalidate-race.html
* igt@xe_mmap@pci-membarrier:
- shard-ptl: NOTRUN -> [SKIP][73] ([Intel XE#5100] / [Intel XE#7408])
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-7/igt@xe_mmap@pci-membarrier.html
* igt@xe_multigpu_svm@mgpu-latency-basic:
- shard-ptl: NOTRUN -> [SKIP][74] ([Intel XE#6964])
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@xe_multigpu_svm@mgpu-latency-basic.html
* igt@xe_multigpu_svm@mgpu-migration-basic:
- shard-lnl: NOTRUN -> [SKIP][75] ([Intel XE#6964]) +1 other test skip
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-1/igt@xe_multigpu_svm@mgpu-migration-basic.html
- shard-bmg: NOTRUN -> [SKIP][76] ([Intel XE#6964])
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-bmg-4/igt@xe_multigpu_svm@mgpu-migration-basic.html
* igt@xe_pat@pat-index-xelpg:
- shard-ptl: NOTRUN -> [SKIP][77] ([Intel XE#5780] / [Intel XE#7590])
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-7/igt@xe_pat@pat-index-xelpg.html
* igt@xe_pm@s4-basic:
- shard-ptl: [PASS][78] -> [ABORT][79] ([Intel XE#9362]) +1 other test abort
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6113-1434742f20cf3d14b493e40c453536b5414b9762/shard-ptl-5/igt@xe_pm@s4-basic.html
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-8/igt@xe_pm@s4-basic.html
* igt@xe_pm@s4-mocs:
- shard-ptl: [PASS][80] -> [DMESG-WARN][81] ([Intel XE#7727])
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6113-1434742f20cf3d14b493e40c453536b5414b9762/shard-ptl-4/igt@xe_pm@s4-mocs.html
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-6/igt@xe_pm@s4-mocs.html
* igt@xe_pm_residency@aspm_link_residency:
- shard-ptl: NOTRUN -> [SKIP][82] ([Intel XE#7271])
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@xe_pm_residency@aspm_link_residency.html
- shard-lnl: NOTRUN -> [SKIP][83] ([Intel XE#7271])
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-2/igt@xe_pm_residency@aspm_link_residency.html
* igt@xe_query@multigpu-query-invalid-extension:
- shard-ptl: NOTRUN -> [SKIP][84] ([Intel XE#6019])
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@xe_query@multigpu-query-invalid-extension.html
- shard-lnl: NOTRUN -> [SKIP][85] ([Intel XE#944])
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-2/igt@xe_query@multigpu-query-invalid-extension.html
* igt@xe_sriov_scheduling@equal-throughput-normal-priority:
- shard-lnl: NOTRUN -> [SKIP][86] ([Intel XE#8339])
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-2/igt@xe_sriov_scheduling@equal-throughput-normal-priority.html
* igt@xe_wedged@wedged-at-any-timeout:
- shard-bmg: NOTRUN -> [DMESG-WARN][87] ([Intel XE#8963])
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-bmg-4/igt@xe_wedged@wedged-at-any-timeout.html
- shard-lnl: NOTRUN -> [DMESG-WARN][88] ([Intel XE#8963])
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-1/igt@xe_wedged@wedged-at-any-timeout.html
#### Possible fixes ####
* igt@kms_async_flips@async-flip-suspend-resume:
- shard-ptl: [DMESG-WARN][89] ([Intel XE#9391]) -> [PASS][90] +1 other test pass
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6113-1434742f20cf3d14b493e40c453536b5414b9762/shard-ptl-3/igt@kms_async_flips@async-flip-suspend-resume.html
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-3/igt@kms_async_flips@async-flip-suspend-resume.html
* igt@kms_bw@linear-tiling-1-displays-target-2160x1440p:
- shard-bmg: [SKIP][91] ([Intel XE#367]) -> [PASS][92]
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6113-1434742f20cf3d14b493e40c453536b5414b9762/shard-bmg-2/igt@kms_bw@linear-tiling-1-displays-target-2160x1440p.html
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-bmg-7/igt@kms_bw@linear-tiling-1-displays-target-2160x1440p.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1:
- shard-lnl: [FAIL][93] ([Intel XE#301]) -> [PASS][94] +1 other test pass
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6113-1434742f20cf3d14b493e40c453536b5414b9762/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
* igt@kms_flip@flip-vs-expired-vblank@c-edp1:
- shard-lnl: [FAIL][95] ([Intel XE#301] / [Intel XE#3149]) -> [PASS][96]
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6113-1434742f20cf3d14b493e40c453536b5414b9762/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
* igt@kms_hdr@invalid-hdr:
- shard-bmg: [SKIP][97] ([Intel XE#1503]) -> [PASS][98]
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6113-1434742f20cf3d14b493e40c453536b5414b9762/shard-bmg-4/igt@kms_hdr@invalid-hdr.html
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-bmg-7/igt@kms_hdr@invalid-hdr.html
* igt@kms_vrr@flip-basic-fastset@pipe-a-edp-1:
- shard-ptl: [FAIL][99] ([Intel XE#6293] / [Intel XE#7397]) -> [PASS][100]
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6113-1434742f20cf3d14b493e40c453536b5414b9762/shard-ptl-2/igt@kms_vrr@flip-basic-fastset@pipe-a-edp-1.html
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-1/igt@kms_vrr@flip-basic-fastset@pipe-a-edp-1.html
* igt@kms_vrr@flip-suspend@pipe-a-edp-1:
- shard-ptl: [FAIL][101] ([Intel XE#4227] / [Intel XE#7397]) -> [PASS][102] +2 other tests pass
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6113-1434742f20cf3d14b493e40c453536b5414b9762/shard-ptl-6/igt@kms_vrr@flip-suspend@pipe-a-edp-1.html
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-4/igt@kms_vrr@flip-suspend@pipe-a-edp-1.html
* igt@xe_pm@s4-vm-bind-prefetch:
- shard-ptl: [ABORT][103] ([Intel XE#9362]) -> [PASS][104] +1 other test pass
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6113-1434742f20cf3d14b493e40c453536b5414b9762/shard-ptl-7/igt@xe_pm@s4-vm-bind-prefetch.html
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-ptl-7/igt@xe_pm@s4-vm-bind-prefetch.html
#### Warnings ####
* igt@kms_flip@flip-vs-expired-vblank:
- shard-lnl: [FAIL][105] ([Intel XE#301] / [Intel XE#3149]) -> [FAIL][106] ([Intel XE#301])
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6113-1434742f20cf3d14b493e40c453536b5414b9762/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank.html
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank.html
* igt@xe_pm@s4-multiple-execs:
- shard-lnl: [ABORT][107] ([Intel XE#9362]) -> [DMESG-WARN][108] ([Intel XE#7727])
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6113-1434742f20cf3d14b493e40c453536b5414b9762/shard-lnl-6/igt@xe_pm@s4-multiple-execs.html
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-lnl-2/igt@xe_pm@s4-multiple-execs.html
* igt@xe_survivability@runtime-survivability:
- shard-bmg: [DMESG-WARN][109] -> [DMESG-WARN][110] ([Intel XE#9365])
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6113-1434742f20cf3d14b493e40c453536b5414b9762/shard-bmg-7/igt@xe_survivability@runtime-survivability.html
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/shard-bmg-5/igt@xe_survivability@runtime-survivability.html
[Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1125]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1125
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1231]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1231
[Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
[Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
[Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[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#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
[Intel XE#2849]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2849
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
[Intel XE#3157]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3157
[Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#3718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3718
[Intel XE#4227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4227
[Intel XE#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596
[Intel XE#4608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4608
[Intel XE#5100]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5100
[Intel XE#5575]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5575
[Intel XE#5764]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5764
[Intel XE#5765]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5765
[Intel XE#5780]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5780
[Intel XE#5800]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5800
[Intel XE#5808]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5808
[Intel XE#5812]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5812
[Intel XE#5813]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5813
[Intel XE#5821]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5821
[Intel XE#5822]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5822
[Intel XE#5823]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5823
[Intel XE#5828]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5828
[Intel XE#5854]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5854
[Intel XE#5900]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5900
[Intel XE#5901]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5901
[Intel XE#5962]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5962
[Intel XE#6019]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6019
[Intel XE#6078]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6078
[Intel XE#6293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6293
[Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
[Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
[Intel XE#6540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6540
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
[Intel XE#6918]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6918
[Intel XE#6925]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6925
[Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
[Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
[Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
[Intel XE#7225]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7225
[Intel XE#7271]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7271
[Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
[Intel XE#7304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7304
[Intel XE#7312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7312
[Intel XE#7343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7343
[Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
[Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
[Intel XE#7374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7374
[Intel XE#7397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7397
[Intel XE#7408]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7408
[Intel XE#7482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7482
[Intel XE#7484]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7484
[Intel XE#7590]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7590
[Intel XE#7642]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7642
[Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
[Intel XE#7727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7727
[Intel XE#7865]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7865
[Intel XE#7905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7905
[Intel XE#8339]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8339
[Intel XE#8364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8364
[Intel XE#8369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8369
[Intel XE#8374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8374
[Intel XE#8378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8378
[Intel XE#8963]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8963
[Intel XE#9362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9362
[Intel XE#9365]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9365
[Intel XE#9391]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9391
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
[Intel XE#9513]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9513
Build changes
-------------
* Linux: xe-6113-1434742f20cf3d14b493e40c453536b5414b9762 -> xe-pw-178329v1
IGT_9186: 9186
xe-6113-1434742f20cf3d14b493e40c453536b5414b9762: 1434742f20cf3d14b493e40c453536b5414b9762
xe-pw-178329v1: 178329v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178329v1/index.html
[-- Attachment #2: Type: text/html, Size: 39547 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2026-11-12 1:58 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-11 16:05 [PATCH v5 00/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
2026-11-11 16:05 ` [PATCH v5 01/15] drm/amd/display: Update colorop pipeline tests for new fixed matrix op Melissa Wen
2026-11-11 16:05 ` [PATCH v5 02/15] drm/amd/display: add missing FIXED_MATRIX colorop to AMD KUnit tests Melissa Wen
2026-11-11 16:05 ` [PATCH v5 03/15] drm/atomic: only add states of active or transient active colorops Melissa Wen
2026-11-11 17:12 ` sashiko-bot
2026-11-11 16:05 ` [PATCH v5 04/15] drm/amd/display: add plane to commit on KUnit cursor mode tests Melissa Wen
2026-11-11 16:05 ` [PATCH v5 05/15] drm/amd/display: only check colorops of an active color pipeline Melissa Wen
2026-11-11 16:05 ` [PATCH v5 06/15] drm/atomic: reject colorop update from inactive " Melissa Wen
2026-11-11 16:05 ` [PATCH v5 07/15] drm/atomic: duplicate state of all colorops Melissa Wen
2026-11-11 17:38 ` sashiko-bot
2026-11-11 16:05 ` [PATCH v5 08/15] drm/atomic: check if an active colorop has a blob if its type requires one Melissa Wen
2026-11-11 16:05 ` [PATCH v5 09/15] drm/amd/display: truly bypass plane colorop 3x4 matrix and hdr mult Melissa Wen
2026-11-11 16:05 ` [PATCH v5 10/15] drm/amd/display: make shaper bypass mode cleaner Melissa Wen
2026-11-11 16:05 ` [PATCH v5 11/15] drm/amd/display: make blnd bypass mode clearer Melissa Wen
2026-11-11 16:05 ` [PATCH v5 12/15] drm/amd/display: don't ignore failure on blend colorop setup Melissa Wen
2026-11-11 16:05 ` [PATCH v5 13/15] drm/amd/display: allow individual colorop changes Melissa Wen
2026-11-11 16:05 ` [PATCH v5 14/15] drm/atomic: make drm_atomic_add_affected_colorops() static Melissa Wen
2026-11-11 16:05 ` [PATCH v5 15/15] drm/amd/display: distinguish colorop setup error from no colorop support Melissa Wen
2026-11-11 16:18 ` ✗ CI.checkpatch: warning for drm/atomic: only add states of active or transient active colorops Patchwork
2026-11-11 16:20 ` ✓ CI.KUnit: success " Patchwork
2026-11-11 16:54 ` ✓ Xe.CI.BAT: " Patchwork
2026-11-12 1:57 ` ✓ Xe.CI.FULL: " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox