tests/pc8: add modeset -stress-no-wait tests

Used to trigger a racing condition between mode setting and
enabling/disabling PC8. The modeset-lpsp-stress-no-wait test should
fail on Kernels without the fix I just wrote today.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
This commit is contained in:
Paulo Zanoni 2013-10-29 11:00:45 -02:00
parent 7a5275f8a5
commit abb3340617

View File

@ -638,7 +638,7 @@ static void basic_subtest(void)
"PC8+ residency didn't stop with screen enabled.\n"); "PC8+ residency didn't stop with screen enabled.\n");
} }
static void modeset_subtest(bool lpsp, bool stress) static void modeset_subtest(bool lpsp, bool stress, bool wait_for_residency)
{ {
int i, rounds; int i, rounds;
enum screen_type type; enum screen_type type;
@ -648,12 +648,14 @@ static void modeset_subtest(bool lpsp, bool stress)
for (i = 0; i < rounds; i++) { for (i = 0; i < rounds; i++) {
disable_all_screens(&ms_data); disable_all_screens(&ms_data);
igt_assert(pc8_plus_enabled()); if (wait_for_residency)
igt_assert(pc8_plus_enabled());
/* If we skip this line it's because the type of screen we want /* If we skip this line it's because the type of screen we want
* is not connected. */ * is not connected. */
igt_require(enable_one_screen_with_type(&ms_data, type)); igt_require(enable_one_screen_with_type(&ms_data, type));
igt_assert(pc8_plus_disabled()); if (wait_for_residency)
igt_assert(pc8_plus_disabled());
} }
} }
@ -799,9 +801,9 @@ int main(int argc, char *argv[])
igt_subtest("drm-resources-equal") igt_subtest("drm-resources-equal")
drm_resources_equal_subtest(); drm_resources_equal_subtest();
igt_subtest("modeset-lpsp") igt_subtest("modeset-lpsp")
modeset_subtest(true, false); modeset_subtest(true, false, true);
igt_subtest("modeset-non-lpsp") igt_subtest("modeset-non-lpsp")
modeset_subtest(false, false); modeset_subtest(false, false, true);
igt_subtest("batch") igt_subtest("batch")
batch_subtest(); batch_subtest();
igt_subtest("i2c") igt_subtest("i2c")
@ -809,7 +811,11 @@ int main(int argc, char *argv[])
igt_subtest("stress-test") igt_subtest("stress-test")
stress_test(); stress_test();
igt_subtest("modeset-non-lpsp-stress") igt_subtest("modeset-non-lpsp-stress")
modeset_subtest(false, true); modeset_subtest(false, true, true);
igt_subtest("modeset-lpsp-stress-no-wait")
modeset_subtest(true, true, false);
igt_subtest("modeset-non-lpsp-stress-no-wait")
modeset_subtest(false, true, false);
igt_subtest("register-compare") { igt_subtest("register-compare") {
igt_require(do_register_compare); igt_require(do_register_compare);
register_compare_subtest(); register_compare_subtest();