summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Hung <alex.hung@amd.com>2026-06-18 14:22:27 -0600
committerAlex Deucher <alexander.deucher@amd.com>2026-07-01 11:38:14 -0400
commita532f8d7e4c96a3244e75539665637df9f33d8db (patch)
treeae7aac4474eddf3d76f29cb107ceccca602a132e
parent9bcf6af12bacb046b712359a770a9302b8856ae6 (diff)
downloadlinux-a532f8d7e4c96a3244e75539665637df9f33d8db.tar.gz
linux-a532f8d7e4c96a3244e75539665637df9f33d8db.zip
drm/amd/display: Extract shared KUnit test helpers
Extract common allocation and setup patterns from KUnit test files into a dedicated helpers module to reduce duplication. Add tests/amdgpu_dm_kunit_helpers.c with shared helpers: - dm_kunit_alloc_adev: allocate amdgpu_device via DRM mock - dm_kunit_alloc_link: allocate zeroed dc_link - dm_kunit_alloc_link_with_ctx: allocate dc_link with dc_context - dm_kunit_alloc_dm: allocate display_manager with DC state - dm_kunit_alloc_stream: allocate dc_stream_state with link - dm_kunit_add_stream_to_state: wire stream into dc_state - dm_kunit_alloc_connector: allocate connector wired to device Update 10 test files to use the shared helpers, removing duplicated local alloc_test_adev, alloc_test_link, alloc_test_dm, alloc_test_stream, and add_test_stream functions. Add missing MODULE_DESCRIPTION() macro to suppress modpost warning: WARNING: modpost: missing MODULE_DESCRIPTION() in amdgpu_dm_kunit_helpers.o Assisted-by: Copilot:Claude-Opus-4.6 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/display/amdgpu_dm/tests/Makefile1
-rw-r--r--drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_backlight_test.c21
-rw-r--r--drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_colorop_test.c13
-rw-r--r--drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_crtc_test.c15
-rw-r--r--drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_helpers_test.c19
-rw-r--r--drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_irq_test.c37
-rw-r--r--drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_ism_test.c39
-rw-r--r--drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_kunit_helpers.c142
-rw-r--r--drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_kunit_test_helpers.h32
-rw-r--r--drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_mst_types_test.c13
-rw-r--r--drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_psr_test.c126
-rw-r--r--drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_replay_test.c19
-rw-r--r--drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_wb_test.c18
13 files changed, 252 insertions, 243 deletions
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/Makefile b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/Makefile
index 4d89ad8a6df6..1592e8dae1a9 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/Makefile
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/Makefile
@@ -11,6 +11,7 @@ ccflags-y += -I$(src)/../../../amdgpu
ccflags-y += -I$(src)/../../../amdkfd
ccflags-y += -I$(src)/../../../include
+obj-$(CONFIG_DRM_AMD_DC_KUNIT_TEST) += amdgpu_dm_kunit_helpers.o
obj-$(CONFIG_DRM_AMD_DC_KUNIT_TEST) += amdgpu_dm_crc_test.o
obj-$(CONFIG_DRM_AMD_DC_KUNIT_TEST) += amdgpu_dm_hdcp_test.o
obj-$(CONFIG_DRM_AMD_DC_KUNIT_TEST) += amdgpu_dm_audio_test.o
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_backlight_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_backlight_test.c
index 0e9de940e5a8..fff50c1325c6 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_backlight_test.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_backlight_test.c
@@ -13,6 +13,7 @@
#include "amdgpu_mode.h"
#include "amdgpu_dm.h"
#include "amdgpu_dm_backlight.h"
+#include "amdgpu_dm_kunit_test_helpers.h"
#include "amd_shared.h"
#include "dc/inc/hw/panel_cntl.h"
@@ -22,16 +23,6 @@ struct dm_backlight_connector_fixture {
struct dc_link *link;
};
-static struct amdgpu_display_manager *alloc_test_dm(struct kunit *test)
-{
- struct amdgpu_display_manager *dm;
-
- dm = kunit_kzalloc(test, sizeof(*dm), GFP_KERNEL);
- KUNIT_ASSERT_NOT_NULL(test, dm);
-
- return dm;
-}
-
static void setup_test_connector(struct kunit *test,
struct dm_backlight_connector_fixture *fixture,
int bl_idx, enum signal_type signal)
@@ -57,7 +48,7 @@ static void setup_test_connector(struct kunit *test,
*/
static void dm_test_backlight_device_index_matches_second(struct kunit *test)
{
- struct amdgpu_display_manager *dm = alloc_test_dm(test);
+ struct amdgpu_display_manager *dm = dm_kunit_alloc_dm(test);
struct backlight_device *bd0;
struct backlight_device *bd1;
@@ -79,7 +70,7 @@ static void dm_test_backlight_device_index_matches_second(struct kunit *test)
*/
static void dm_test_backlight_device_index_missing_fallback(struct kunit *test)
{
- struct amdgpu_display_manager *dm = alloc_test_dm(test);
+ struct amdgpu_display_manager *dm = dm_kunit_alloc_dm(test);
struct backlight_device *known_bd;
struct backlight_device *unknown_bd;
@@ -102,7 +93,7 @@ static void dm_test_backlight_device_index_missing_fallback(struct kunit *test)
*/
static void dm_test_backlight_caps_valid_short_circuit(struct kunit *test)
{
- struct amdgpu_display_manager *dm = alloc_test_dm(test);
+ struct amdgpu_display_manager *dm = dm_kunit_alloc_dm(test);
struct amdgpu_dm_backlight_caps *caps = &dm->backlight_caps[0];
caps->caps_valid = true;
@@ -125,7 +116,7 @@ static void dm_test_backlight_caps_valid_short_circuit(struct kunit *test)
*/
static void dm_test_backlight_caps_aux_support_noop(struct kunit *test)
{
- struct amdgpu_display_manager *dm = alloc_test_dm(test);
+ struct amdgpu_display_manager *dm = dm_kunit_alloc_dm(test);
struct amdgpu_dm_backlight_caps *caps = &dm->backlight_caps[0];
caps->caps_valid = false;
@@ -146,7 +137,7 @@ static void dm_test_backlight_caps_aux_support_noop(struct kunit *test)
*/
static void dm_test_backlight_caps_non_aux_sets_defaults(struct kunit *test)
{
- struct amdgpu_display_manager *dm = alloc_test_dm(test);
+ struct amdgpu_display_manager *dm = dm_kunit_alloc_dm(test);
struct amdgpu_dm_backlight_caps *caps = &dm->backlight_caps[0];
caps->caps_valid = false;
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 b28a165b213e..2e557ff66818 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
@@ -12,6 +12,7 @@
#include "dc.h"
#include "amdgpu.h"
#include "amdgpu_dm_colorop.h"
+#include "amdgpu_dm_kunit_test_helpers.h"
/* Tests for amdgpu_dm_supported_degam_tfs */
@@ -222,19 +223,11 @@ static void dm_test_initialize_default_pipeline_caps(struct kunit *test,
struct amdgpu_device *adev;
struct drm_device *drm;
struct drm_plane *plane;
- struct device *dev;
struct dc *dc;
int ret;
- dev = drm_kunit_helper_alloc_device(test);
- KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
-
- drm = __drm_kunit_helper_alloc_drm_device(test, dev,
- sizeof(*adev),
- offsetof(struct amdgpu_device, ddev),
- DRIVER_MODESET);
- KUNIT_ASSERT_NOT_ERR_OR_NULL(test, drm);
- adev = drm_to_adev(drm);
+ adev = dm_kunit_alloc_adev(test);
+ drm = &adev->ddev;
dc = kunit_kzalloc(test, sizeof(*dc), GFP_KERNEL);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dc);
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_crtc_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_crtc_test.c
index c83bd3e074f1..0edaf969f16b 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_crtc_test.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_crtc_test.c
@@ -15,6 +15,7 @@
#include "amdgpu_mode.h"
#include "amdgpu_dm.h"
#include "amdgpu_dm_crtc.h"
+#include "amdgpu_dm_kunit_test_helpers.h"
#include "amdgpu_dm_irq_params.h"
/* Tests for amdgpu_dm_crtc_modeset_required() */
@@ -435,23 +436,13 @@ static void dm_test_crtc_set_vupdate_irq_no_otg(struct kunit *test)
{
struct amdgpu_crtc *acrtc;
struct amdgpu_device *adev;
- struct drm_device *drm;
- struct device *dev;
- dev = drm_kunit_helper_alloc_device(test);
- KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
-
- drm = __drm_kunit_helper_alloc_drm_device(test, dev,
- sizeof(*adev),
- offsetof(struct amdgpu_device, ddev),
- DRIVER_MODESET);
- KUNIT_ASSERT_NOT_ERR_OR_NULL(test, drm);
- adev = drm_to_adev(drm);
+ adev = dm_kunit_alloc_adev(test);
acrtc = kunit_kzalloc(test, sizeof(*acrtc), GFP_KERNEL);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, acrtc);
- acrtc->base.dev = drm;
+ acrtc->base.dev = &adev->ddev;
acrtc->otg_inst = -1;
KUNIT_EXPECT_EQ(test, amdgpu_dm_crtc_set_vupdate_irq(&acrtc->base, true), 0);
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_helpers_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_helpers_test.c
index 14004ff87c9b..33014a2d2222 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_helpers_test.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_helpers_test.c
@@ -16,6 +16,7 @@
#include "dm_helpers.h"
#include "ddc_service_types.h"
#include "amdgpu_dm_helpers.h"
+#include "amdgpu_dm_kunit_test_helpers.h"
/* Tests for edid_extract_panel_id() */
@@ -552,26 +553,14 @@ static void dm_test_mst_start_top_mgr_boot(struct kunit *test)
{
struct amdgpu_dm_connector *aconnector;
struct amdgpu_device *adev;
- struct drm_device *drm;
- struct device *dev;
struct dc_link *link;
- dev = drm_kunit_helper_alloc_device(test);
- KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
+ adev = dm_kunit_alloc_adev(test);
- drm = __drm_kunit_helper_alloc_drm_device(test, dev,
- sizeof(*adev),
- offsetof(struct amdgpu_device, ddev),
- DRIVER_MODESET);
- KUNIT_ASSERT_NOT_ERR_OR_NULL(test, drm);
- adev = drm_to_adev(drm);
+ link = dm_kunit_alloc_link(test);
- aconnector = kunit_kzalloc(test, sizeof(*aconnector), GFP_KERNEL);
- KUNIT_ASSERT_NOT_NULL(test, aconnector);
- aconnector->base.dev = drm;
+ aconnector = dm_kunit_alloc_connector(test, adev, NULL);
- link = kunit_kzalloc(test, sizeof(*link), GFP_KERNEL);
- KUNIT_ASSERT_NOT_NULL(test, link);
link->priv = aconnector;
KUNIT_EXPECT_TRUE(test, dm_helpers_dp_mst_start_top_mgr(NULL, link, true));
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_irq_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_irq_test.c
index 525caa0b1f6a..a73a6dd146d6 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_irq_test.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_irq_test.c
@@ -13,6 +13,7 @@
#include "amdgpu_mode.h"
#include "amdgpu_dm.h"
#include "amdgpu_dm_irq.h"
+#include "amdgpu_dm_kunit_test_helpers.h"
#include "dmub/dmub_srv.h"
static void dm_test_irq_handler(void *arg)
@@ -778,17 +779,9 @@ static void dm_test_get_crtc_by_otg_inst_returns_match(struct kunit *test)
struct amdgpu_crtc *acrtc_a, *acrtc_b;
struct amdgpu_device *adev;
struct drm_device *drm;
- struct device *dev;
- dev = drm_kunit_helper_alloc_device(test);
- KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
-
- drm = __drm_kunit_helper_alloc_drm_device(test, dev,
- sizeof(*adev),
- offsetof(struct amdgpu_device, ddev),
- DRIVER_MODESET);
- KUNIT_ASSERT_NOT_ERR_OR_NULL(test, drm);
- adev = drm_to_adev(drm);
+ adev = dm_kunit_alloc_adev(test);
+ drm = &adev->ddev;
acrtc_a = kunit_kzalloc(test, sizeof(*acrtc_a), GFP_KERNEL);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, acrtc_a);
@@ -819,17 +812,9 @@ static void dm_test_get_crtc_by_otg_inst_returns_null(struct kunit *test)
struct amdgpu_crtc *acrtc;
struct amdgpu_device *adev;
struct drm_device *drm;
- struct device *dev;
-
- dev = drm_kunit_helper_alloc_device(test);
- KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
- drm = __drm_kunit_helper_alloc_drm_device(test, dev,
- sizeof(*adev),
- offsetof(struct amdgpu_device, ddev),
- DRIVER_MODESET);
- KUNIT_ASSERT_NOT_ERR_OR_NULL(test, drm);
- adev = drm_to_adev(drm);
+ adev = dm_kunit_alloc_adev(test);
+ drm = &adev->ddev;
acrtc = kunit_kzalloc(test, sizeof(*acrtc), GFP_KERNEL);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, acrtc);
@@ -851,18 +836,8 @@ static void dm_test_get_crtc_by_otg_inst_returns_null(struct kunit *test)
static void dm_test_get_crtc_by_otg_inst_empty_list(struct kunit *test)
{
struct amdgpu_device *adev;
- struct drm_device *drm;
- struct device *dev;
-
- dev = drm_kunit_helper_alloc_device(test);
- KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
- drm = __drm_kunit_helper_alloc_drm_device(test, dev,
- sizeof(*adev),
- offsetof(struct amdgpu_device, ddev),
- DRIVER_MODESET);
- KUNIT_ASSERT_NOT_ERR_OR_NULL(test, drm);
- adev = drm_to_adev(drm);
+ adev = dm_kunit_alloc_adev(test);
KUNIT_EXPECT_NULL(test, amdgpu_dm_get_crtc_by_otg_inst(adev, 0));
}
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_ism_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_ism_test.c
index f3b3f77aafd5..7dfb3b351d20 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_ism_test.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_ism_test.c
@@ -9,20 +9,7 @@
#include "dc.h"
#include "amdgpu_dm_ism.h"
-
-/*
- * Helper: allocate and zero-initialise a dc_stream_state for timing tests.
- * Only the timing sub-struct is accessed by the functions under test.
- */
-static struct dc_stream_state *alloc_test_stream(struct kunit *test)
-{
- struct dc_stream_state *stream;
-
- stream = kunit_kzalloc(test, sizeof(*stream), GFP_KERNEL);
- KUNIT_ASSERT_NOT_NULL(test, stream);
-
- return stream;
-}
+#include "amdgpu_dm_kunit_test_helpers.h"
/*
* Helper: allocate and zero-initialise an ISM instance.
@@ -275,7 +262,7 @@ static void dm_test_ism_sso_delay_null_stream(struct kunit *test)
static void dm_test_ism_sso_delay_zero_frames(struct kunit *test)
{
struct amdgpu_dm_ism *ism = alloc_test_ism(test);
- struct dc_stream_state *stream = alloc_test_stream(test);
+ struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
stream->timing.v_total = 1125;
stream->timing.h_total = 2200;
@@ -288,7 +275,7 @@ static void dm_test_ism_sso_delay_zero_frames(struct kunit *test)
static void dm_test_ism_sso_delay_1080p60_3frames(struct kunit *test)
{
struct amdgpu_dm_ism *ism = alloc_test_ism(test);
- struct dc_stream_state *stream = alloc_test_stream(test);
+ struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
uint64_t expected_one_frame_ns, expected;
/*
@@ -311,7 +298,7 @@ static void dm_test_ism_sso_delay_1080p60_3frames(struct kunit *test)
static void dm_test_ism_sso_delay_4k60_1frame(struct kunit *test)
{
struct amdgpu_dm_ism *ism = alloc_test_ism(test);
- struct dc_stream_state *stream = alloc_test_stream(test);
+ struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
uint64_t expected_one_frame_ns;
/*
@@ -347,7 +334,7 @@ static void dm_test_ism_idle_delay_null_stream(struct kunit *test)
static void dm_test_ism_idle_delay_zero_filter_frames(struct kunit *test)
{
struct amdgpu_dm_ism *ism = alloc_test_ism(test);
- struct dc_stream_state *stream = alloc_test_stream(test);
+ struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
stream->timing.v_total = 1125;
stream->timing.h_total = 2200;
@@ -361,7 +348,7 @@ static void dm_test_ism_idle_delay_zero_filter_frames(struct kunit *test)
static void dm_test_ism_idle_delay_zero_entry_count(struct kunit *test)
{
struct amdgpu_dm_ism *ism = alloc_test_ism(test);
- struct dc_stream_state *stream = alloc_test_stream(test);
+ struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
stream->timing.v_total = 1125;
stream->timing.h_total = 2200;
@@ -376,7 +363,7 @@ static void dm_test_ism_idle_delay_zero_entry_count(struct kunit *test)
static void dm_test_ism_idle_delay_zero_delay_frames(struct kunit *test)
{
struct amdgpu_dm_ism *ism = alloc_test_ism(test);
- struct dc_stream_state *stream = alloc_test_stream(test);
+ struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
stream->timing.v_total = 1125;
stream->timing.h_total = 2200;
@@ -392,7 +379,7 @@ static void dm_test_ism_idle_delay_zero_delay_frames(struct kunit *test)
static void dm_test_ism_idle_delay_no_short_idles(struct kunit *test)
{
struct amdgpu_dm_ism *ism = alloc_test_ism(test);
- struct dc_stream_state *stream = alloc_test_stream(test);
+ struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
uint64_t one_frame_ns;
/*
@@ -426,7 +413,7 @@ static void dm_test_ism_idle_delay_no_short_idles(struct kunit *test)
static void dm_test_ism_idle_delay_enough_short_idles(struct kunit *test)
{
struct amdgpu_dm_ism *ism = alloc_test_ism(test);
- struct dc_stream_state *stream = alloc_test_stream(test);
+ struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
uint64_t one_frame_ns, expected;
/*
@@ -461,7 +448,7 @@ static void dm_test_ism_idle_delay_enough_short_idles(struct kunit *test)
static void dm_test_ism_idle_delay_wraps_around_buffer(struct kunit *test)
{
struct amdgpu_dm_ism *ism = alloc_test_ism(test);
- struct dc_stream_state *stream = alloc_test_stream(test);
+ struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
uint64_t one_frame_ns, expected;
/*
@@ -497,7 +484,7 @@ static void dm_test_ism_idle_delay_wraps_around_buffer(struct kunit *test)
static void dm_test_ism_idle_delay_old_history_cutoff(struct kunit *test)
{
struct amdgpu_dm_ism *ism = alloc_test_ism(test);
- struct dc_stream_state *stream = alloc_test_stream(test);
+ struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
uint64_t one_frame_ns;
/*
@@ -545,7 +532,7 @@ static void dm_test_ism_idle_delay_old_history_cutoff(struct kunit *test)
static void dm_test_ism_idle_delay_mixed_durations(struct kunit *test)
{
struct amdgpu_dm_ism *ism = alloc_test_ism(test);
- struct dc_stream_state *stream = alloc_test_stream(test);
+ struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
uint64_t one_frame_ns;
/*
@@ -586,7 +573,7 @@ static void dm_test_ism_idle_delay_mixed_durations(struct kunit *test)
static void dm_test_ism_idle_delay_entry_count_exceeds_history_size(struct kunit *test)
{
struct amdgpu_dm_ism *ism = alloc_test_ism(test);
- struct dc_stream_state *stream = alloc_test_stream(test);
+ struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
uint64_t one_frame_ns, expected;
/*
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_kunit_helpers.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_kunit_helpers.c
new file mode 100644
index 000000000000..58615cdbe854
--- /dev/null
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_kunit_helpers.c
@@ -0,0 +1,142 @@
+// SPDX-License-Identifier: GPL-2.0 OR MIT
+/*
+ * KUnit test helpers for amdgpu_dm tests.
+ *
+ * Copyright 2026 Advanced Micro Devices, Inc.
+ */
+
+#include <kunit/test.h>
+#include <linux/module.h>
+#include <drm/drm_kunit_helpers.h>
+
+#include "dc.h"
+#include "core_types.h"
+#include "amdgpu.h"
+#include "amdgpu_mode.h"
+#include "amdgpu_dm.h"
+#include "amdgpu_dm_kunit_test_helpers.h"
+
+struct amdgpu_device *dm_kunit_alloc_adev(struct kunit *test)
+{
+ struct drm_device *drm;
+ struct device *dev;
+
+ dev = drm_kunit_helper_alloc_device(test);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
+
+ drm = __drm_kunit_helper_alloc_drm_device(test, dev,
+ sizeof(struct amdgpu_device),
+ offsetof(struct amdgpu_device, ddev),
+ DRIVER_MODESET | DRIVER_ATOMIC);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, drm);
+
+ return drm_to_adev(drm);
+}
+EXPORT_SYMBOL(dm_kunit_alloc_adev);
+
+struct dc_link *dm_kunit_alloc_link(struct kunit *test)
+{
+ struct dc_link *link;
+
+ link = kunit_kzalloc(test, sizeof(*link), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, link);
+
+ return link;
+}
+EXPORT_SYMBOL(dm_kunit_alloc_link);
+
+struct dc_link *dm_kunit_alloc_link_with_ctx(struct kunit *test)
+{
+ struct dc_link *link;
+ struct dc_context *ctx;
+ struct dc *dc;
+
+ link = dm_kunit_alloc_link(test);
+
+ ctx = kunit_kzalloc(test, sizeof(*ctx), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, ctx);
+
+ dc = kunit_kzalloc(test, sizeof(*dc), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, dc);
+
+ link->ctx = ctx;
+ ctx->dc = dc;
+ dc->ctx = ctx;
+
+ return link;
+}
+EXPORT_SYMBOL(dm_kunit_alloc_link_with_ctx);
+
+struct amdgpu_display_manager *dm_kunit_alloc_dm(struct kunit *test)
+{
+ struct amdgpu_display_manager *dm;
+ struct dc *dc;
+ struct dc_state *state;
+
+ dm = kunit_kzalloc(test, sizeof(*dm), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, dm);
+
+ dc = kunit_kzalloc(test, sizeof(*dc), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, dc);
+
+ state = kunit_kzalloc(test, sizeof(*state), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, state);
+
+ dm->dc = dc;
+ dc->current_state = state;
+
+ return dm;
+}
+EXPORT_SYMBOL(dm_kunit_alloc_dm);
+
+struct dc_stream_state *dm_kunit_alloc_stream(struct kunit *test,
+ struct dc_link *link)
+{
+ struct dc_stream_state *stream;
+
+ stream = kunit_kzalloc(test, sizeof(*stream), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, stream);
+
+ stream->link = link;
+ kref_init(&stream->refcount);
+
+ return stream;
+}
+EXPORT_SYMBOL(dm_kunit_alloc_stream);
+
+void dm_kunit_add_stream_to_state(struct kunit *test, struct dc_state *state,
+ unsigned int index, struct dc_link *link)
+{
+ struct dc_stream_state *stream;
+
+ KUNIT_ASSERT_LT(test, index, (unsigned int)MAX_PIPES);
+
+ stream = kunit_kzalloc(test, sizeof(*stream), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, stream);
+
+ stream->link = link;
+ state->streams[index] = stream;
+ if (state->stream_count <= index)
+ state->stream_count = index + 1;
+}
+EXPORT_SYMBOL(dm_kunit_add_stream_to_state);
+
+struct amdgpu_dm_connector *dm_kunit_alloc_connector(struct kunit *test,
+ struct amdgpu_device *adev,
+ struct dc_link *link)
+{
+ struct amdgpu_dm_connector *aconnector;
+
+ aconnector = kunit_kzalloc(test, sizeof(*aconnector), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, aconnector);
+
+ if (adev)
+ aconnector->base.dev = &adev->ddev;
+ aconnector->dc_link = link;
+
+ return aconnector;
+}
+EXPORT_SYMBOL(dm_kunit_alloc_connector);
+
+MODULE_LICENSE("Dual MIT/GPL");
+MODULE_DESCRIPTION("KUnit test helpers for amdgpu_dm tests");
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_kunit_test_helpers.h b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_kunit_test_helpers.h
new file mode 100644
index 000000000000..0f1c48fa2128
--- /dev/null
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_kunit_test_helpers.h
@@ -0,0 +1,32 @@
+/* SPDX-License-Identifier: GPL-2.0 OR MIT */
+/*
+ * KUnit test helpers for amdgpu_dm tests.
+ *
+ * Copyright 2026 Advanced Micro Devices, Inc.
+ */
+
+#ifndef AMDGPU_DM_KUNIT_TEST_HELPERS_H
+#define AMDGPU_DM_KUNIT_TEST_HELPERS_H
+
+#include <kunit/test.h>
+
+struct amdgpu_device;
+struct amdgpu_display_manager;
+struct amdgpu_dm_connector;
+struct dc_link;
+struct dc_state;
+struct dc_stream_state;
+
+struct amdgpu_device *dm_kunit_alloc_adev(struct kunit *test);
+struct dc_link *dm_kunit_alloc_link(struct kunit *test);
+struct dc_link *dm_kunit_alloc_link_with_ctx(struct kunit *test);
+struct amdgpu_display_manager *dm_kunit_alloc_dm(struct kunit *test);
+struct dc_stream_state *dm_kunit_alloc_stream(struct kunit *test,
+ struct dc_link *link);
+void dm_kunit_add_stream_to_state(struct kunit *test, struct dc_state *state,
+ unsigned int index, struct dc_link *link);
+struct amdgpu_dm_connector *dm_kunit_alloc_connector(struct kunit *test,
+ struct amdgpu_device *adev,
+ struct dc_link *link);
+
+#endif /* AMDGPU_DM_KUNIT_TEST_HELPERS_H */
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_mst_types_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_mst_types_test.c
index d40ed83d8685..a6b4df091e8e 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_mst_types_test.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_mst_types_test.c
@@ -20,6 +20,7 @@
#include "amdgpu_mode.h"
#include "amdgpu_dm.h"
#include "amdgpu_dm_mst_types.h"
+#include "amdgpu_dm_kunit_test_helpers.h"
#include "inc/link_service.h"
/*
@@ -914,18 +915,10 @@ static void dm_mst_test_create_fake_mst_encoders(struct kunit *test)
{
struct amdgpu_device *adev;
struct drm_device *drm;
- struct device *dev;
int i;
- dev = drm_kunit_helper_alloc_device(test);
- KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
-
- drm = __drm_kunit_helper_alloc_drm_device(test, dev,
- sizeof(*adev),
- offsetof(struct amdgpu_device, ddev),
- DRIVER_MODESET | DRIVER_ATOMIC);
- KUNIT_ASSERT_NOT_ERR_OR_NULL(test, drm);
- adev = drm_to_adev(drm);
+ adev = dm_kunit_alloc_adev(test);
+ drm = &adev->ddev;
adev->dm.display_indexes_num = 3;
adev->mode_info.num_crtc = 3;
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_psr_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_psr_test.c
index 2dd870f650db..09bd98e93047 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_psr_test.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_psr_test.c
@@ -12,79 +12,17 @@
#include "amdgpu_mode.h"
#include "amdgpu_dm.h"
#include "amdgpu_dm_psr.h"
+#include "amdgpu_dm_kunit_test_helpers.h"
#include "power_helpers.h"
-/*
- * Helper: allocate and zero-initialise a dc_link sufficient for
- * amdgpu_dm_psr_fill_caps() testing. The function only accesses
- * embedded members (dpcd_caps, psr_settings) so no pointer fields
- * need to be wired up.
- */
-static struct dc_link *alloc_test_link(struct kunit *test)
-{
- struct dc_link *link;
-
- link = kunit_kzalloc(test, sizeof(*link), GFP_KERNEL);
- KUNIT_ASSERT_NOT_NULL(test, link);
-
- return link;
-}
-
-/*
- * Helper: allocate and wire the minimal DM/DC state needed for
- * amdgpu_dm_psr_is_active_allowed() testing.
- */
-static struct amdgpu_display_manager *alloc_test_dm(struct kunit *test)
-{
- struct amdgpu_display_manager *dm;
- struct dc *dc;
- struct dc_state *state;
-
- dm = kunit_kzalloc(test, sizeof(*dm), GFP_KERNEL);
- KUNIT_ASSERT_NOT_NULL(test, dm);
-
- dc = kunit_kzalloc(test, sizeof(*dc), GFP_KERNEL);
- KUNIT_ASSERT_NOT_NULL(test, dc);
-
- state = kunit_kzalloc(test, sizeof(*state), GFP_KERNEL);
- KUNIT_ASSERT_NOT_NULL(test, state);
-
- dm->dc = dc;
- dc->current_state = state;
-
- return dm;
-}
-
-static void add_test_stream(struct kunit *test, struct dc_state *state,
- unsigned int index, struct dc_link *link)
-{
- struct dc_stream_state *stream;
-
- KUNIT_ASSERT_LT(test, index, (unsigned int)MAX_PIPES);
-
- stream = kunit_kzalloc(test, sizeof(*stream), GFP_KERNEL);
- KUNIT_ASSERT_NOT_NULL(test, stream);
-
- stream->link = link;
- state->streams[index] = stream;
- if (state->stream_count <= index)
- state->stream_count = index + 1;
-}
-
static struct dc_stream_state *alloc_test_psr_stream(struct kunit *test)
{
- struct dc_stream_state *stream;
struct dc_link *link;
- stream = kunit_kzalloc(test, sizeof(*stream), GFP_KERNEL);
- KUNIT_ASSERT_NOT_NULL(test, stream);
-
- link = alloc_test_link(test);
+ link = dm_kunit_alloc_link(test);
link->psr_settings.psr_feature_enabled = true;
- stream->link = link;
- kref_init(&stream->refcount);
- return stream;
+ return dm_kunit_alloc_stream(test, link);
}
static struct core_power *create_test_power_module(struct kunit *test,
@@ -108,7 +46,7 @@ static struct core_power *create_test_power_module(struct kunit *test,
static struct dc_link *alloc_test_psrsu_link(struct kunit *test)
{
- struct dc_link *link = alloc_test_link(test);
+ struct dc_link *link = dm_kunit_alloc_link(test);
struct dc_context *ctx;
struct dc *dc;
@@ -359,7 +297,7 @@ static void dm_test_set_psr_caps_no_dpcd_psr(struct kunit *test)
static void dm_test_set_psr_caps_edp1_disabled(struct kunit *test)
{
struct dc_link *link = alloc_test_psr_caps_link(test);
- struct dc_link *edp0 = alloc_test_link(test);
+ struct dc_link *edp0 = dm_kunit_alloc_link(test);
struct amdgpu_dm_connector *aconnector = alloc_test_aconnector(test);
struct dc *dc = link->ctx->dc;
@@ -393,7 +331,7 @@ static void dm_test_set_psr_caps_success_psr1(struct kunit *test)
static void dm_test_psr_fill_caps_version_1(struct kunit *test)
{
- struct dc_link *link = alloc_test_link(test);
+ struct dc_link *link = dm_kunit_alloc_link(test);
struct psr_caps caps;
memset(&caps, 0, sizeof(caps));
@@ -406,7 +344,7 @@ static void dm_test_psr_fill_caps_version_1(struct kunit *test)
static void dm_test_psr_fill_caps_version_su1(struct kunit *test)
{
- struct dc_link *link = alloc_test_link(test);
+ struct dc_link *link = dm_kunit_alloc_link(test);
struct psr_caps caps;
memset(&caps, 0, sizeof(caps));
@@ -419,7 +357,7 @@ static void dm_test_psr_fill_caps_version_su1(struct kunit *test)
static void dm_test_psr_fill_caps_version_unsupported(struct kunit *test)
{
- struct dc_link *link = alloc_test_link(test);
+ struct dc_link *link = dm_kunit_alloc_link(test);
struct psr_caps caps;
memset(&caps, 0, sizeof(caps));
@@ -438,7 +376,7 @@ static void dm_test_psr_fill_caps_version_unsupported(struct kunit *test)
static void dm_test_psr_fill_caps_setup_time_zero(struct kunit *test)
{
- struct dc_link *link = alloc_test_link(test);
+ struct dc_link *link = dm_kunit_alloc_link(test);
struct psr_caps caps;
memset(&caps, 0, sizeof(caps));
@@ -452,7 +390,7 @@ static void dm_test_psr_fill_caps_setup_time_zero(struct kunit *test)
static void dm_test_psr_fill_caps_setup_time_mid(struct kunit *test)
{
- struct dc_link *link = alloc_test_link(test);
+ struct dc_link *link = dm_kunit_alloc_link(test);
struct psr_caps caps;
memset(&caps, 0, sizeof(caps));
@@ -466,7 +404,7 @@ static void dm_test_psr_fill_caps_setup_time_mid(struct kunit *test)
static void dm_test_psr_fill_caps_setup_time_max(struct kunit *test)
{
- struct dc_link *link = alloc_test_link(test);
+ struct dc_link *link = dm_kunit_alloc_link(test);
struct psr_caps caps;
memset(&caps, 0, sizeof(caps));
@@ -482,7 +420,7 @@ static void dm_test_psr_fill_caps_setup_time_max(struct kunit *test)
static void dm_test_psr_fill_caps_link_training_required(struct kunit *test)
{
- struct dc_link *link = alloc_test_link(test);
+ struct dc_link *link = dm_kunit_alloc_link(test);
struct psr_caps caps;
memset(&caps, 0, sizeof(caps));
@@ -495,7 +433,7 @@ static void dm_test_psr_fill_caps_link_training_required(struct kunit *test)
static void dm_test_psr_fill_caps_link_training_not_required(struct kunit *test)
{
- struct dc_link *link = alloc_test_link(test);
+ struct dc_link *link = dm_kunit_alloc_link(test);
struct psr_caps caps;
memset(&caps, 0, sizeof(caps));
@@ -510,7 +448,7 @@ static void dm_test_psr_fill_caps_link_training_not_required(struct kunit *test)
static void dm_test_psr_fill_caps_dpcd_fields(struct kunit *test)
{
- struct dc_link *link = alloc_test_link(test);
+ struct dc_link *link = dm_kunit_alloc_link(test);
struct psr_caps caps;
memset(&caps, 0, sizeof(caps));
@@ -536,7 +474,7 @@ static void dm_test_psr_fill_caps_dpcd_fields(struct kunit *test)
static void dm_test_psr_fill_caps_dpcd_fields_unset(struct kunit *test)
{
- struct dc_link *link = alloc_test_link(test);
+ struct dc_link *link = dm_kunit_alloc_link(test);
struct psr_caps caps;
memset(&caps, 0xFF, sizeof(caps));
@@ -557,7 +495,7 @@ static void dm_test_psr_fill_caps_dpcd_fields_unset(struct kunit *test)
static void dm_test_psr_fill_caps_rate_control_always_zero(struct kunit *test)
{
- struct dc_link *link = alloc_test_link(test);
+ struct dc_link *link = dm_kunit_alloc_link(test);
struct psr_caps caps;
/* Pre-fill caps with non-zero to verify overwrite */
@@ -570,7 +508,7 @@ static void dm_test_psr_fill_caps_rate_control_always_zero(struct kunit *test)
static void dm_test_psr_fill_caps_power_opts_z10_always_set(struct kunit *test)
{
- struct dc_link *link = alloc_test_link(test);
+ struct dc_link *link = dm_kunit_alloc_link(test);
struct psr_caps caps;
memset(&caps, 0, sizeof(caps));
@@ -588,7 +526,7 @@ static void dm_test_psr_fill_caps_power_opts_z10_always_set(struct kunit *test)
static void dm_test_psr_fill_caps_power_opts_smu_opt_set(struct kunit *test)
{
- struct dc_link *link = alloc_test_link(test);
+ struct dc_link *link = dm_kunit_alloc_link(test);
struct psr_caps caps;
unsigned int old_feature_mask;
@@ -647,7 +585,7 @@ static void dm_test_psr_set_event_psr_not_enabled(struct kunit *test)
*/
static void dm_test_psr_set_event_get_event_fails(struct kunit *test)
{
- struct amdgpu_display_manager *dm = alloc_test_dm(test);
+ struct amdgpu_display_manager *dm = dm_kunit_alloc_dm(test);
struct dc_stream_state *stream = alloc_test_psr_stream(test);
dm->power_module = NULL;
@@ -661,7 +599,7 @@ static void dm_test_psr_set_event_get_event_fails(struct kunit *test)
*/
static void dm_test_psr_set_event_already_set(struct kunit *test)
{
- struct amdgpu_display_manager *dm = alloc_test_dm(test);
+ struct amdgpu_display_manager *dm = dm_kunit_alloc_dm(test);
struct dc_stream_state *stream = alloc_test_psr_stream(test);
struct psr_caps caps = {0};
struct core_power *core_power;
@@ -682,7 +620,7 @@ static void dm_test_psr_set_event_already_set(struct kunit *test)
*/
static void dm_test_psr_set_event_updates_event(struct kunit *test)
{
- struct amdgpu_display_manager *dm = alloc_test_dm(test);
+ struct amdgpu_display_manager *dm = dm_kunit_alloc_dm(test);
struct dc_stream_state *stream = alloc_test_psr_stream(test);
struct psr_caps caps = {0};
struct core_power *core_power;
@@ -706,7 +644,7 @@ static void dm_test_psr_set_event_updates_event(struct kunit *test)
*/
static void dm_test_psr_is_active_allowed_no_streams(struct kunit *test)
{
- struct amdgpu_display_manager *dm = alloc_test_dm(test);
+ struct amdgpu_display_manager *dm = dm_kunit_alloc_dm(test);
KUNIT_EXPECT_FALSE(test, amdgpu_dm_psr_is_active_allowed(dm));
}
@@ -717,10 +655,10 @@ static void dm_test_psr_is_active_allowed_no_streams(struct kunit *test)
*/
static void dm_test_psr_is_active_allowed_null_link(struct kunit *test)
{
- struct amdgpu_display_manager *dm = alloc_test_dm(test);
+ struct amdgpu_display_manager *dm = dm_kunit_alloc_dm(test);
struct dc_state *state = dm->dc->current_state;
- add_test_stream(test, state, 0, NULL);
+ dm_kunit_add_stream_to_state(test, state, 0, NULL);
KUNIT_EXPECT_FALSE(test, amdgpu_dm_psr_is_active_allowed(dm));
}
@@ -732,11 +670,11 @@ static void dm_test_psr_is_active_allowed_null_link(struct kunit *test)
*/
static void dm_test_psr_is_active_allowed_requires_enabled_and_allowed(struct kunit *test)
{
- struct amdgpu_display_manager *dm = alloc_test_dm(test);
+ struct amdgpu_display_manager *dm = dm_kunit_alloc_dm(test);
struct dc_state *state = dm->dc->current_state;
- struct dc_link *link = alloc_test_link(test);
+ struct dc_link *link = dm_kunit_alloc_link(test);
- add_test_stream(test, state, 0, link);
+ dm_kunit_add_stream_to_state(test, state, 0, link);
link->psr_settings.psr_allow_active = true;
KUNIT_EXPECT_FALSE(test, amdgpu_dm_psr_is_active_allowed(dm));
@@ -752,17 +690,17 @@ static void dm_test_psr_is_active_allowed_requires_enabled_and_allowed(struct ku
*/
static void dm_test_psr_is_active_allowed_any_stream(struct kunit *test)
{
- struct amdgpu_display_manager *dm = alloc_test_dm(test);
+ struct amdgpu_display_manager *dm = dm_kunit_alloc_dm(test);
struct dc_state *state = dm->dc->current_state;
- struct dc_link *disabled_link = alloc_test_link(test);
- struct dc_link *allowed_link = alloc_test_link(test);
+ struct dc_link *disabled_link = dm_kunit_alloc_link(test);
+ struct dc_link *allowed_link = dm_kunit_alloc_link(test);
disabled_link->psr_settings.psr_allow_active = true;
allowed_link->psr_settings.psr_feature_enabled = true;
allowed_link->psr_settings.psr_allow_active = true;
- add_test_stream(test, state, 0, disabled_link);
- add_test_stream(test, state, 1, allowed_link);
+ dm_kunit_add_stream_to_state(test, state, 0, disabled_link);
+ dm_kunit_add_stream_to_state(test, state, 1, allowed_link);
KUNIT_EXPECT_TRUE(test, amdgpu_dm_psr_is_active_allowed(dm));
}
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_replay_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_replay_test.c
index 68f2f4d70407..6f633b1bbaca 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_replay_test.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_replay_test.c
@@ -12,6 +12,7 @@
#include "amdgpu_mode.h"
#include "amdgpu_dm.h"
#include "amdgpu_dm_replay.h"
+#include "amdgpu_dm_kunit_test_helpers.h"
#include "modules/power/power_helpers.h"
#include "dmub/dmub_srv.h"
@@ -35,8 +36,9 @@ static struct replay_test_ctx *alloc_replay_ctx(struct kunit *test)
ctx = kunit_kzalloc(test, sizeof(*ctx), GFP_KERNEL);
KUNIT_ASSERT_NOT_NULL(test, ctx);
- ctx->link = kunit_kzalloc(test, sizeof(*ctx->link), GFP_KERNEL);
- KUNIT_ASSERT_NOT_NULL(test, ctx->link);
+ ctx->link = dm_kunit_alloc_link_with_ctx(test);
+ ctx->dc_ctx = ctx->link->ctx;
+ ctx->dc = ctx->dc_ctx->dc;
ctx->aconnector = kunit_kzalloc(test, sizeof(*ctx->aconnector), GFP_KERNEL);
KUNIT_ASSERT_NOT_NULL(test, ctx->aconnector);
@@ -44,21 +46,10 @@ static struct replay_test_ctx *alloc_replay_ctx(struct kunit *test)
ctx->dm_state = kunit_kzalloc(test, sizeof(*ctx->dm_state), GFP_KERNEL);
KUNIT_ASSERT_NOT_NULL(test, ctx->dm_state);
- ctx->dc = kunit_kzalloc(test, sizeof(*ctx->dc), GFP_KERNEL);
- KUNIT_ASSERT_NOT_NULL(test, ctx->dc);
-
- ctx->dc_ctx = kunit_kzalloc(test, sizeof(*ctx->dc_ctx), GFP_KERNEL);
- KUNIT_ASSERT_NOT_NULL(test, ctx->dc_ctx);
-
- ctx->stream = kunit_kzalloc(test, sizeof(*ctx->stream), GFP_KERNEL);
- KUNIT_ASSERT_NOT_NULL(test, ctx->stream);
+ ctx->stream = dm_kunit_alloc_stream(test, ctx->link);
/* Wire connector state so to_dm_connector_state() works */
ctx->aconnector->base.state = &ctx->dm_state->base;
- ctx->link->ctx = ctx->dc_ctx;
- ctx->dc_ctx->dc = ctx->dc;
- ctx->dc->ctx = ctx->dc_ctx;
- ctx->stream->link = ctx->link;
return ctx;
}
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_wb_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_wb_test.c
index f9a839c10bf4..c71f61a2438d 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_wb_test.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_wb_test.c
@@ -20,6 +20,7 @@
#include "amdgpu.h"
#include "amdgpu_dm.h"
#include "amdgpu_dm_wb.h"
+#include "amdgpu_dm_kunit_test_helpers.h"
/* Helper functions */
@@ -71,22 +72,7 @@ static struct drm_connector_state *alloc_test_conn_state(struct kunit *test,
return conn_state;
}
-static struct amdgpu_device *alloc_test_adev(struct kunit *test)
-{
- struct drm_device *drm;
- struct device *dev;
-
- dev = drm_kunit_helper_alloc_device(test);
- KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
- drm = __drm_kunit_helper_alloc_drm_device(test, dev,
- sizeof(struct amdgpu_device),
- offsetof(struct amdgpu_device, ddev),
- DRIVER_MODESET | DRIVER_ATOMIC);
- KUNIT_ASSERT_NOT_ERR_OR_NULL(test, drm);
-
- return drm_to_adev(drm);
-}
/* Tests for amdgpu_dm_wb_encoder_atomic_check */
@@ -350,7 +336,7 @@ static void dm_test_wb_connector_init_success(struct kunit *test)
struct dc *dc;
int ret;
- adev = alloc_test_adev(test);
+ adev = dm_kunit_alloc_adev(test);
adev->mode_info.num_crtc = 1;
dm = &adev->dm;
dm->adev = adev;