[PATCH] drm/i915: If the first pin in map_ggtt doesn't success, try again

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Being unable to find a hole in the mappable aperture, should only be
possible if the entire aperture is *pinned*. Our pins are shortlived,
only taken while binding and constructing batches/mappings, so if we
find no room try again. There are a few semi-permanent pins for rings,
contexts, page tables which take a little longer to be released, but for
our Haswell failure case, should not be the issue.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111530
Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
---
 drivers/gpu/drm/i915/gem/i915_gem_mman.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
index e0bfc021ec6f..3c046803fc61 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_mman.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
@@ -280,7 +280,9 @@ vm_fault_t i915_gem_fault(struct vm_fault *vmf)
 		}
 
 		/* The entire mappable GGTT is pinned? Unexpected! */
-		GEM_BUG_ON(vma == ERR_PTR(-ENOSPC));
+		if (unlikely(vma == ERR_PTR(-ENOSPC)))
+			/* Pins *should* be transient, so try again */
+			vma = ERR_PTR(-EAGAIN);
 	}
 	if (IS_ERR(vma)) {
 		ret = PTR_ERR(vma);
-- 
2.23.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux