From 2fc64acf8a4465d5eab3d6cfec9b3c1b5df30d73 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Wed, 6 Dec 2017 23:03:44 +0000 Subject: 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 Cc: Tvrtko Ursulin Reviewed-by: Tvrtko Ursulin --- tests/perf_pmu.c | 15 +++++++++++---- tests/pm_rc6_residency.c | 15 +++++++++++---- 2 files changed, 22 insertions(+), 8 deletions(-) (limited to 'tests') 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 -- cgit v1.2.3