[PATCH 05/34] drm: kselftest for drm_mm_init()

Joonas Lahtinen joonas.lahtinen at linux.intel.com
Tue Dec 13 10:16:20 UTC 2016


On ma, 2016-12-12 at 11:53 +0000, Chris Wilson wrote:
> Simple first test to just exercise initialisation of struct drm_mm.
> 
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

<SNIP>

> +	drm_mm_for_each_hole(hole, &mm, start, end) {
> +		if (start != 0 || end != 4096) {
> +			pr_err("empty mm has incorrect hole, found (%llx, %llx), expect (%llx, %llx)\n",
> +			       start, end,
> +			       0ull, 4096ull);
> +			goto out;
> +		}
> +	}

While in paranoia mode, make sure there is just one hole?

> +
> > +	memset(&tmp, 0, sizeof(tmp));
> > +	tmp.start = 0;
> > +	tmp.size = 4096;
> > +	ret = drm_mm_reserve_node(&mm, &tmp);
> > +	if (ret) {
> > +		pr_err("failed to reserve whole drm_mm\n");
> > +		goto out;
> +	}

Should be no more holes.

drm_mm_for_each_hole() {
	pr_err();
	goto out;
}

> +	drm_mm_remove_node(&tmp);
> +

And it should again have a hole.

<SNIP>

> +static int igt_debug(void *ignored)
> +{
> +	struct drm_mm mm;
> +	struct drm_mm_node nodes[2];
> +	int ret;
> +
> +	drm_mm_init(&mm, 0, 4096);
> +
> +	memset(nodes, 0, sizeof(nodes));
> +	nodes[0].start = 512;
> +	nodes[0].size = 1024;
> +	ret = drm_mm_reserve_node(&mm, &nodes[0]);
> +	if (ret) {
> +		pr_err("failed to reserve node[0] {start=%lld, size=%lld)\n",
> +		       nodes[0].start, nodes[0].size);
> +		return ret;
> +	}
> +
> +	nodes[1].start = 512 - 1024 - 512;

Would be more clear if you used nodes[0].start. This also goes to
negative address which proves my point.

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


More information about the dri-devel mailing list