| From e99986d3008081d1762081aba8583fa4cad8cd38 Mon Sep 17 00:00:00 2001 |
| From: Ben Widawsky <ben@bwidawsk.net> |
| Date: Wed, 31 Jul 2013 17:00:13 -0700 |
| Subject: drm/i915: Fix up map and fenceable for VMA |
| |
| formerly: "drm/i915: Create VMAs (part 3.5) - map and fenceable |
| tracking" |
| |
| The map_and_fenceable tracking is per object. GTT mapping, and fences |
| only apply to global GTT. As such, object operations which are not |
| performed on the global GTT should not effect mappable or fenceable |
| characteristics. |
| |
| Functionally, this commit could very well be squashed in to a previous |
| patch which updated object operations to take a VM argument. This |
| commit is split out because it's a bit tricky (or at least it was for |
| me). |
| |
| Signed-off-by: Ben Widawsky <ben@bwidawsk.net> |
| [danvet: Drop the bogus hunk in i915_vma_unbind as discussed with |
| Ben.] |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| |
| (cherry picked from commit 5cacaac77cfc1130a2d8bf60addb5c6c9c878214) |
| Signed-off-by: Darren Hart <dvhart@linux.intel.com> |
| --- |
| drivers/gpu/drm/i915/i915_gem.c | 7 +++++-- |
| 1 file changed, 5 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c |
| index 9150804dffc0..103815bedba4 100644 |
| --- a/drivers/gpu/drm/i915/i915_gem.c |
| +++ b/drivers/gpu/drm/i915/i915_gem.c |
| @@ -2629,7 +2629,8 @@ int i915_vma_unbind(struct i915_vma *vma) |
| |
| list_del(&obj->mm_list); |
| /* Avoid an unnecessary call to unbind on rebind. */ |
| - obj->map_and_fenceable = true; |
| + if (i915_is_ggtt(vma->vm)) |
| + obj->map_and_fenceable = true; |
| |
| list_del(&vma->vma_link); |
| drm_mm_remove_node(&vma->node); |
| @@ -3191,7 +3192,9 @@ search_free: |
| i915_is_ggtt(vm) && |
| vma->node.start + obj->base.size <= dev_priv->gtt.mappable_end; |
| |
| - obj->map_and_fenceable = mappable && fenceable; |
| + /* Map and fenceable only changes if the VM is the global GGTT */ |
| + if (i915_is_ggtt(vm)) |
| + obj->map_and_fenceable = mappable && fenceable; |
| |
| trace_i915_vma_bind(vma, map_and_fenceable); |
| i915_gem_verify_gtt(dev); |
| -- |
| 1.8.5.rc3 |
| |