drm/i915/selftests: Count the number of engines used
Don't rely on the RUNTIME_INFO() when we loop over a particular context and only run on a filtered set of engines. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20191127223252.3777141-1-chris@chris-wilson.co.uk
This commit is contained in:
parent
7983990ca9
commit
212d9994d0
|
@ -1343,11 +1343,13 @@ static int igt_ctx_sseu(void *arg)
|
||||||
static int igt_ctx_readonly(void *arg)
|
static int igt_ctx_readonly(void *arg)
|
||||||
{
|
{
|
||||||
struct drm_i915_private *i915 = arg;
|
struct drm_i915_private *i915 = arg;
|
||||||
|
unsigned long idx, ndwords, dw, num_engines;
|
||||||
struct drm_i915_gem_object *obj = NULL;
|
struct drm_i915_gem_object *obj = NULL;
|
||||||
struct i915_request *tq[5] = {};
|
struct i915_request *tq[5] = {};
|
||||||
|
struct i915_gem_engines_iter it;
|
||||||
struct i915_address_space *vm;
|
struct i915_address_space *vm;
|
||||||
struct i915_gem_context *ctx;
|
struct i915_gem_context *ctx;
|
||||||
unsigned long idx, ndwords, dw;
|
struct intel_context *ce;
|
||||||
struct igt_live_test t;
|
struct igt_live_test t;
|
||||||
I915_RND_STATE(prng);
|
I915_RND_STATE(prng);
|
||||||
IGT_TIMEOUT(end_time);
|
IGT_TIMEOUT(end_time);
|
||||||
|
@ -1381,12 +1383,15 @@ static int igt_ctx_readonly(void *arg)
|
||||||
goto out_file;
|
goto out_file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
num_engines = 0;
|
||||||
|
for_each_gem_engine(ce, i915_gem_context_lock_engines(ctx), it)
|
||||||
|
if (intel_engine_can_store_dword(ce->engine))
|
||||||
|
num_engines++;
|
||||||
|
i915_gem_context_unlock_engines(ctx);
|
||||||
|
|
||||||
ndwords = 0;
|
ndwords = 0;
|
||||||
dw = 0;
|
dw = 0;
|
||||||
while (!time_after(jiffies, end_time)) {
|
while (!time_after(jiffies, end_time)) {
|
||||||
struct i915_gem_engines_iter it;
|
|
||||||
struct intel_context *ce;
|
|
||||||
|
|
||||||
for_each_gem_engine(ce,
|
for_each_gem_engine(ce,
|
||||||
i915_gem_context_lock_engines(ctx), it) {
|
i915_gem_context_lock_engines(ctx), it) {
|
||||||
if (!intel_engine_can_store_dword(ce->engine))
|
if (!intel_engine_can_store_dword(ce->engine))
|
||||||
|
@ -1429,8 +1434,8 @@ static int igt_ctx_readonly(void *arg)
|
||||||
}
|
}
|
||||||
i915_gem_context_unlock_engines(ctx);
|
i915_gem_context_unlock_engines(ctx);
|
||||||
}
|
}
|
||||||
pr_info("Submitted %lu dwords (across %u engines)\n",
|
pr_info("Submitted %lu dwords (across %lu engines)\n",
|
||||||
ndwords, RUNTIME_INFO(i915)->num_engines);
|
ndwords, num_engines);
|
||||||
|
|
||||||
dw = 0;
|
dw = 0;
|
||||||
idx = 0;
|
idx = 0;
|
||||||
|
@ -1690,10 +1695,10 @@ static int igt_vm_isolation(void *arg)
|
||||||
{
|
{
|
||||||
struct drm_i915_private *i915 = arg;
|
struct drm_i915_private *i915 = arg;
|
||||||
struct i915_gem_context *ctx_a, *ctx_b;
|
struct i915_gem_context *ctx_a, *ctx_b;
|
||||||
|
unsigned long num_engines, count;
|
||||||
struct intel_engine_cs *engine;
|
struct intel_engine_cs *engine;
|
||||||
struct igt_live_test t;
|
struct igt_live_test t;
|
||||||
I915_RND_STATE(prng);
|
I915_RND_STATE(prng);
|
||||||
unsigned long count;
|
|
||||||
struct file *file;
|
struct file *file;
|
||||||
u64 vm_total;
|
u64 vm_total;
|
||||||
int err;
|
int err;
|
||||||
|
@ -1735,6 +1740,7 @@ static int igt_vm_isolation(void *arg)
|
||||||
vm_total -= I915_GTT_PAGE_SIZE;
|
vm_total -= I915_GTT_PAGE_SIZE;
|
||||||
|
|
||||||
count = 0;
|
count = 0;
|
||||||
|
num_engines = 0;
|
||||||
for_each_uabi_engine(engine, i915) {
|
for_each_uabi_engine(engine, i915) {
|
||||||
IGT_TIMEOUT(end_time);
|
IGT_TIMEOUT(end_time);
|
||||||
unsigned long this = 0;
|
unsigned long this = 0;
|
||||||
|
@ -1772,9 +1778,10 @@ static int igt_vm_isolation(void *arg)
|
||||||
this++;
|
this++;
|
||||||
}
|
}
|
||||||
count += this;
|
count += this;
|
||||||
|
num_engines++;
|
||||||
}
|
}
|
||||||
pr_info("Checked %lu scratch offsets across %d engines\n",
|
pr_info("Checked %lu scratch offsets across %lu engines\n",
|
||||||
count, RUNTIME_INFO(i915)->num_engines);
|
count, num_engines);
|
||||||
|
|
||||||
out_file:
|
out_file:
|
||||||
if (igt_live_test_end(&t))
|
if (igt_live_test_end(&t))
|
||||||
|
|
Loading…
Reference in New Issue