diff options
-rw-r--r-- | tests/perf_pmu.c | 15 | ||||
-rw-r--r-- | tests/pm_rc6_residency.c | 15 |
2 files changed, 22 insertions, 8 deletions
diff --git a/tests/perf_pmu.c b/tests/perf_pmu.c index ff656822..db769611 100644 --- a/tests/perf_pmu.c +++ b/tests/perf_pmu.c @@ -1000,13 +1000,20 @@ static bool wait_for_rc6(int fd) struct timespec tv = {}; uint64_t start, now; - start = pmu_read_single(fd); + /* First wait for roughly an RC6 Evaluation Interval */ + usleep(160 * 1000); + + /* Then poll for RC6 to start ticking */ + now = pmu_read_single(fd); do { - usleep(50); + start = now; + usleep(5000); now = pmu_read_single(fd); - } while (start == now && !igt_seconds_elapsed(&tv)); + if (now - start > 1e6) + return true; + } while (!igt_seconds_elapsed(&tv)); - return start != now; + return false; } static void diff --git a/tests/pm_rc6_residency.c b/tests/pm_rc6_residency.c index 16f4b142..01eeaa30 100644 --- a/tests/pm_rc6_residency.c +++ b/tests/pm_rc6_residency.c @@ -170,13 +170,20 @@ static bool wait_for_rc6(void) struct timespec tv = {}; unsigned long start, now; - start = read_rc6_residency("rc6"); + /* First wait for roughly an RC6 Evaluation Interval */ + usleep(160 * 1000); + + /* Then poll for RC6 to start ticking */ + now = read_rc6_residency("rc6"); do { - usleep(50); + start = now; + usleep(5000); now = read_rc6_residency("rc6"); - } while (now == start && !igt_seconds_elapsed(&tv)); + if (now - start > 1) + return true; + } while (!igt_seconds_elapsed(&tv)); - return now != start; + return false; } igt_main |