Commit d7788472 authored by Chris Wilson's avatar Chris Wilson

drm/i915/selftests: Free the backing store between iterations

In the huge pages tests, we may have lots of objects being trapped on
the freelist as we hold the struct_mutex allowing the free worker no
opportunity to recover the backing store. We also have stricter
requirements and the desire for large contiguous pages, further
increasing the allocation pressure. To reduce the chance of running out
of memory, we could either drop the mutex and flush the free worker, or
we could release the backing store directly. We do the latter in this
patch for simplicity.

References: https://bugs.freedesktop.org/show_bug.cgi?id=107254Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Matthew Auld <matthew.william.auld@gmail.com>
Reviewed-by: default avatarMatthew Auld <matthew.william.auld@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180717082334.18774-1-chris@chris-wilson.co.uk
parent eb5f43d4
...@@ -570,6 +570,7 @@ static int igt_mock_ppgtt_misaligned_dma(void *arg) ...@@ -570,6 +570,7 @@ static int igt_mock_ppgtt_misaligned_dma(void *arg)
i915_vma_close(vma); i915_vma_close(vma);
i915_gem_object_unpin_pages(obj); i915_gem_object_unpin_pages(obj);
__i915_gem_object_put_pages(obj, I915_MM_NORMAL);
i915_gem_object_put(obj); i915_gem_object_put(obj);
} }
...@@ -597,6 +598,7 @@ static void close_object_list(struct list_head *objects, ...@@ -597,6 +598,7 @@ static void close_object_list(struct list_head *objects,
list_del(&obj->st_link); list_del(&obj->st_link);
i915_gem_object_unpin_pages(obj); i915_gem_object_unpin_pages(obj);
__i915_gem_object_put_pages(obj, I915_MM_NORMAL);
i915_gem_object_put(obj); i915_gem_object_put(obj);
} }
} }
...@@ -866,6 +868,7 @@ static int igt_mock_ppgtt_64K(void *arg) ...@@ -866,6 +868,7 @@ static int igt_mock_ppgtt_64K(void *arg)
i915_vma_close(vma); i915_vma_close(vma);
i915_gem_object_unpin_pages(obj); i915_gem_object_unpin_pages(obj);
__i915_gem_object_put_pages(obj, I915_MM_NORMAL);
i915_gem_object_put(obj); i915_gem_object_put(obj);
} }
} }
...@@ -1265,6 +1268,7 @@ static int igt_ppgtt_exhaust_huge(void *arg) ...@@ -1265,6 +1268,7 @@ static int igt_ppgtt_exhaust_huge(void *arg)
} }
i915_gem_object_unpin_pages(obj); i915_gem_object_unpin_pages(obj);
__i915_gem_object_put_pages(obj, I915_MM_NORMAL);
i915_gem_object_put(obj); i915_gem_object_put(obj);
} }
} }
...@@ -1326,6 +1330,7 @@ static int igt_ppgtt_internal_huge(void *arg) ...@@ -1326,6 +1330,7 @@ static int igt_ppgtt_internal_huge(void *arg)
} }
i915_gem_object_unpin_pages(obj); i915_gem_object_unpin_pages(obj);
__i915_gem_object_put_pages(obj, I915_MM_NORMAL);
i915_gem_object_put(obj); i915_gem_object_put(obj);
} }
...@@ -1394,6 +1399,7 @@ static int igt_ppgtt_gemfs_huge(void *arg) ...@@ -1394,6 +1399,7 @@ static int igt_ppgtt_gemfs_huge(void *arg)
} }
i915_gem_object_unpin_pages(obj); i915_gem_object_unpin_pages(obj);
__i915_gem_object_put_pages(obj, I915_MM_NORMAL);
i915_gem_object_put(obj); i915_gem_object_put(obj);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment