aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h3
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c4
-rw-r--r--drivers/gpu/drm/i915/i915_gem_execbuffer.c2
3 files changed, 5 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 8a6db27dd966..8300c5b38203 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2078,6 +2078,7 @@ void i915_gem_vma_destroy(struct i915_vma *vma);
2078 2078
2079#define PIN_MAPPABLE 0x1 2079#define PIN_MAPPABLE 0x1
2080#define PIN_NONBLOCK 0x2 2080#define PIN_NONBLOCK 0x2
2081#define PIN_GLOBAL 0x4
2081int __must_check i915_gem_object_pin(struct drm_i915_gem_object *obj, 2082int __must_check i915_gem_object_pin(struct drm_i915_gem_object *obj,
2082 struct i915_address_space *vm, 2083 struct i915_address_space *vm,
2083 uint32_t alignment, 2084 uint32_t alignment,
@@ -2286,7 +2287,7 @@ i915_gem_obj_ggtt_pin(struct drm_i915_gem_object *obj,
2286 uint32_t alignment, 2287 uint32_t alignment,
2287 unsigned flags) 2288 unsigned flags)
2288{ 2289{
2289 return i915_gem_object_pin(obj, obj_to_ggtt(obj), alignment, flags); 2290 return i915_gem_object_pin(obj, obj_to_ggtt(obj), alignment, flags | PIN_GLOBAL);
2290} 2291}
2291 2292
2292/* i915_gem_context.c */ 2293/* i915_gem_context.c */
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index aa263e371ebc..b3a15c9fa034 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -3838,7 +3838,7 @@ i915_gem_object_pin(struct drm_i915_gem_object *obj,
3838 struct i915_vma *vma; 3838 struct i915_vma *vma;
3839 int ret; 3839 int ret;
3840 3840
3841 if (WARN_ON(flags & PIN_MAPPABLE && !i915_is_ggtt(vm))) 3841 if (WARN_ON(flags & (PIN_GLOBAL | PIN_MAPPABLE) && !i915_is_ggtt(vm)))
3842 return -EINVAL; 3842 return -EINVAL;
3843 3843
3844 vma = i915_gem_obj_to_vma(obj, vm); 3844 vma = i915_gem_obj_to_vma(obj, vm);
@@ -3872,7 +3872,7 @@ i915_gem_object_pin(struct drm_i915_gem_object *obj,
3872 vma = i915_gem_obj_to_vma(obj, vm); 3872 vma = i915_gem_obj_to_vma(obj, vm);
3873 3873
3874 vma->bind_vma(vma, obj->cache_level, 3874 vma->bind_vma(vma, obj->cache_level,
3875 flags & PIN_MAPPABLE ? GLOBAL_BIND : 0); 3875 flags & PIN_GLOBAL ? GLOBAL_BIND : 0);
3876 3876
3877 i915_gem_obj_to_vma(obj, vm)->pin_count++; 3877 i915_gem_obj_to_vma(obj, vm)->pin_count++;
3878 if (flags & PIN_MAPPABLE) 3878 if (flags & PIN_MAPPABLE)
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index 013bd5ab3913..b35849bbc367 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -558,7 +558,7 @@ i915_gem_execbuffer_reserve_vma(struct i915_vma *vma,
558 flags |= PIN_MAPPABLE; 558 flags |= PIN_MAPPABLE;
559 559
560 if (entry->flags & EXEC_OBJECT_NEEDS_GTT) 560 if (entry->flags & EXEC_OBJECT_NEEDS_GTT)
561 flags |= PIN_MAPPABLE; 561 flags |= PIN_GLOBAL;
562 562
563 ret = i915_gem_object_pin(obj, vma->vm, entry->alignment, flags); 563 ret = i915_gem_object_pin(obj, vma->vm, entry->alignment, flags);
564 if (ret) 564 if (ret)