diff options
author | Chris Wilson | 2017-10-09 10:43:58 +0200 |
---|---|---|
committer | Chris Wilson | 2017-10-09 18:07:29 +0200 |
commit | f34a93bbb33d988df36bb99f791f0bf8a7017041 (patch) | |
tree | 9f91c286060d493e1725d4fb0e40c1562f953a54 /drivers/gpu/drm/i915 | |
parent | drm/i915: Track user GTT faulting per-vma (diff) | |
download | kernel-qcow2-linux-f34a93bbb33d988df36bb99f791f0bf8a7017041.tar.gz kernel-qcow2-linux-f34a93bbb33d988df36bb99f791f0bf8a7017041.tar.xz kernel-qcow2-linux-f34a93bbb33d988df36bb99f791f0bf8a7017041.zip |
drm/i915: Check PIN_NONFAULT overlaps in evict_for_node
If the caller says that he doesn't want to evict any other faulting
vma, honour that flag. The logic was used in evict_something, but not
the more specific evict_for_node, now being used as a preliminary probe
since commit 606fec956c0e ("drm/i915: Prefer random replacement before
eviction search").
Fixes: 606fec956c0e ("drm/i915: Prefer random replacement before eviction search")
Fixes: 821188778b9b ("drm/i915: Choose not to evict faultable objects from the GGTT")
References: https://bugs.freedesktop.org/show_bug.cgi?id=102490
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171009084401.29090-4-chris@chris-wilson.co.uk
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Diffstat (limited to 'drivers/gpu/drm/i915')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_evict.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_evict.c b/drivers/gpu/drm/i915/i915_gem_evict.c index 933ee8ecfa54..a5a5b7e6daae 100644 --- a/drivers/gpu/drm/i915/i915_gem_evict.c +++ b/drivers/gpu/drm/i915/i915_gem_evict.c @@ -315,6 +315,11 @@ int i915_gem_evict_for_node(struct i915_address_space *vm, break; } + if (flags & PIN_NONFAULT && i915_vma_has_userfault(vma)) { + ret = -ENOSPC; + break; + } + /* Overlap of objects in the same batch? */ if (i915_vma_is_pinned(vma)) { ret = -ENOSPC; |