]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/tests: Drop drm_kunit_helper_acquire_ctx_alloc()
authorMaxime Ripard <mripard@kernel.org>
Thu, 20 Feb 2025 13:25:37 +0000 (14:25 +0100)
committerMaxime Ripard <mripard@kernel.org>
Mon, 3 Mar 2025 13:21:58 +0000 (14:21 +0100)
lockdep complains when a lock is released in a separate thread the
lock is taken in, and it turns out that kunit does run its actions in a
separate thread than the test ran in.

This means that drm_kunit_helper_acquire_ctx_alloc() just cannot work as
it's supposed to, so let's just get rid of it.

Suggested-by: Simona Vetter <simona.vetter@ffwll.ch>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20250220132537.2834168-1-mripard@kernel.org
Signed-off-by: Maxime Ripard <mripard@kernel.org>
drivers/gpu/drm/tests/drm_atomic_state_test.c
drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c
drivers/gpu/drm/tests/drm_kunit_helpers.c
drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c
include/drm/drm_kunit_helpers.h

index 5945c3298901147f2837b8033141e24f0a2d9659..2f6ac7a09f44589af011c255426ddad1f5977307 100644 (file)
@@ -189,7 +189,7 @@ static int set_up_atomic_state(struct kunit *test,
 static void drm_test_check_connector_changed_modeset(struct kunit *test)
 {
        struct drm_atomic_test_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector *old_conn, *new_conn;
        struct drm_atomic_state *state;
        struct drm_device *drm;
@@ -203,14 +203,13 @@ static void drm_test_check_connector_changed_modeset(struct kunit *test)
        old_conn = &priv->connectors[0];
        new_conn = &priv->connectors[1];
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
        // first modeset to enable
-       ret = set_up_atomic_state(test, priv, old_conn, ctx);
+       ret = set_up_atomic_state(test, priv, old_conn, &ctx);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
-       state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
        new_conn_state = drm_atomic_get_connector_state(state, new_conn);
@@ -231,6 +230,9 @@ static void drm_test_check_connector_changed_modeset(struct kunit *test)
        ret = drm_atomic_commit(state);
        KUNIT_ASSERT_EQ(test, ret, 0);
        KUNIT_ASSERT_EQ(test, modeset_counter, initial_modeset_count + 1);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -263,7 +265,7 @@ static void drm_test_check_valid_clones(struct kunit *test)
        int ret;
        const struct drm_clone_mode_test *param = test->param_value;
        struct drm_atomic_test_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_device *drm;
        struct drm_atomic_state *state;
        struct drm_crtc_state *crtc_state;
@@ -273,13 +275,12 @@ static void drm_test_check_valid_clones(struct kunit *test)
 
        drm = &priv->drm;
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
-       ret = set_up_atomic_state(test, priv, NULL, ctx);
+       ret = set_up_atomic_state(test, priv, NULL, &ctx);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
-       state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
        crtc_state = drm_atomic_get_crtc_state(state, priv->crtc);
@@ -292,6 +293,9 @@ static void drm_test_check_valid_clones(struct kunit *test)
 
        ret = drm_atomic_helper_check_modeset(drm, state);
        KUNIT_ASSERT_EQ(test, ret, param->expected_result);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 static void drm_check_in_clone_mode_desc(const struct drm_clone_mode_test *t,
index 23ecc00accb21dfc25f0d8ff18ae8f248c1ff336..e97efd3af9ed18e6cf8ee66b4923dfc805b34e19 100644 (file)
@@ -273,7 +273,7 @@ drm_kunit_helper_connector_hdmi_init(struct kunit *test,
 static void drm_test_check_broadcast_rgb_crtc_mode_changed(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *old_conn_state;
        struct drm_connector_state *new_conn_state;
        struct drm_crtc_state *crtc_state;
@@ -296,13 +296,12 @@ static void drm_test_check_broadcast_rgb_crtc_mode_changed(struct kunit *test)
        preferred = find_preferred_mode(conn);
        KUNIT_ASSERT_NOT_NULL(test, preferred);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
-       ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, preferred, &ctx);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
-       state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
        new_conn_state = drm_atomic_get_connector_state(state, conn);
@@ -327,6 +326,9 @@ static void drm_test_check_broadcast_rgb_crtc_mode_changed(struct kunit *test)
        crtc_state = drm_atomic_get_new_crtc_state(state, crtc);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc_state);
        KUNIT_EXPECT_TRUE(test, crtc_state->mode_changed);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -337,7 +339,7 @@ static void drm_test_check_broadcast_rgb_crtc_mode_changed(struct kunit *test)
 static void drm_test_check_broadcast_rgb_crtc_mode_not_changed(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *old_conn_state;
        struct drm_connector_state *new_conn_state;
        struct drm_crtc_state *crtc_state;
@@ -360,13 +362,12 @@ static void drm_test_check_broadcast_rgb_crtc_mode_not_changed(struct kunit *tes
        preferred = find_preferred_mode(conn);
        KUNIT_ASSERT_NOT_NULL(test, preferred);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
-       ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, preferred, &ctx);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
-       state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
        new_conn_state = drm_atomic_get_connector_state(state, conn);
@@ -393,6 +394,9 @@ static void drm_test_check_broadcast_rgb_crtc_mode_not_changed(struct kunit *tes
        crtc_state = drm_atomic_get_new_crtc_state(state, crtc);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc_state);
        KUNIT_EXPECT_FALSE(test, crtc_state->mode_changed);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -403,7 +407,7 @@ static void drm_test_check_broadcast_rgb_crtc_mode_not_changed(struct kunit *tes
 static void drm_test_check_broadcast_rgb_auto_cea_mode(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *conn_state;
        struct drm_atomic_state *state;
        struct drm_display_mode *preferred;
@@ -426,13 +430,12 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode(struct kunit *test)
        KUNIT_ASSERT_NOT_NULL(test, preferred);
        KUNIT_ASSERT_NE(test, drm_match_cea_mode(preferred), 1);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
-       ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, preferred, &ctx);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
-       state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
        conn_state = drm_atomic_get_connector_state(state, conn);
@@ -449,6 +452,9 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode(struct kunit *test)
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
 
        KUNIT_EXPECT_TRUE(test, conn_state->hdmi.is_limited_range);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -459,7 +465,7 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode(struct kunit *test)
 static void drm_test_check_broadcast_rgb_auto_cea_mode_vic_1(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *conn_state;
        struct drm_atomic_state *state;
        struct drm_display_mode *mode;
@@ -477,17 +483,16 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode_vic_1(struct kunit *test)
        conn = &priv->connector;
        KUNIT_ASSERT_TRUE(test, conn->display_info.is_hdmi);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
        mode = drm_kunit_display_mode_from_cea_vic(test, drm, 1);
        KUNIT_ASSERT_NOT_NULL(test, mode);
 
        crtc = priv->crtc;
-       ret = light_up_connector(test, drm, crtc, conn, mode, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, mode, &ctx);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
-       state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
        conn_state = drm_atomic_get_connector_state(state, conn);
@@ -504,6 +509,9 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode_vic_1(struct kunit *test)
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
 
        KUNIT_EXPECT_FALSE(test, conn_state->hdmi.is_limited_range);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -514,7 +522,7 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode_vic_1(struct kunit *test)
 static void drm_test_check_broadcast_rgb_full_cea_mode(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *conn_state;
        struct drm_atomic_state *state;
        struct drm_display_mode *preferred;
@@ -537,13 +545,12 @@ static void drm_test_check_broadcast_rgb_full_cea_mode(struct kunit *test)
        KUNIT_ASSERT_NOT_NULL(test, preferred);
        KUNIT_ASSERT_NE(test, drm_match_cea_mode(preferred), 1);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
-       ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, preferred, &ctx);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
-       state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
        conn_state = drm_atomic_get_connector_state(state, conn);
@@ -562,6 +569,9 @@ static void drm_test_check_broadcast_rgb_full_cea_mode(struct kunit *test)
                        DRM_HDMI_BROADCAST_RGB_FULL);
 
        KUNIT_EXPECT_FALSE(test, conn_state->hdmi.is_limited_range);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -572,7 +582,7 @@ static void drm_test_check_broadcast_rgb_full_cea_mode(struct kunit *test)
 static void drm_test_check_broadcast_rgb_full_cea_mode_vic_1(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *conn_state;
        struct drm_atomic_state *state;
        struct drm_display_mode *mode;
@@ -590,17 +600,16 @@ static void drm_test_check_broadcast_rgb_full_cea_mode_vic_1(struct kunit *test)
        conn = &priv->connector;
        KUNIT_ASSERT_TRUE(test, conn->display_info.is_hdmi);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
        mode = drm_kunit_display_mode_from_cea_vic(test, drm, 1);
        KUNIT_ASSERT_NOT_NULL(test, mode);
 
        crtc = priv->crtc;
-       ret = light_up_connector(test, drm, crtc, conn, mode, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, mode, &ctx);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
-       state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
        conn_state = drm_atomic_get_connector_state(state, conn);
@@ -619,6 +628,9 @@ static void drm_test_check_broadcast_rgb_full_cea_mode_vic_1(struct kunit *test)
                        DRM_HDMI_BROADCAST_RGB_FULL);
 
        KUNIT_EXPECT_FALSE(test, conn_state->hdmi.is_limited_range);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -629,7 +641,7 @@ static void drm_test_check_broadcast_rgb_full_cea_mode_vic_1(struct kunit *test)
 static void drm_test_check_broadcast_rgb_limited_cea_mode(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *conn_state;
        struct drm_atomic_state *state;
        struct drm_display_mode *preferred;
@@ -652,13 +664,12 @@ static void drm_test_check_broadcast_rgb_limited_cea_mode(struct kunit *test)
        KUNIT_ASSERT_NOT_NULL(test, preferred);
        KUNIT_ASSERT_NE(test, drm_match_cea_mode(preferred), 1);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
-       ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, preferred, &ctx);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
-       state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
        conn_state = drm_atomic_get_connector_state(state, conn);
@@ -677,6 +688,9 @@ static void drm_test_check_broadcast_rgb_limited_cea_mode(struct kunit *test)
                        DRM_HDMI_BROADCAST_RGB_LIMITED);
 
        KUNIT_EXPECT_TRUE(test, conn_state->hdmi.is_limited_range);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -687,7 +701,7 @@ static void drm_test_check_broadcast_rgb_limited_cea_mode(struct kunit *test)
 static void drm_test_check_broadcast_rgb_limited_cea_mode_vic_1(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *conn_state;
        struct drm_atomic_state *state;
        struct drm_display_mode *mode;
@@ -705,17 +719,16 @@ static void drm_test_check_broadcast_rgb_limited_cea_mode_vic_1(struct kunit *te
        conn = &priv->connector;
        KUNIT_ASSERT_TRUE(test, conn->display_info.is_hdmi);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
        mode = drm_kunit_display_mode_from_cea_vic(test, drm, 1);
        KUNIT_ASSERT_NOT_NULL(test, mode);
 
        crtc = priv->crtc;
-       ret = light_up_connector(test, drm, crtc, conn, mode, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, mode, &ctx);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
-       state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
        conn_state = drm_atomic_get_connector_state(state, conn);
@@ -734,6 +747,9 @@ static void drm_test_check_broadcast_rgb_limited_cea_mode_vic_1(struct kunit *te
                        DRM_HDMI_BROADCAST_RGB_LIMITED);
 
        KUNIT_EXPECT_TRUE(test, conn_state->hdmi.is_limited_range);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -744,7 +760,7 @@ static void drm_test_check_broadcast_rgb_limited_cea_mode_vic_1(struct kunit *te
 static void drm_test_check_output_bpc_crtc_mode_changed(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *old_conn_state;
        struct drm_connector_state *new_conn_state;
        struct drm_crtc_state *crtc_state;
@@ -771,13 +787,12 @@ static void drm_test_check_output_bpc_crtc_mode_changed(struct kunit *test)
        preferred = find_preferred_mode(conn);
        KUNIT_ASSERT_NOT_NULL(test, preferred);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
-       ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, preferred, &ctx);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
-       state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
        new_conn_state = drm_atomic_get_connector_state(state, conn);
@@ -808,6 +823,9 @@ static void drm_test_check_output_bpc_crtc_mode_changed(struct kunit *test)
        crtc_state = drm_atomic_get_new_crtc_state(state, crtc);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc_state);
        KUNIT_EXPECT_TRUE(test, crtc_state->mode_changed);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -818,7 +836,7 @@ static void drm_test_check_output_bpc_crtc_mode_changed(struct kunit *test)
 static void drm_test_check_output_bpc_crtc_mode_not_changed(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *old_conn_state;
        struct drm_connector_state *new_conn_state;
        struct drm_crtc_state *crtc_state;
@@ -845,13 +863,12 @@ static void drm_test_check_output_bpc_crtc_mode_not_changed(struct kunit *test)
        preferred = find_preferred_mode(conn);
        KUNIT_ASSERT_NOT_NULL(test, preferred);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
-       ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, preferred, &ctx);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
-       state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
        new_conn_state = drm_atomic_get_connector_state(state, conn);
@@ -880,6 +897,9 @@ static void drm_test_check_output_bpc_crtc_mode_not_changed(struct kunit *test)
        crtc_state = drm_atomic_get_new_crtc_state(state, crtc);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc_state);
        KUNIT_EXPECT_FALSE(test, crtc_state->mode_changed);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -889,7 +909,7 @@ static void drm_test_check_output_bpc_crtc_mode_not_changed(struct kunit *test)
 static void drm_test_check_output_bpc_dvi(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *conn_state;
        struct drm_display_info *info;
        struct drm_display_mode *preferred;
@@ -919,10 +939,9 @@ static void drm_test_check_output_bpc_dvi(struct kunit *test)
        preferred = find_preferred_mode(conn);
        KUNIT_ASSERT_NOT_NULL(test, preferred);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
-       ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, preferred, &ctx);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
        conn_state = conn->state;
@@ -930,6 +949,9 @@ static void drm_test_check_output_bpc_dvi(struct kunit *test)
 
        KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_bpc, 8);
        KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -939,7 +961,7 @@ static void drm_test_check_output_bpc_dvi(struct kunit *test)
 static void drm_test_check_tmds_char_rate_rgb_8bpc(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *conn_state;
        struct drm_display_mode *preferred;
        struct drm_connector *conn;
@@ -964,10 +986,9 @@ static void drm_test_check_tmds_char_rate_rgb_8bpc(struct kunit *test)
        KUNIT_ASSERT_NOT_NULL(test, preferred);
        KUNIT_ASSERT_FALSE(test, preferred->flags & DRM_MODE_FLAG_DBLCLK);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
-       ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, preferred, &ctx);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
        conn_state = conn->state;
@@ -976,6 +997,9 @@ static void drm_test_check_tmds_char_rate_rgb_8bpc(struct kunit *test)
        KUNIT_ASSERT_EQ(test, conn_state->hdmi.output_bpc, 8);
        KUNIT_ASSERT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB);
        KUNIT_EXPECT_EQ(test, conn_state->hdmi.tmds_char_rate, preferred->clock * 1000);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -986,7 +1010,7 @@ static void drm_test_check_tmds_char_rate_rgb_8bpc(struct kunit *test)
 static void drm_test_check_tmds_char_rate_rgb_10bpc(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *conn_state;
        struct drm_display_mode *preferred;
        struct drm_connector *conn;
@@ -1011,10 +1035,9 @@ static void drm_test_check_tmds_char_rate_rgb_10bpc(struct kunit *test)
        KUNIT_ASSERT_NOT_NULL(test, preferred);
        KUNIT_ASSERT_FALSE(test, preferred->flags & DRM_MODE_FLAG_DBLCLK);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
-       ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, preferred, &ctx);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
        conn_state = conn->state;
@@ -1023,6 +1046,9 @@ static void drm_test_check_tmds_char_rate_rgb_10bpc(struct kunit *test)
        KUNIT_ASSERT_EQ(test, conn_state->hdmi.output_bpc, 10);
        KUNIT_ASSERT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB);
        KUNIT_EXPECT_EQ(test, conn_state->hdmi.tmds_char_rate, preferred->clock * 1250);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -1033,7 +1059,7 @@ static void drm_test_check_tmds_char_rate_rgb_10bpc(struct kunit *test)
 static void drm_test_check_tmds_char_rate_rgb_12bpc(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *conn_state;
        struct drm_display_mode *preferred;
        struct drm_connector *conn;
@@ -1058,10 +1084,9 @@ static void drm_test_check_tmds_char_rate_rgb_12bpc(struct kunit *test)
        KUNIT_ASSERT_NOT_NULL(test, preferred);
        KUNIT_ASSERT_FALSE(test, preferred->flags & DRM_MODE_FLAG_DBLCLK);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
-       ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, preferred, &ctx);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
        conn_state = conn->state;
@@ -1070,6 +1095,9 @@ static void drm_test_check_tmds_char_rate_rgb_12bpc(struct kunit *test)
        KUNIT_ASSERT_EQ(test, conn_state->hdmi.output_bpc, 12);
        KUNIT_ASSERT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB);
        KUNIT_EXPECT_EQ(test, conn_state->hdmi.tmds_char_rate, preferred->clock * 1500);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -1083,7 +1111,7 @@ static void drm_test_check_tmds_char_rate_rgb_12bpc(struct kunit *test)
 static void drm_test_check_hdmi_funcs_reject_rate(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_atomic_state *state;
        struct drm_display_mode *preferred;
        struct drm_crtc_state *crtc_state;
@@ -1104,16 +1132,15 @@ static void drm_test_check_hdmi_funcs_reject_rate(struct kunit *test)
        preferred = find_preferred_mode(conn);
        KUNIT_ASSERT_NOT_NULL(test, preferred);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
-       ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, preferred, &ctx);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
        /* You shouldn't be doing that at home. */
        conn->hdmi.funcs = &reject_connector_hdmi_funcs;
 
-       state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
        crtc_state = drm_atomic_get_crtc_state(state, crtc);
@@ -1123,6 +1150,9 @@ static void drm_test_check_hdmi_funcs_reject_rate(struct kunit *test)
 
        ret = drm_atomic_check_only(state);
        KUNIT_EXPECT_LT(test, ret, 0);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -1139,7 +1169,7 @@ static void drm_test_check_hdmi_funcs_reject_rate(struct kunit *test)
 static void drm_test_check_max_tmds_rate_bpc_fallback(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *conn_state;
        struct drm_display_info *info;
        struct drm_display_mode *preferred;
@@ -1176,10 +1206,9 @@ static void drm_test_check_max_tmds_rate_bpc_fallback(struct kunit *test)
        rate = drm_hdmi_compute_mode_clock(preferred, 10, HDMI_COLORSPACE_RGB);
        KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
-       ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, preferred, &ctx);
        KUNIT_EXPECT_EQ(test, ret, 0);
 
        conn_state = conn->state;
@@ -1188,6 +1217,9 @@ static void drm_test_check_max_tmds_rate_bpc_fallback(struct kunit *test)
        KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_bpc, 10);
        KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB);
        KUNIT_EXPECT_EQ(test, conn_state->hdmi.tmds_char_rate, preferred->clock * 1250);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -1206,7 +1238,7 @@ static void drm_test_check_max_tmds_rate_bpc_fallback(struct kunit *test)
 static void drm_test_check_max_tmds_rate_format_fallback(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *conn_state;
        struct drm_display_info *info;
        struct drm_display_mode *preferred;
@@ -1248,10 +1280,9 @@ static void drm_test_check_max_tmds_rate_format_fallback(struct kunit *test)
        rate = drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_YUV422);
        KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
-       ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, preferred, &ctx);
        KUNIT_EXPECT_EQ(test, ret, 0);
 
        conn_state = conn->state;
@@ -1259,6 +1290,9 @@ static void drm_test_check_max_tmds_rate_format_fallback(struct kunit *test)
 
        KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_bpc, 10);
        KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -1269,7 +1303,7 @@ static void drm_test_check_max_tmds_rate_format_fallback(struct kunit *test)
 static void drm_test_check_output_bpc_format_vic_1(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *conn_state;
        struct drm_display_info *info;
        struct drm_display_mode *mode;
@@ -1310,11 +1344,10 @@ static void drm_test_check_output_bpc_format_vic_1(struct kunit *test)
        rate = mode->clock * 1500;
        KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
        crtc = priv->crtc;
-       ret = light_up_connector(test, drm, crtc, conn, mode, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, mode, &ctx);
        KUNIT_EXPECT_EQ(test, ret, 0);
 
        conn_state = conn->state;
@@ -1322,6 +1355,9 @@ static void drm_test_check_output_bpc_format_vic_1(struct kunit *test)
 
        KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_bpc, 8);
        KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -1331,7 +1367,7 @@ static void drm_test_check_output_bpc_format_vic_1(struct kunit *test)
 static void drm_test_check_output_bpc_format_driver_rgb_only(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *conn_state;
        struct drm_display_info *info;
        struct drm_display_mode *preferred;
@@ -1376,10 +1412,9 @@ static void drm_test_check_output_bpc_format_driver_rgb_only(struct kunit *test)
        rate = drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_YUV422);
        KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
-       ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, preferred, &ctx);
        KUNIT_EXPECT_EQ(test, ret, 0);
 
        conn_state = conn->state;
@@ -1387,6 +1422,9 @@ static void drm_test_check_output_bpc_format_driver_rgb_only(struct kunit *test)
 
        KUNIT_EXPECT_LT(test, conn_state->hdmi.output_bpc, 12);
        KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -1396,7 +1434,7 @@ static void drm_test_check_output_bpc_format_driver_rgb_only(struct kunit *test)
 static void drm_test_check_output_bpc_format_display_rgb_only(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *conn_state;
        struct drm_display_info *info;
        struct drm_display_mode *preferred;
@@ -1443,10 +1481,9 @@ static void drm_test_check_output_bpc_format_display_rgb_only(struct kunit *test
        rate = drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_YUV422);
        KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
-       ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, preferred, &ctx);
        KUNIT_EXPECT_EQ(test, ret, 0);
 
        conn_state = conn->state;
@@ -1454,6 +1491,9 @@ static void drm_test_check_output_bpc_format_display_rgb_only(struct kunit *test
 
        KUNIT_EXPECT_LT(test, conn_state->hdmi.output_bpc, 12);
        KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -1464,7 +1504,7 @@ static void drm_test_check_output_bpc_format_display_rgb_only(struct kunit *test
 static void drm_test_check_output_bpc_format_driver_8bpc_only(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *conn_state;
        struct drm_display_info *info;
        struct drm_display_mode *preferred;
@@ -1501,10 +1541,9 @@ static void drm_test_check_output_bpc_format_driver_8bpc_only(struct kunit *test
        rate = drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_RGB);
        KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
-       ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, preferred, &ctx);
        KUNIT_EXPECT_EQ(test, ret, 0);
 
        conn_state = conn->state;
@@ -1512,6 +1551,9 @@ static void drm_test_check_output_bpc_format_driver_8bpc_only(struct kunit *test
 
        KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_bpc, 8);
        KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -1522,7 +1564,7 @@ static void drm_test_check_output_bpc_format_driver_8bpc_only(struct kunit *test
 static void drm_test_check_output_bpc_format_display_8bpc_only(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *conn_state;
        struct drm_display_info *info;
        struct drm_display_mode *preferred;
@@ -1561,10 +1603,9 @@ static void drm_test_check_output_bpc_format_display_8bpc_only(struct kunit *tes
        rate = drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_RGB);
        KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
-       ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, preferred, &ctx);
        KUNIT_EXPECT_EQ(test, ret, 0);
 
        conn_state = conn->state;
@@ -1572,13 +1613,16 @@ static void drm_test_check_output_bpc_format_display_8bpc_only(struct kunit *tes
 
        KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_bpc, 8);
        KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /* Test that atomic check succeeds when disabling a connector. */
 static void drm_test_check_disable_connector(struct kunit *test)
 {
        struct drm_atomic_helper_connector_hdmi_priv *priv;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_connector_state *conn_state;
        struct drm_crtc_state *crtc_state;
        struct drm_atomic_state *state;
@@ -1593,8 +1637,7 @@ static void drm_test_check_disable_connector(struct kunit *test)
                                                    8);
        KUNIT_ASSERT_NOT_NULL(test, priv);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
        conn = &priv->connector;
        preferred = find_preferred_mode(conn);
@@ -1602,10 +1645,10 @@ static void drm_test_check_disable_connector(struct kunit *test)
 
        drm = &priv->drm;
        crtc = priv->crtc;
-       ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
+       ret = light_up_connector(test, drm, crtc, conn, preferred, &ctx);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
-       state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
        crtc_state = drm_atomic_get_crtc_state(state, crtc);
@@ -1623,6 +1666,9 @@ static void drm_test_check_disable_connector(struct kunit *test)
 
        ret = drm_atomic_check_only(state);
        KUNIT_ASSERT_EQ(test, ret, 0);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 static struct kunit_case drm_atomic_helper_connector_hdmi_check_tests[] = {
index 3c0b7824c0be37ad628015d3bbc384eed0f5c239..a4eb68f0decca15988105b9d58266e3871934a8b 100644 (file)
@@ -80,47 +80,6 @@ __drm_kunit_helper_alloc_drm_device_with_driver(struct kunit *test,
 }
 EXPORT_SYMBOL_GPL(__drm_kunit_helper_alloc_drm_device_with_driver);
 
-static void action_drm_release_context(void *ptr)
-{
-       struct drm_modeset_acquire_ctx *ctx = ptr;
-
-       drm_modeset_drop_locks(ctx);
-       drm_modeset_acquire_fini(ctx);
-}
-
-/**
- * drm_kunit_helper_acquire_ctx_alloc - Allocates an acquire context
- * @test: The test context object
- *
- * Allocates and initializes a modeset acquire context.
- *
- * The context is tied to the kunit test context, so we must not call
- * drm_modeset_acquire_fini() on it, it will be done so automatically.
- *
- * Returns:
- * An ERR_PTR on error, a pointer to the newly allocated context otherwise
- */
-struct drm_modeset_acquire_ctx *
-drm_kunit_helper_acquire_ctx_alloc(struct kunit *test)
-{
-       struct drm_modeset_acquire_ctx *ctx;
-       int ret;
-
-       ctx = kunit_kzalloc(test, sizeof(*ctx), GFP_KERNEL);
-       KUNIT_ASSERT_NOT_NULL(test, ctx);
-
-       drm_modeset_acquire_init(ctx, 0);
-
-       ret = kunit_add_action_or_reset(test,
-                                       action_drm_release_context,
-                                       ctx);
-       if (ret)
-               return ERR_PTR(ret);
-
-       return ctx;
-}
-EXPORT_SYMBOL_GPL(drm_kunit_helper_acquire_ctx_alloc);
-
 static void kunit_action_drm_atomic_state_put(void *ptr)
 {
        struct drm_atomic_state *state = ptr;
index 40a05869a50e854cc5076f6e8e3e8fd0f8c7039d..992e8f5c5c6ea8d92338a8fe739fa1115ff85338 100644 (file)
@@ -724,7 +724,7 @@ static void drm_vc4_test_pv_muxing_invalid(struct kunit *test)
 static int vc4_pv_muxing_test_init(struct kunit *test)
 {
        const struct pv_muxing_param *params = test->param_value;
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct pv_muxing_priv *priv;
        struct drm_device *drm;
        struct vc4_dev *vc4;
@@ -737,13 +737,15 @@ static int vc4_pv_muxing_test_init(struct kunit *test)
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, vc4);
        priv->vc4 = vc4;
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
        drm = &vc4->base;
-       priv->state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       priv->state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, priv->state);
 
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
+
        return 0;
 }
 
@@ -782,7 +784,7 @@ static struct kunit_suite vc5_pv_muxing_test_suite = {
  */
 static void drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable(struct kunit *test)
 {
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_atomic_state *state;
        struct vc4_crtc_state *new_vc4_crtc_state;
        struct vc4_hvs_state *new_hvs_state;
@@ -795,11 +797,10 @@ static void drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable(struct kunit *tes
        vc4 = vc5_mock_device(test);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, vc4);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
        drm = &vc4->base;
-       state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
        ret = vc4_mock_atomic_add_output(test, state, VC4_ENCODER_TYPE_HDMI0);
@@ -822,7 +823,7 @@ static void drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable(struct kunit *tes
        ret = drm_atomic_helper_swap_state(state, false);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
-       state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
        ret = vc4_mock_atomic_add_output(test, state, VC4_ENCODER_TYPE_HDMI1);
@@ -843,6 +844,9 @@ static void drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable(struct kunit *tes
        KUNIT_ASSERT_TRUE(test, new_hvs_state->fifo_state[hdmi1_channel].in_use);
 
        KUNIT_EXPECT_NE(test, hdmi0_channel, hdmi1_channel);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -854,7 +858,7 @@ static void drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable(struct kunit *tes
  */
 static void drm_test_vc5_pv_muxing_bugs_stable_fifo(struct kunit *test)
 {
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_atomic_state *state;
        struct vc4_crtc_state *new_vc4_crtc_state;
        struct vc4_hvs_state *new_hvs_state;
@@ -867,11 +871,10 @@ static void drm_test_vc5_pv_muxing_bugs_stable_fifo(struct kunit *test)
        vc4 = vc5_mock_device(test);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, vc4);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
        drm = &vc4->base;
-       state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
        ret = vc4_mock_atomic_add_output(test, state, VC4_ENCODER_TYPE_HDMI0);
@@ -905,7 +908,7 @@ static void drm_test_vc5_pv_muxing_bugs_stable_fifo(struct kunit *test)
        ret = drm_atomic_helper_swap_state(state, false);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
-       state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
        ret = vc4_mock_atomic_del_output(test, state, VC4_ENCODER_TYPE_HDMI0);
@@ -929,6 +932,9 @@ static void drm_test_vc5_pv_muxing_bugs_stable_fifo(struct kunit *test)
 
                KUNIT_EXPECT_EQ(test, old_hdmi1_channel, hdmi1_channel);
        }
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 /*
@@ -949,7 +955,7 @@ static void drm_test_vc5_pv_muxing_bugs_stable_fifo(struct kunit *test)
 static void
 drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable_too_many_crtc_state(struct kunit *test)
 {
-       struct drm_modeset_acquire_ctx *ctx;
+       struct drm_modeset_acquire_ctx ctx;
        struct drm_atomic_state *state;
        struct vc4_crtc_state *new_vc4_crtc_state;
        struct drm_device *drm;
@@ -959,11 +965,10 @@ drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable_too_many_crtc_state(struct ku
        vc4 = vc5_mock_device(test);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, vc4);
 
-       ctx = drm_kunit_helper_acquire_ctx_alloc(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
+       drm_modeset_acquire_init(&ctx, 0);
 
        drm = &vc4->base;
-       state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
        ret = vc4_mock_atomic_add_output(test, state, VC4_ENCODER_TYPE_HDMI0);
@@ -975,7 +980,7 @@ drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable_too_many_crtc_state(struct ku
        ret = drm_atomic_helper_swap_state(state, false);
        KUNIT_ASSERT_EQ(test, ret, 0);
 
-       state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
+       state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
        ret = vc4_mock_atomic_add_output(test, state, VC4_ENCODER_TYPE_HDMI1);
@@ -987,6 +992,9 @@ drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable_too_many_crtc_state(struct ku
        new_vc4_crtc_state = get_vc4_crtc_state_for_encoder(test, state,
                                                            VC4_ENCODER_TYPE_HDMI0);
        KUNIT_EXPECT_NULL(test, new_vc4_crtc_state);
+
+       drm_modeset_drop_locks(&ctx);
+       drm_modeset_acquire_fini(&ctx);
 }
 
 static struct kunit_case vc5_pv_muxing_bugs_tests[] = {
index afdd46ef04f70dcd1adedef2be302d67b508f035..11d59ce0bac0bbec07ae5f07ed9710cf01d73f09 100644 (file)
@@ -95,8 +95,6 @@ __drm_kunit_helper_alloc_drm_device(struct kunit *test,
                                                      sizeof(_type),            \
                                                      offsetof(_type, _member), \
                                                      _feat))
-struct drm_modeset_acquire_ctx *
-drm_kunit_helper_acquire_ctx_alloc(struct kunit *test);
 
 struct drm_atomic_state *
 drm_kunit_helper_atomic_state_alloc(struct kunit *test,