drm/i915/selftests: Constrain mock_gtt tests to fit within RAM
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 10 Jul 2018 08:04:24 +0000 (09:04 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 10 Jul 2018 08:53:41 +0000 (09:53 +0100)
Be pessimistic and presume that we actually allocate every page we
exercise via the mock_gtt (e.g. for gvt). In which case we have to keep
our working set under the available physical memory to prevent oom.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Matthew Auld <matthew.auld@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180710080424.7821-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/selftests/i915_gem_gtt.c

index 600a3bcbd3d6ebf7fa14f2b9f29520a82ddcc675..8e2e269db97e82917b299afbe680fc008b8c90a1 100644 (file)
@@ -1244,6 +1244,7 @@ static int exercise_mock(struct drm_i915_private *i915,
                                     u64 hole_start, u64 hole_end,
                                     unsigned long end_time))
 {
+       const u64 limit = totalram_pages << PAGE_SHIFT;
        struct i915_gem_context *ctx;
        struct i915_hw_ppgtt *ppgtt;
        IGT_TIMEOUT(end_time);
@@ -1256,7 +1257,7 @@ static int exercise_mock(struct drm_i915_private *i915,
        ppgtt = ctx->ppgtt;
        GEM_BUG_ON(!ppgtt);
 
-       err = func(i915, &ppgtt->vm, 0, ppgtt->vm.total, end_time);
+       err = func(i915, &ppgtt->vm, 0, min(ppgtt->vm.total, limit), end_time);
 
        mock_context_close(ctx);
        return err;