On ma, 2016-12-12 at 11:53 +0000, Chris Wilson wrote:
> Reuse drm_mm_insert_node() with a temporary node to exercise
> drm_mm_replace_node(). We use the previous test in order to exercise the
> various lists following replacement.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
<SNIP>
> +static int __igt_insert(int count, u64 size, bool replace)
> Â {
> Â u32 lcg_state = random_seed;
> Â struct drm_mm mm;@@ -264,9 +264,10 @@ static int __igt_insert(int
> count, u64 size)
> Â }
> Â
> Â for (n = 0; n < count; n++) {
> + struct drm_mm_node tmp, *node;
> Â int err;
> Â
> - node = &nodes[n];
> + node = memset(replace ? &tmp : &nodes[n], 0, sizeof(*node));
Just memset in a separate line for readability.
> @@ -281,6 +282,20 @@ static int __igt_insert(int count, u64 size)
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â n, node->start);
> Â Â Â Â Â Â Â Â Â Â Â Â goto out;
> Â Â Â Â Â Â Â Â }
> +
> +Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â if (replace) {
> +Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â drm_mm_replace_node(&tmp,
> &nodes[n]);
> +Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â if
> (!drm_mm_node_allocated(&nodes[n])) {
> +Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> pr_err("replaced new-node not allocated! step %d\n",
> +Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> n);
> +Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â goto out;
> +Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â }
Maybe go the extra mile and make sure the start and size still match
after replacement.
Reviewed-by: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
Regards, Joonas
--
Joonas Lahtinen
Open Source Technology Center
Intel Corporation