From: Bhawanpreet Lakha <[email protected]> Add a KUnit test for add_fs_modes() confirming that a generated mode with illegal timing is skipped rather than added.
Assisted-by: Copilot:Claude-Opus-4.8 Reviewed-by: Alex Hung <[email protected]> Signed-off-by: Bhawanpreet Lakha <[email protected]> Signed-off-by: Ivan Lipski <[email protected]> --- .../tests/amdgpu_dm_connector_test.c | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c index 988f0885679aa..5e5c372e9e01e 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c @@ -5664,6 +5664,26 @@ static void dm_test_add_fs_modes_out_of_range(struct kunit *test) KUNIT_EXPECT_EQ(test, (int)add_fs_modes(aconnector), 0); } +/** + * dm_test_add_fs_modes_skips_illegal - Test illegal derived timings are dropped + * @test: The KUnit test context + * + * A reference vtotal of 1133 gives a true refresh of ~59.58 that rounds up to + * 60, so the 60000 rate clears the refresh check yet yields a negative vtotal + * delta. The resulting timing is illegal, so add_fs_modes() skips it and + * returns 0. + */ +static void dm_test_add_fs_modes_skips_illegal(struct kunit *test) +{ + struct amdgpu_dm_connector *aconnector = dm_test_fs_setup(test); + + aconnector->freesync_vid_base.vtotal = 1133; + aconnector->min_vfreq = 59; + aconnector->max_vfreq = 60; + + KUNIT_EXPECT_EQ(test, (int)add_fs_modes(aconnector), 0); +} + /** * dm_test_add_freesync_modes_null_edid_noop - Test NULL EDID adds no modes * @test: The KUnit test context @@ -8270,6 +8290,7 @@ static struct kunit_case amdgpu_dm_connector_tests[] = { KUNIT_CASE(dm_test_add_fs_modes_no_preferred_mode), KUNIT_CASE(dm_test_add_fs_modes_generates), KUNIT_CASE(dm_test_add_fs_modes_out_of_range), + KUNIT_CASE(dm_test_add_fs_modes_skips_illegal), /* amdgpu_dm_connector_add_freesync_modes */ KUNIT_CASE(dm_test_add_freesync_modes_null_edid_noop), /* amdgpu_dm_i2c_func */ -- 2.43.0
