[Intel-gfx] [PATCH 31/37] drm/i915: Test creation of VMA

Joonas Lahtinen joonas.lahtinen at linux.intel.com
Fri Jan 13 12:28:54 UTC 2017


On ke, 2017-01-11 at 21:09 +0000, Chris Wilson wrote:
> Simple test to exercise creation and lookup of VMA within an object.
> 
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

<SNIP>

> +static int vma_create(struct drm_i915_private *i915,
> +		      struct list_head *objects,
> +		      struct list_head *contexts)

create_vmas?

<SNIP>

> +static int igt_vma_create(void *arg)
> +{
> +	I915_SELFTEST_TIMEOUT(end_time);
> +	LIST_HEAD(objects);
> +	LIST_HEAD(contexts);

Looks aesthetically dispelasing ~ messy, LIST_HEADs could go just
before "int err" as they're not that special?

> +	struct drm_i915_private *i915 = arg;
> +	struct drm_i915_gem_object *obj, *on;
> +	struct i915_gem_context *ctx, *cn;
> +	unsigned long num_obj, num_ctx;
> +	unsigned long no, nc;
> +	int err;
> +
> +	no = 0;
> +	for_each_prime_number(num_obj, 8192) {

max_prime

> +		for (; no < num_obj; no++) {
> +			obj = i915_gem_object_create_internal(i915, PAGE_SIZE);
> +			if (IS_ERR(obj))
> +				goto err;
> +
> +			list_add(&obj->batch_pool_link, &objects);

grumble...

> +		}
> +
> +		list_for_each_entry_safe(ctx, cn, &contexts, link)
> +			mock_context_close(ctx);

I'm unsure why exactly here? On the first round it's empty.

> +
> +		nc = 0;
> +		for_each_prime_number(num_ctx, 8192) {
> +			cond_resched();
> +			if (signal_pending(current)) {
> +				err = -EINTR;
> +				goto err;
> +			}

Again something that could be made into a helper maybe, and then used
in many points? if (igt_exit_point_or_so) return/goto...

> +		if (time_after(jiffies, end_time)) {
> +			pr_warn("%s timed out: after %lu objects\n", __func__, no);
> +			break;
> +		}

Helper too, because it's not important for the testing itself.

<SNIP>

> +int i915_vma_mock_selftests(void)
> +{
> +	static const struct i915_subtest tests[] = {
> +		SUBTEST(igt_vma_create),
> +	};
> +	struct drm_i915_private *i915;
> +	int err;
> +
> +	i915 = mock_gem_device();
> +	if (!i915)
> +		return -ENOMEM;
> +
> +	mutex_lock(&i915->drm.struct_mutex);
> +	err = i915_subtests(tests, i915);
> +	mutex_unlock(&i915->drm.struct_mutex);
> +

I'm unclear if i915 should be released, I feel like it should. If not,
consider renaming mock_gem_device into getterish (but not gibberish).

> +	return err;
> +}
> +
-- 
Joonas Lahtinen
Open Source Technology Center
Intel Corporation


More information about the Intel-gfx mailing list