diff --git a/tests/pm_rpm.c b/tests/pm_rpm.c index 323e0729..1e63bc8f 100644 --- a/tests/pm_rpm.c +++ b/tests/pm_rpm.c @@ -1390,6 +1390,23 @@ static void system_suspend_subtest(void) igt_assert(wait_for_suspended()); } +/* Enable a screen, activate DPMS, then do a modeset. At some point our driver + * produced WARNs on this case. */ +static void dpms_mode_unset_subtest(enum screen_type type) +{ + disable_all_screens(&ms_data); + igt_assert(wait_for_suspended()); + + igt_require(enable_one_screen_with_type(&ms_data, type)); + igt_assert(wait_for_active()); + + disable_all_screens_dpms(&ms_data); + igt_assert(wait_for_suspended()); + + disable_all_screens(&ms_data); + igt_assert(wait_for_suspended()); +} + int main(int argc, char *argv[]) { int rounds = 50; @@ -1462,6 +1479,10 @@ int main(int argc, char *argv[]) debugfs_forcewake_user_subtest(); igt_subtest("sysfs-read") sysfs_read_subtest(); + igt_subtest("dpms-mode-unset-lpsp") + dpms_mode_unset_subtest(SCREEN_TYPE_LPSP); + igt_subtest("dpms-mode-unset-non-lpsp") + dpms_mode_unset_subtest(SCREEN_TYPE_NON_LPSP); /* Modeset stress */ igt_subtest("modeset-lpsp-stress")