[PATCH 07/34] drm/amd/display: Add amdgpu_dm_crtc_late_register test
Tom Chung <[email protected]> Wed, 5 Aug 2026 14:36:19 +0800
| Newsgroups | org.freedesktop.lists.amd-gfx |
|---|---|
| Message-ID | <[email protected]> |
From: Bhawanpreet Lakha <[email protected]> why: amdgpu_dm_crtc_late_register wires up the CRTC debugfs entries during registration but had no coverage, leaving its single path untested. how: Expose amdgpu_dm_crtc_late_register for KUnit via STATIC_IFN_KUNIT and EXPORT_IF_KUNIT (guarded by CONFIG_DEBUG_FS) and declare it in the KUnit header block. Add dm_test_crtc_late_register_inits_debugfs, which gives the CRTC a real debugfs parent, calls the callback, verifies it returns 0, and tears down the debugfs directory. Reviewed-by: Alex Hung <[email protected]> Signed-off-by: Bhawanpreet Lakha <[email protected]> Signed-off-by: Tom Chung <[email protected]> --- .../amd/display/amdgpu_dm/amdgpu_dm_crtc.c | 3 +- .../amd/display/amdgpu_dm/amdgpu_dm_crtc.h | 3 ++ .../amdgpu_dm/tests/amdgpu_dm_crtc_test.c | 32 +++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c index 470abe9cc8f1..abe0769ed502 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c @@ -488,12 +488,13 @@ STATIC_IFN_KUNIT void amdgpu_dm_crtc_reset_state(struct drm_crtc *crtc) EXPORT_IF_KUNIT(amdgpu_dm_crtc_reset_state); #ifdef CONFIG_DEBUG_FS -static int amdgpu_dm_crtc_late_register(struct drm_crtc *crtc) +STATIC_IFN_KUNIT int amdgpu_dm_crtc_late_register(struct drm_crtc *crtc) { crtc_debugfs_init(crtc); return 0; } +EXPORT_IF_KUNIT(amdgpu_dm_crtc_late_register); #endif #ifdef AMD_PRIVATE_COLOR diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.h index 06bb22d4c3b7..a2b105a496e0 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.h +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.h @@ -56,6 +56,9 @@ void amdgpu_dm_crtc_update_crtc_active_planes(struct drm_crtc *crtc, struct drm_crtc_state *new_crtc_state); void amdgpu_dm_crtc_vblank_control_worker(struct work_struct *work); void amdgpu_dm_idle_worker(struct work_struct *work); +#ifdef CONFIG_DEBUG_FS +int amdgpu_dm_crtc_late_register(struct drm_crtc *crtc); +#endif #endif bool amdgpu_dm_crtc_vrr_active(const struct dm_crtc_state *dm_state); 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 430765dd87a3..7abd85be3019 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 @@ -10,6 +10,7 @@ #include <drm/drm_connector.h> #include <drm/drm_kunit_helpers.h> #include <drm/drm_vblank.h> +#include <linux/debugfs.h> #include "dc.h" #include "inc/core_types.h" @@ -1990,6 +1991,33 @@ static void dm_test_crtc_disable_vblank_queues_work(struct kunit *test) KUNIT_EXPECT_EQ(test, adev->dm.active_vblank_irq_count, 1); } +#ifdef CONFIG_DEBUG_FS +/** + * dm_test_crtc_late_register_inits_debugfs - Test late_register succeeds + * @test: The KUnit test context + * + * amdgpu_dm_crtc_late_register populates the CRTC's debugfs entries via + * crtc_debugfs_init and must return 0. Provide a debugfs parent so the + * helper attaches its files there, then tear it down. + */ +static void dm_test_crtc_late_register_inits_debugfs(struct kunit *test) +{ + struct drm_crtc *crtc; + int ret; + + crtc = kunit_kzalloc(test, sizeof(*crtc), GFP_KERNEL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc); + + crtc->debugfs_entry = debugfs_create_dir("dm_test_crtc", NULL); + + ret = amdgpu_dm_crtc_late_register(crtc); + + KUNIT_EXPECT_EQ(test, ret, 0); + + debugfs_remove_recursive(crtc->debugfs_entry); +} +#endif + static struct kunit_case amdgpu_dm_crtc_tests[] = { /* amdgpu_dm_crtc_modeset_required */ KUNIT_CASE(dm_test_crtc_modeset_required_active_mode_changed), @@ -2071,6 +2099,10 @@ static struct kunit_case amdgpu_dm_crtc_tests[] = { KUNIT_CASE(dm_test_crtc_disable_vblank_no_irq_installed), KUNIT_CASE(dm_test_crtc_disable_vblank_vrr), KUNIT_CASE(dm_test_crtc_disable_vblank_queues_work), +#ifdef CONFIG_DEBUG_FS + /* amdgpu_dm_crtc_late_register */ + KUNIT_CASE(dm_test_crtc_late_register_inits_debugfs), +#endif {} }; -- 2.43.0