diff options
author | Tvrtko Ursulin <tvrtko.ursulin@intel.com> | 2020-03-06 14:38:50 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2020-03-06 17:44:42 +0000 |
commit | f06f965f44c5228a30b8d773727b18d381b79273 (patch) | |
tree | e4c6c2b64ab22512c0f4c43851da8527176d4811 /benchmarks | |
parent | 970677bbfc3dea56b827b56f36c3d9cb446edeeb (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.c | 28 |
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, ¶m); + return __gem_context_set_param(fd, ¶m) == 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, ¶m) == 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) { |