[PATCH 09/34] drm: kselftest for drm_mm_insert_node()

Joonas Lahtinen joonas.lahtinen at linux.intel.com
Wed Dec 14 12:26:36 UTC 2016


On ma, 2016-12-12 at 11:53 +0000, Chris Wilson wrote:
> Exercise drm_mm_insert_node(), check that we can't overfill a range and
> that the lists are correct after reserving/removing.
> 
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

<SNIP>

> +static int __igt_insert(int count, u64 size)
> +{

<SNIP>

> +	for (n = 0; n < count; n++) {
> +		int err;
> +
> +		node = &nodes[n];
> +		err = drm_mm_insert_node(&mm, node, size, 0,
> +					 DRM_MM_SEARCH_DEFAULT);
> +		if (err) {
> +			pr_err("insert failed, step %d, start %llu\n",
> +			       n, nodes[n].start);
> +			ret = err;
> +			goto out;
> +		}
> +
> +		if (!drm_mm_node_allocated(node)) {
> +			pr_err("inserted node not allocated! step %d, start %llu\n",
> +			       n, node->start);
> +			goto out;
> +		}
> +	}
> +
> +	/* Repeated use should then fail */
> +	if (1) {

Why if (1)? What are you not telling me.

<SNIP>

> +		if (1) {

Ditto.

> +			struct drm_mm_node tmp;
> +
> +			memset(&tmp, 0, sizeof(tmp));
> +			if (!drm_mm_insert_node(&mm, &tmp, size, 0,
> +						DRM_MM_SEARCH_DEFAULT)) {
> +				drm_mm_remove_node(&tmp);
> +				pr_err("impossible insert succeeded, start %llu\n",
> +				       tmp.start);
> +				goto out;
> +			}
> +		}
> +

Second instance of the code below, could be helper?

> +		m = 0;
> +		drm_mm_for_each_node(node, &mm) {
> +			if (node->start != m * size) {
> +				pr_err("node %d out of order, expected start %llx, found %llx\n",
> +				       m, m * size, node->start);
> +				goto out;
> +			}
> +
> +			if (node->size != size) {
> +				pr_err("node %d has wrong size, expected size %llx, found %llx\n",
> +				       m, size, node->size);
> +				goto out;
> +			}
> +
> +			if (node->hole_follows) {
> +				pr_err("node %d is followed by a hole!\n", m);
> +				goto out;
> +			}
> +
> +			m++;
> +		}
> +	}
> +

I still do not have a solid opinion what is a decent amount of
iterations to do at each place.

With the helper isolated;

Reviewed-by: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>

Regards, Joonas
-- 
Joonas Lahtinen
Open Source Technology Center
Intel Corporation


More information about the dri-devel mailing list