Make use of the newly introduced drm_kunit_atomic_restart_on_deadlock() helper to handle EDEADLK errors throughout all test cases.
Signed-off-by: Cristian Ciocaltea <cristian.ciocal...@collabora.com> --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c index c8bb131d63ea6d0c9e166c8d9ba5e403118cd9f1..8c795eeb1090b50993c1907a9fc5bb72baa556e1 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -276,7 +276,9 @@ static void drm_test_check_broadcast_rgb_crtc_mode_changed(struct kunit *test) state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); +retry: new_conn_state = drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, new_conn_state); old_conn_state = drm_atomic_get_old_connector_state(state, conn); @@ -289,6 +291,7 @@ static void drm_test_check_broadcast_rgb_crtc_mode_changed(struct kunit *test) new_conn_state->hdmi.broadcast_rgb); ret = drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); new_conn_state = drm_atomic_get_new_connector_state(state, conn); @@ -345,7 +348,9 @@ static void drm_test_check_broadcast_rgb_crtc_mode_not_changed(struct kunit *tes state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); +retry: new_conn_state = drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, new_conn_state); old_conn_state = drm_atomic_get_old_connector_state(state, conn); @@ -354,6 +359,7 @@ static void drm_test_check_broadcast_rgb_crtc_mode_not_changed(struct kunit *tes new_conn_state->hdmi.broadcast_rgb = old_conn_state->hdmi.broadcast_rgb; ret = drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); old_conn_state = drm_atomic_get_old_connector_state(state, conn); @@ -416,7 +422,9 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode(struct kunit *test) state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); +retry: conn_state = drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); KUNIT_ASSERT_EQ(test, @@ -424,6 +432,7 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode(struct kunit *test) DRM_HDMI_BROADCAST_RGB_AUTO); ret = drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); conn_state = drm_atomic_get_connector_state(state, conn); @@ -475,7 +484,9 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode_vic_1(struct kunit *test) state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); +retry: conn_state = drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); KUNIT_ASSERT_EQ(test, @@ -483,6 +494,7 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode_vic_1(struct kunit *test) DRM_HDMI_BROADCAST_RGB_AUTO); ret = drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); conn_state = drm_atomic_get_connector_state(state, conn); @@ -536,12 +548,15 @@ static void drm_test_check_broadcast_rgb_full_cea_mode(struct kunit *test) state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); +retry: conn_state = drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); conn_state->hdmi.broadcast_rgb = DRM_HDMI_BROADCAST_RGB_FULL; ret = drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); conn_state = drm_atomic_get_connector_state(state, conn); @@ -597,12 +612,15 @@ static void drm_test_check_broadcast_rgb_full_cea_mode_vic_1(struct kunit *test) state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); +retry: conn_state = drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); conn_state->hdmi.broadcast_rgb = DRM_HDMI_BROADCAST_RGB_FULL; ret = drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); conn_state = drm_atomic_get_connector_state(state, conn); @@ -660,12 +678,15 @@ static void drm_test_check_broadcast_rgb_limited_cea_mode(struct kunit *test) state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); +retry: conn_state = drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); conn_state->hdmi.broadcast_rgb = DRM_HDMI_BROADCAST_RGB_LIMITED; ret = drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); conn_state = drm_atomic_get_connector_state(state, conn); @@ -721,12 +742,15 @@ static void drm_test_check_broadcast_rgb_limited_cea_mode_vic_1(struct kunit *te state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); +retry: conn_state = drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); conn_state->hdmi.broadcast_rgb = DRM_HDMI_BROADCAST_RGB_LIMITED; ret = drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); conn_state = drm_atomic_get_connector_state(state, conn); @@ -785,7 +809,9 @@ static void drm_test_check_output_bpc_crtc_mode_changed(struct kunit *test) state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); +retry: new_conn_state = drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, new_conn_state); old_conn_state = drm_atomic_get_old_connector_state(state, conn); @@ -798,6 +824,7 @@ static void drm_test_check_output_bpc_crtc_mode_changed(struct kunit *test) new_conn_state->max_requested_bpc); ret = drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); old_conn_state = drm_atomic_get_old_connector_state(state, conn); @@ -861,7 +888,9 @@ static void drm_test_check_output_bpc_crtc_mode_not_changed(struct kunit *test) state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); +retry: new_conn_state = drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, new_conn_state); old_conn_state = drm_atomic_get_old_connector_state(state, conn); @@ -872,6 +901,7 @@ static void drm_test_check_output_bpc_crtc_mode_not_changed(struct kunit *test) old_conn_state->hdmi.output_bpc); ret = drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); old_conn_state = drm_atomic_get_old_connector_state(state, conn); @@ -1136,12 +1166,15 @@ static void drm_test_check_hdmi_funcs_reject_rate(struct kunit *test) state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); +retry: crtc_state = drm_atomic_get_crtc_state(state, crtc); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc_state); crtc_state->connectors_changed = true; ret = drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_EXPECT_LT(test, ret, 0); drm_modeset_drop_locks(&ctx); @@ -1646,7 +1679,9 @@ static void drm_test_check_disable_connector(struct kunit *test) state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); +retry: crtc_state = drm_atomic_get_crtc_state(state, crtc); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc_state); crtc_state->active = false; @@ -1654,12 +1689,15 @@ static void drm_test_check_disable_connector(struct kunit *test) KUNIT_EXPECT_EQ(test, ret, 0); conn_state = drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); ret = drm_atomic_set_crtc_for_connector(conn_state, NULL); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_EXPECT_EQ(test, ret, 0); ret = drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); drm_modeset_drop_locks(&ctx); -- 2.49.0