summaryrefslogtreecommitdiff
path: root/tests/i915/sysfs_heartbeat_interval.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2020-03-17 16:51:54 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2020-03-17 17:59:58 +0000
commitdaebb89ae7906635e4b630febb0ffa1c05b0ee20 (patch)
tree1aafb086f0c5165fa6c0728d6c52c7ee5a41a08e /tests/i915/sysfs_heartbeat_interval.c
parent59aa9e450a90b4dedbe6899fd17c317bbac741c4 (diff)
i915/sysfs_heartbeat_interval: Refactor setting engine attributes
Refactor the set-attribute and reuse it for setting the preempt_timeout_ms. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Acked-by: Andi Shyti <andi.shyti@intel.com>
Diffstat (limited to 'tests/i915/sysfs_heartbeat_interval.c')
-rw-r--r--tests/i915/sysfs_heartbeat_interval.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/tests/i915/sysfs_heartbeat_interval.c b/tests/i915/sysfs_heartbeat_interval.c
index ef131a16..b7f440df 100644
--- a/tests/i915/sysfs_heartbeat_interval.c
+++ b/tests/i915/sysfs_heartbeat_interval.c
@@ -60,14 +60,24 @@ static void enable_hangcheck(int i915, bool state)
close(dir);
}
+static void set_attr(int engine, const char *attr, unsigned int value)
+{
+ unsigned int saved = ~value;
+
+ igt_debug("set %s:%d\n", attr, value);
+ igt_require(igt_sysfs_printf(engine, attr, "%u", value) > 0);
+ igt_sysfs_scanf(engine, attr, "%u", &saved);
+ igt_assert_eq(saved, value);
+}
+
static void set_heartbeat(int engine, unsigned int value)
{
- unsigned int delay = ~value;
+ set_attr(engine, ATTR, value);
+}
- igt_debug("set %s:%d\n", ATTR, value);
- igt_require(igt_sysfs_printf(engine, ATTR, "%u", value) > 0);
- igt_sysfs_scanf(engine, ATTR, "%u", &delay);
- igt_assert_eq(delay, value);
+static void set_preempt_timeout(int engine, unsigned int value)
+{
+ set_attr(engine, "preempt_timeout_ms", value);
}
static void test_idempotent(int i915, int engine)
@@ -184,7 +194,7 @@ static void test_precise(int i915, int engine)
* heartbeat interval, and so confirm it matches our specification.
*/
- igt_require(igt_sysfs_printf(engine, "preempt_timeout_ms", "%u", 1) == 1);
+ set_preempt_timeout(engine, 1);
igt_assert(igt_sysfs_scanf(engine, ATTR, "%u", &saved) == 1);
igt_debug("Initial %s:%u\n", ATTR, saved);
@@ -227,7 +237,7 @@ static void test_nopreempt(int i915, int engine)
*/
/* Test heartbeats with forced preemption disabled */
- igt_require(igt_sysfs_printf(engine, "preempt_timeout_ms", "%u", 0) > 0);
+ set_preempt_timeout(engine, 0);
igt_assert(igt_sysfs_scanf(engine, ATTR, "%u", &saved) == 1);
igt_debug("Initial %s:%u\n", ATTR, saved);
@@ -334,7 +344,7 @@ static void test_mixed(int i915, int engine)
* innocents. We inspect the fence status of each to verify that
* only the hogs are reset.
*/
- igt_require(igt_sysfs_printf(engine, "preempt_timeout_ms", "%u", 1) == 1);
+ set_preempt_timeout(engine, 1);
__test_mixed(i915, engine, 10, 10, 100, 5);
}
@@ -345,7 +355,7 @@ static void test_long(int i915, int engine)
* never do hangchecking. Never is hard to test, so instead we
* run over a day and verify that only the super hogs are reset.
*/
- igt_sysfs_printf(engine, "preempt_timeout_ms", "%u", 0);
+ set_preempt_timeout(engine, 0);
__test_mixed(i915, engine,
60 * 1000, /* 60s */
60 * 1000, /* 60s */