Skip to content

Commit 141d95e

Browse files
committed
drm/tests: Handle EDEADLK in drm_test_check_valid_clones()
Fedora/CentOS/RHEL CI is reporting intermittent failures while running the drm_test_check_valid_clones() KUnit test. The error log can be either [1]: # drm_test_check_valid_clones: ASSERTION FAILED at # drivers/gpu/drm/tests/drm_atomic_state_test.c:295 Expected ret == param->expected_result, but ret == -35 (0xffffffffffffffdd) param->expected_result == 0 (0x0) Or [2] depending on the test case: # drm_test_check_valid_clones: ASSERTION FAILED at # drivers/gpu/drm/tests/drm_atomic_state_test.c:295 Expected ret == param->expected_result, but ret == -35 (0xffffffffffffffdd) param->expected_result == -22 (0xffffffffffffffea) Restart the atomic sequence when EDEADLK is returned. [1] https://s3.amazonaws.com/arr-cki-prod-trusted-artifacts/trusted-artifacts/2113057246/test_x86_64/11802139999/artifacts/jobwatch/logs/recipes/19824965/tasks/204347800/results/946112713/logs/dmesg.log [2] https://s3.amazonaws.com/arr-cki-prod-trusted-artifacts/trusted-artifacts/2106744297/test_aarch64/11762450907/artifacts/jobwatch/logs/recipes/19797942/tasks/204139727/results/945094561/logs/dmesg.log Fixes: 88849f2 ("drm/tests: Add test for drm_atomic_helper_check_modeset()") Closes: https://datawarehouse.cki-project.org/issue/4004 Reviewed-by: Maxime Ripard <mripard@kernel.org> Signed-off-by: José Expósito <jose.exposito89@gmail.com> Link: https://patch.msgid.link/20251104102535.12212-1-jose.exposito89@gmail.com
1 parent fe27e70 commit 141d95e

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

drivers/gpu/drm/tests/drm_atomic_state_test.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,14 @@ static void drm_test_check_valid_clones(struct kunit *test)
283283
state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
284284
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
285285

286+
retry:
286287
crtc_state = drm_atomic_get_crtc_state(state, priv->crtc);
288+
if (PTR_ERR(crtc_state) == -EDEADLK) {
289+
drm_atomic_state_clear(state);
290+
ret = drm_modeset_backoff(&ctx);
291+
if (!ret)
292+
goto retry;
293+
}
287294
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc_state);
288295

289296
crtc_state->encoder_mask = param->encoder_mask;
@@ -292,6 +299,12 @@ static void drm_test_check_valid_clones(struct kunit *test)
292299
crtc_state->mode_changed = true;
293300

294301
ret = drm_atomic_helper_check_modeset(drm, state);
302+
if (ret == -EDEADLK) {
303+
drm_atomic_state_clear(state);
304+
ret = drm_modeset_backoff(&ctx);
305+
if (!ret)
306+
goto retry;
307+
}
295308
KUNIT_ASSERT_EQ(test, ret, param->expected_result);
296309

297310
drm_modeset_drop_locks(&ctx);

0 commit comments

Comments
 (0)