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