diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index c13e65994654..4ca3dab77fa4 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
@@ -4129,7 +4129,7 @@ i915_gem_object_do_pin(struct drm_i915_gem_object *obj, | |||
4129 | 4129 | ||
4130 | if (i915_vma_misplaced(vma, alignment, flags)) { | 4130 | if (i915_vma_misplaced(vma, alignment, flags)) { |
4131 | unsigned long offset; | 4131 | unsigned long offset; |
4132 | offset = ggtt_view ? i915_gem_obj_ggtt_offset_view(obj, ggtt_view->type) : | 4132 | offset = ggtt_view ? i915_gem_obj_ggtt_offset_view(obj, ggtt_view) : |
4133 | i915_gem_obj_offset(obj, vm); | 4133 | i915_gem_obj_offset(obj, vm); |
4134 | WARN(vma->pin_count, | 4134 | WARN(vma->pin_count, |
4135 | "bo is already pinned in %s with incorrect alignment:" | 4135 | "bo is already pinned in %s with incorrect alignment:" |
@@ -4228,7 +4228,7 @@ i915_gem_object_ggtt_unpin_view(struct drm_i915_gem_object *obj, | |||
4228 | 4228 | ||
4229 | BUG_ON(!vma); | 4229 | BUG_ON(!vma); |
4230 | WARN_ON(vma->pin_count == 0); | 4230 | WARN_ON(vma->pin_count == 0); |
4231 | WARN_ON(!i915_gem_obj_ggtt_bound_view(obj, view->type)); | 4231 | WARN_ON(!i915_gem_obj_ggtt_bound_view(obj, view)); |
4232 | 4232 | ||
4233 | if (--vma->pin_count == 0 && view->type == I915_GGTT_VIEW_NORMAL) | 4233 | if (--vma->pin_count == 0 && view->type == I915_GGTT_VIEW_NORMAL) |
4234 | obj->pin_mappable = false; | 4234 | obj->pin_mappable = false; |
@@ -4550,7 +4550,8 @@ struct i915_vma *i915_gem_obj_to_ggtt_view(struct drm_i915_gem_object *obj, | |||
4550 | return ERR_PTR(-EINVAL); | 4550 | return ERR_PTR(-EINVAL); |
4551 | 4551 | ||
4552 | list_for_each_entry(vma, &obj->vma_list, vma_link) | 4552 | list_for_each_entry(vma, &obj->vma_list, vma_link) |
4553 | if (vma->vm == ggtt && vma->ggtt_view.type == view->type) | 4553 | if (vma->vm == ggtt && |
4554 | i915_ggtt_view_equal(&vma->ggtt_view, view)) | ||
4554 | return vma; | 4555 | return vma; |
4555 | return NULL; | 4556 | return NULL; |
4556 | } | 4557 | } |
@@ -5107,13 +5108,14 @@ i915_gem_obj_offset(struct drm_i915_gem_object *o, | |||
5107 | 5108 | ||
5108 | unsigned long | 5109 | unsigned long |
5109 | i915_gem_obj_ggtt_offset_view(struct drm_i915_gem_object *o, | 5110 | i915_gem_obj_ggtt_offset_view(struct drm_i915_gem_object *o, |
5110 | enum i915_ggtt_view_type view) | 5111 | const struct i915_ggtt_view *view) |
5111 | { | 5112 | { |
5112 | struct i915_address_space *ggtt = i915_obj_to_ggtt(o); | 5113 | struct i915_address_space *ggtt = i915_obj_to_ggtt(o); |
5113 | struct i915_vma *vma; | 5114 | struct i915_vma *vma; |
5114 | 5115 | ||
5115 | list_for_each_entry(vma, &o->vma_list, vma_link) | 5116 | list_for_each_entry(vma, &o->vma_list, vma_link) |
5116 | if (vma->vm == ggtt && vma->ggtt_view.type == view) | 5117 | if (vma->vm == ggtt && |
5118 | i915_ggtt_view_equal(&vma->ggtt_view, view)) | ||
5117 | return vma->node.start; | 5119 | return vma->node.start; |
5118 | 5120 | ||
5119 | WARN(1, "global vma for this object not found.\n"); | 5121 | WARN(1, "global vma for this object not found.\n"); |
@@ -5137,14 +5139,14 @@ bool i915_gem_obj_bound(struct drm_i915_gem_object *o, | |||
5137 | } | 5139 | } |
5138 | 5140 | ||
5139 | bool i915_gem_obj_ggtt_bound_view(struct drm_i915_gem_object *o, | 5141 | bool i915_gem_obj_ggtt_bound_view(struct drm_i915_gem_object *o, |
5140 | enum i915_ggtt_view_type view) | 5142 | const struct i915_ggtt_view *view) |
5141 | { | 5143 | { |
5142 | struct i915_address_space *ggtt = i915_obj_to_ggtt(o); | 5144 | struct i915_address_space *ggtt = i915_obj_to_ggtt(o); |
5143 | struct i915_vma *vma; | 5145 | struct i915_vma *vma; |
5144 | 5146 | ||
5145 | list_for_each_entry(vma, &o->vma_list, vma_link) | 5147 | list_for_each_entry(vma, &o->vma_list, vma_link) |
5146 | if (vma->vm == ggtt && | 5148 | if (vma->vm == ggtt && |
5147 | vma->ggtt_view.type == view && | 5149 | i915_ggtt_view_equal(&vma->ggtt_view, view) && |
5148 | drm_mm_node_allocated(&vma->node)) | 5150 | drm_mm_node_allocated(&vma->node)) |
5149 | return true; | 5151 | return true; |
5150 | 5152 | ||