[PATCH] drm/i915: Only discard simple GGTT vma

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

 



Be careful that we do not discard the irregular information used for
remapping the planes, and when discarding preserve the partial offset so
that the existing users can continue to interpret the old vma correctly.

An underlying issue here is that we opting to discard a vma while it is
in the process of being bound, because at the time it is not known
whether it will be bound suitable for our use. If we didn't discard, we
would then try to unbind it even if it were suitable after serialising
with the binder.

Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/2012
Fixes: 9bdcaa5e3a2f ("drm/i915: Discard a misplaced GGTT vma")
Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
Cc: Matthew Auld <matthew.auld@xxxxxxxxx>
---
 drivers/gpu/drm/i915/i915_gem.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 41553e9e57a9..cd5aeeb96ca4 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -938,9 +938,13 @@ discard_ggtt_vma(struct i915_vma *vma, const struct i915_ggtt_view *view)
 {
 	const struct i915_ggtt_view discard = {
 		.type = I915_GGTT_VIEW_PARTIAL,
+		.partial.offset = view->partial.offset,
 	};
 	struct drm_i915_gem_object *obj = vma->obj;
 
+	if (view->type > I915_GGTT_VIEW_PARTIAL)
+		return false;
+
 	spin_lock(&obj->vma.lock);
 	if (i915_vma_compare(vma, vma->vm, &discard)) {
 		struct rb_node *rb, **p;
-- 
2.20.1

_______________________________________________
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