diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2017-12-06 23:03:44 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2017-12-07 13:20:28 +0000 |
commit | 2fc64acf8a4465d5eab3d6cfec9b3c1b5df30d73 (patch) | |
tree | 2a428dfa412fb68ee36e63c36cbb4b17269f3645 | |
parent | 261ab6bc964081ae62a6084c335033d8a48953fd (diff) |
igt/perf_pmu: Tweak wait_for_rc6, yet again
Still CI remains obstinate that RC6 is not smoothly incrementing during
the sample period. Tweak the wait_for_rc6() to first wait for the
initial Evaluation Interval before polling.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
-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 |