summaryrefslogtreecommitdiff
path: root/benchmarks
diff options
context:
space:
mode:
authorTvrtko Ursulin <tvrtko.ursulin@intel.com>2020-03-06 14:38:50 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2020-03-06 17:44:42 +0000
commitf06f965f44c5228a30b8d773727b18d381b79273 (patch)
treee4c6c2b64ab22512c0f4c43851da8527176d4811 /benchmarks
parent970677bbfc3dea56b827b56f36c3d9cb446edeeb (diff)
gem_wsim: Mark contexts as non-persistent
We want to mark workload contexts as non-persistent if possible so that we do not have to worry about leaving long (or infinite!) batches running post exit. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'benchmarks')
-rw-r--r--benchmarks/gem_wsim.c28
1 files changed, 23 insertions, 5 deletions
diff --git a/benchmarks/gem_wsim.c b/benchmarks/gem_wsim.c
index c196b253..81f47b86 100644
--- a/benchmarks/gem_wsim.c
+++ b/benchmarks/gem_wsim.c
@@ -1431,7 +1431,7 @@ alloc_step_batch(struct workload *wrk, struct w_step *w, unsigned int flags)
#endif
}
-static void __ctx_set_prio(uint32_t ctx_id, unsigned int prio)
+static bool set_priority(uint32_t ctx_id, int prio)
{
struct drm_i915_gem_context_param param = {
.ctx_id = ctx_id,
@@ -1439,8 +1439,26 @@ static void __ctx_set_prio(uint32_t ctx_id, unsigned int prio)
.value = prio,
};
- if (prio)
- gem_context_set_param(fd, &param);
+ return __gem_context_set_param(fd, &param) == 0;
+}
+
+static bool set_persistence(uint32_t ctx_id, bool state)
+{
+ struct drm_i915_gem_context_param param = {
+ .ctx_id = ctx_id,
+ .param = I915_CONTEXT_PARAM_PERSISTENCE,
+ .value = state,
+ };
+
+ return __gem_context_set_param(fd, &param) == 0;
+}
+
+static void __configure_context(uint32_t ctx_id, unsigned int prio)
+{
+ set_priority(ctx_id, prio);
+
+ /* Mark as non-persistent if supported. */
+ set_persistence(ctx_id, false);
}
static int __vm_destroy(int i915, uint32_t vm_id)
@@ -1743,7 +1761,7 @@ prepare_workload(unsigned int id, struct workload *wrk, unsigned int flags)
ctx_vcs ^= 1;
}
- __ctx_set_prio(ctx_id, wrk->prio);
+ __configure_context(ctx_id, wrk->prio);
/*
* Do we need a separate context to satisfy this workloads which
@@ -1772,7 +1790,7 @@ prepare_workload(unsigned int id, struct workload *wrk, unsigned int flags)
ctx_id = args.ctx_id;
wrk->ctx_list[i + 1].id = args.ctx_id;
- __ctx_set_prio(ctx_id, wrk->prio);
+ __configure_context(ctx_id, wrk->prio);
}
if (ctx->engine_map) {