[igt-dev] [PATCH i-g-t] i915/gem_ctx_freq: Protect against absent sysfs nodes

Chris Wilson chris at chris-wilson.co.uk
Sat Dec 7 21:04:07 UTC 2019


Not all machines expose the RPS control nodes (e.g. Ironlake and
earlier) as they don't support RPS.

Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
---
 tests/i915/gem_ctx_freq.c | 27 +++++++++++++--------------
 1 file changed, 13 insertions(+), 14 deletions(-)

diff --git a/tests/i915/gem_ctx_freq.c b/tests/i915/gem_ctx_freq.c
index bc093654a..89f3d11ef 100644
--- a/tests/i915/gem_ctx_freq.c
+++ b/tests/i915/gem_ctx_freq.c
@@ -109,10 +109,10 @@ static void set_sysfs_freq(uint32_t min, uint32_t max)
 	igt_sysfs_printf(sysfs, "gt_max_freq_mhz", "%u", max);
 }
 
-static void get_sysfs_freq(uint32_t *min, uint32_t *max)
+static bool get_sysfs_freq(uint32_t *min, uint32_t *max)
 {
-	igt_sysfs_scanf(sysfs, "gt_min_freq_mhz", "%u", min);
-	igt_sysfs_scanf(sysfs, "gt_max_freq_mhz", "%u", max);
+	return (igt_sysfs_scanf(sysfs, "gt_min_freq_mhz", "%u", min) == 1 &&
+		igt_sysfs_scanf(sysfs, "gt_max_freq_mhz", "%u", max) == 1);
 }
 
 static void sysfs_range(int i915)
@@ -131,7 +131,7 @@ static void sysfs_range(int i915)
 	 * constriained sysfs range.
 	 */
 
-	get_sysfs_freq(&sys_min, &sys_max);
+	igt_require(get_sysfs_freq(&sys_min, &sys_max));
 	igt_info("System min freq: %dMHz; max freq: %dMHz\n", sys_min, sys_max);
 
 	triangle_fill(frequencies, N_STEPS, sys_min, sys_max);
@@ -182,18 +182,17 @@ static void restore_sysfs_freq(int sig)
 	}
 }
 
-static void disable_boost(int i915)
+static void disable_boost(void)
 {
-	char *value;
+	char buf[256];
 
-	value = igt_sysfs_get(i915, "gt_RPn_freq_mhz");
-	igt_sysfs_set(i915, "gt_min_freq_mhz", value);
-	igt_sysfs_set(i915, "gt_boost_freq_mhz", value);
-	free(value);
+	if (igt_sysfs_read(sysfs, "gt_RPn_freq_mhz", buf, sizeof(buf)) > 0) {
+		igt_sysfs_set(sysfs, "gt_min_freq_mhz", buf);
+		igt_sysfs_set(sysfs, "gt_boost_freq_mhz", buf);
+	}
 
-	value = igt_sysfs_get(i915, "gt_RP0_freq_mhz");
-	igt_sysfs_set(i915, "gt_max_freq_mhz", value);
-	free(value);
+	if (igt_sysfs_read(sysfs, "gt_RP0_freq_mhz", buf, sizeof(buf)) > 0)
+		igt_sysfs_set(sysfs, "gt_max_freq_mhz", buf);
 }
 
 igt_main
@@ -208,7 +207,7 @@ igt_main
 		igt_assert(sysfs != -1);
 		igt_install_exit_handler(restore_sysfs_freq);
 
-		disable_boost(sysfs);
+		disable_boost();
 	}
 
 	igt_subtest_f("sysfs")
-- 
2.24.0



More information about the igt-dev mailing list