From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 537F110E4F5 for ; Tue, 8 Nov 2022 19:01:53 +0000 (UTC) From: Ashutosh Dixit To: igt-dev@lists.freedesktop.org Date: Tue, 8 Nov 2022 11:01:28 -0800 Message-Id: <20221108190128.2165396-1-ashutosh.dixit@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [igt-dev] [CI i-g-t] tests/perf_pmu: Try to repro GL #6806 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: CI ONLY, PLEASE DON'T REVIEW Try to repro GL #6806 and see what is really happening there since it could not be reproduced locally. Also see if the https://patchwork.freedesktop.org/series/110574/ will fix the issue. v2: Introduce a 100 ms delay after setting freq Bug: https://gitlab.freedesktop.org/drm/intel/-/issues/6806 Signed-off-by: Ashutosh Dixit --- tests/i915/perf_pmu.c | 20 ++++++++++++++------ tests/intel-ci/fast-feedback.testlist | 1 + 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/tests/i915/perf_pmu.c b/tests/i915/perf_pmu.c index f363db2ba13..60679601991 100644 --- a/tests/i915/perf_pmu.c +++ b/tests/i915/perf_pmu.c @@ -1543,10 +1543,13 @@ test_interrupts_sync(int gem_fd) igt_assert_lte(target, busy); } +/* Wait for GuC SLPC freq changes to take effect */ +#define wait_freq_set() usleep(100000) + static void test_frequency(int gem_fd) { - uint32_t min_freq, max_freq, boost_freq; + uint32_t min_freq, max_freq, boost_freq, min_req, max_req; uint64_t val[2], start[2], slept; double min[2], max[2]; igt_spin_t *spin; @@ -1572,10 +1575,11 @@ test_frequency(int gem_fd) * Set GPU to min frequency and read PMU counters. */ igt_require(igt_sysfs_set_u32(sysfs, "gt_min_freq_mhz", min_freq)); - igt_require(igt_sysfs_get_u32(sysfs, "gt_min_freq_mhz") == min_freq); igt_require(igt_sysfs_set_u32(sysfs, "gt_max_freq_mhz", min_freq)); - igt_require(igt_sysfs_get_u32(sysfs, "gt_max_freq_mhz") == min_freq); igt_require(igt_sysfs_set_u32(sysfs, "gt_boost_freq_mhz", min_freq)); + wait_freq_set(); + igt_require(igt_sysfs_get_u32(sysfs, "gt_min_freq_mhz") == min_freq); + igt_require(igt_sysfs_get_u32(sysfs, "gt_max_freq_mhz") == min_freq); igt_require(igt_sysfs_get_u32(sysfs, "gt_boost_freq_mhz") == min_freq); gem_quiescent_gpu(gem_fd); /* Idle to be sure the change takes effect */ @@ -1587,6 +1591,7 @@ test_frequency(int gem_fd) min[0] = 1e9*(val[0] - start[0]) / slept; min[1] = 1e9*(val[1] - start[1]) / slept; + min_req = igt_sysfs_get_u32(sysfs, "gt_cur_freq_mhz"); igt_spin_free(gem_fd, spin); gem_quiescent_gpu(gem_fd); /* Don't leak busy bo into the next phase */ @@ -1597,11 +1602,11 @@ test_frequency(int gem_fd) * Set GPU to max frequency and read PMU counters. */ igt_require(igt_sysfs_set_u32(sysfs, "gt_max_freq_mhz", max_freq)); - igt_require(igt_sysfs_get_u32(sysfs, "gt_max_freq_mhz") == max_freq); igt_require(igt_sysfs_set_u32(sysfs, "gt_boost_freq_mhz", boost_freq)); - igt_require(igt_sysfs_get_u32(sysfs, "gt_boost_freq_mhz") == boost_freq); - igt_require(igt_sysfs_set_u32(sysfs, "gt_min_freq_mhz", max_freq)); + wait_freq_set(); + igt_require(igt_sysfs_get_u32(sysfs, "gt_max_freq_mhz") == max_freq); + igt_require(igt_sysfs_get_u32(sysfs, "gt_boost_freq_mhz") == boost_freq); igt_require(igt_sysfs_get_u32(sysfs, "gt_min_freq_mhz") == max_freq); gem_quiescent_gpu(gem_fd); @@ -1613,6 +1618,7 @@ test_frequency(int gem_fd) max[0] = 1e9*(val[0] - start[0]) / slept; max[1] = 1e9*(val[1] - start[1]) / slept; + max_req = igt_sysfs_get_u32(sysfs, "gt_cur_freq_mhz"); igt_spin_free(gem_fd, spin); gem_quiescent_gpu(gem_fd); @@ -1621,6 +1627,7 @@ test_frequency(int gem_fd) * Restore min/max. */ igt_sysfs_set_u32(sysfs, "gt_min_freq_mhz", min_freq); + wait_freq_set(); if (igt_sysfs_get_u32(sysfs, "gt_min_freq_mhz") != min_freq) igt_warn("Unable to restore min frequency to saved value [%u MHz], now %u MHz\n", min_freq, igt_sysfs_get_u32(sysfs, "gt_min_freq_mhz")); @@ -1632,6 +1639,7 @@ test_frequency(int gem_fd) min[0], min[1]); igt_info("Max frequency: requested %.1f, actual %.1f\n", max[0], max[1]); + igt_info("Sysfs requested: min %d, max %d\n", min_req, max_req); assert_within_epsilon(min[0], min_freq, tolerance); /* diff --git a/tests/intel-ci/fast-feedback.testlist b/tests/intel-ci/fast-feedback.testlist index f57f8ff3be1..a2bb37fb4ae 100644 --- a/tests/intel-ci/fast-feedback.testlist +++ b/tests/intel-ci/fast-feedback.testlist @@ -128,6 +128,7 @@ igt@i915_pm_backlight@basic-brightness igt@i915_pm_rpm@basic-pci-d3-state igt@i915_pm_rpm@basic-rte igt@i915_pm_rps@basic-api +igt@perf_pmu@frequency igt@prime_self_import@basic-llseek-bad igt@prime_self_import@basic-llseek-size igt@prime_self_import@basic-with_fd_dup -- 2.38.0