Commit de895082 authored by Chris Wilson's avatar Chris Wilson

drm/i915: Remove highly confusing i915_gem_obj_ggtt_pin()

Since i915_gem_obj_ggtt_pin() is an idiom breaking curry function for
i915_gem_object_ggtt_pin(), spare us the confusion and remove it.
Removing it now simplifies later patches to change the i915_vma_pin()
(and friends) interface.

v2: Add a redundant GEM_BUG_ON(!view) to
i915_gem_obj_lookup_or_create_ggtt_vma()
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1470324762-2545-18-git-send-email-chris@chris-wilson.co.uk
parent 305bc234
...@@ -3289,15 +3289,6 @@ static inline bool i915_gem_obj_ggtt_bound(struct drm_i915_gem_object *obj) ...@@ -3289,15 +3289,6 @@ static inline bool i915_gem_obj_ggtt_bound(struct drm_i915_gem_object *obj)
unsigned long unsigned long
i915_gem_obj_ggtt_size(struct drm_i915_gem_object *obj); i915_gem_obj_ggtt_size(struct drm_i915_gem_object *obj);
static inline int __must_check
i915_gem_obj_ggtt_pin(struct drm_i915_gem_object *obj,
uint32_t alignment,
unsigned flags)
{
return i915_gem_object_ggtt_pin(obj, &i915_ggtt_view_normal,
0, alignment, flags);
}
void i915_gem_object_ggtt_unpin_view(struct drm_i915_gem_object *obj, void i915_gem_object_ggtt_unpin_view(struct drm_i915_gem_object *obj,
const struct i915_ggtt_view *view); const struct i915_ggtt_view *view);
static inline void static inline void
......
...@@ -652,7 +652,7 @@ i915_gem_gtt_pread(struct drm_device *dev, ...@@ -652,7 +652,7 @@ i915_gem_gtt_pread(struct drm_device *dev,
uint64_t offset; uint64_t offset;
int ret; int ret;
ret = i915_gem_obj_ggtt_pin(obj, 0, PIN_MAPPABLE); ret = i915_gem_object_ggtt_pin(obj, NULL, 0, 0, PIN_MAPPABLE);
if (ret) { if (ret) {
ret = insert_mappable_node(dev_priv, &node, PAGE_SIZE); ret = insert_mappable_node(dev_priv, &node, PAGE_SIZE);
if (ret) if (ret)
...@@ -949,7 +949,8 @@ i915_gem_gtt_pwrite_fast(struct drm_i915_private *i915, ...@@ -949,7 +949,8 @@ i915_gem_gtt_pwrite_fast(struct drm_i915_private *i915,
if (obj->tiling_mode != I915_TILING_NONE) if (obj->tiling_mode != I915_TILING_NONE)
return -EFAULT; return -EFAULT;
ret = i915_gem_obj_ggtt_pin(obj, 0, PIN_MAPPABLE | PIN_NONBLOCK); ret = i915_gem_object_ggtt_pin(obj, NULL, 0, 0,
PIN_MAPPABLE | PIN_NONBLOCK);
if (ret) { if (ret) {
ret = insert_mappable_node(i915, &node, PAGE_SIZE); ret = insert_mappable_node(i915, &node, PAGE_SIZE);
if (ret) if (ret)
...@@ -3719,7 +3720,7 @@ int __i915_vma_do_pin(struct i915_vma *vma, ...@@ -3719,7 +3720,7 @@ int __i915_vma_do_pin(struct i915_vma *vma,
goto err; goto err;
} }
if ((bound & (I915_VMA_GLOBAL_BIND | I915_VMA_LOCAL_BIND)) == 0) { if ((bound & I915_VMA_BIND_MASK) == 0) {
ret = i915_vma_insert(vma, size, alignment, flags); ret = i915_vma_insert(vma, size, alignment, flags);
if (ret) if (ret)
goto err; goto err;
...@@ -3750,7 +3751,8 @@ i915_gem_object_ggtt_pin(struct drm_i915_gem_object *obj, ...@@ -3750,7 +3751,8 @@ i915_gem_object_ggtt_pin(struct drm_i915_gem_object *obj,
struct i915_vma *vma; struct i915_vma *vma;
int ret; int ret;
BUG_ON(!view); if (!view)
view = &i915_ggtt_view_normal;
vma = i915_gem_obj_lookup_or_create_ggtt_vma(obj, view); vma = i915_gem_obj_lookup_or_create_ggtt_vma(obj, view);
if (IS_ERR(vma)) if (IS_ERR(vma))
...@@ -3782,12 +3784,7 @@ void ...@@ -3782,12 +3784,7 @@ void
i915_gem_object_ggtt_unpin_view(struct drm_i915_gem_object *obj, i915_gem_object_ggtt_unpin_view(struct drm_i915_gem_object *obj,
const struct i915_ggtt_view *view) const struct i915_ggtt_view *view)
{ {
struct i915_vma *vma = i915_gem_obj_to_ggtt_view(obj, view); i915_vma_unpin(i915_gem_obj_to_ggtt_view(obj, view));
WARN_ON(!i915_vma_is_pinned(vma));
WARN_ON(!i915_gem_obj_ggtt_bound_view(obj, view));
__i915_vma_unpin(vma);
} }
int int
......
...@@ -763,9 +763,8 @@ static int do_rcs_switch(struct drm_i915_gem_request *req) ...@@ -763,9 +763,8 @@ static int do_rcs_switch(struct drm_i915_gem_request *req)
return 0; return 0;
/* Trying to pin first makes error handling easier. */ /* Trying to pin first makes error handling easier. */
ret = i915_gem_obj_ggtt_pin(to->engine[RCS].state, ret = i915_gem_object_ggtt_pin(to->engine[RCS].state, NULL, 0,
to->ggtt_alignment, to->ggtt_alignment, 0);
0);
if (ret) if (ret)
return ret; return ret;
......
...@@ -1270,7 +1270,7 @@ i915_gem_execbuffer_parse(struct intel_engine_cs *engine, ...@@ -1270,7 +1270,7 @@ i915_gem_execbuffer_parse(struct intel_engine_cs *engine,
if (ret) if (ret)
goto err; goto err;
ret = i915_gem_obj_ggtt_pin(shadow_batch_obj, 0, 0); ret = i915_gem_object_ggtt_pin(shadow_batch_obj, NULL, 0, 0, 0);
if (ret) if (ret)
goto err; goto err;
...@@ -1650,7 +1650,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data, ...@@ -1650,7 +1650,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
* fitting due to fragmentation. * fitting due to fragmentation.
* So this is actually safe. * So this is actually safe.
*/ */
ret = i915_gem_obj_ggtt_pin(obj, 0, 0); ret = i915_gem_object_ggtt_pin(obj, NULL, 0, 0, 0);
if (ret) if (ret)
goto err; goto err;
......
...@@ -3430,6 +3430,8 @@ i915_gem_obj_lookup_or_create_ggtt_vma(struct drm_i915_gem_object *obj, ...@@ -3430,6 +3430,8 @@ i915_gem_obj_lookup_or_create_ggtt_vma(struct drm_i915_gem_object *obj,
struct i915_ggtt *ggtt = &dev_priv->ggtt; struct i915_ggtt *ggtt = &dev_priv->ggtt;
struct i915_vma *vma = i915_gem_obj_to_ggtt_view(obj, view); struct i915_vma *vma = i915_gem_obj_to_ggtt_view(obj, view);
GEM_BUG_ON(!view);
if (!vma) if (!vma)
vma = __i915_gem_vma_create(obj, &ggtt->base, view); vma = __i915_gem_vma_create(obj, &ggtt->base, view);
......
...@@ -191,7 +191,7 @@ int i915_gem_render_state_init(struct drm_i915_gem_request *req) ...@@ -191,7 +191,7 @@ int i915_gem_render_state_init(struct drm_i915_gem_request *req)
if (IS_ERR(so.obj)) if (IS_ERR(so.obj))
return PTR_ERR(so.obj); return PTR_ERR(so.obj);
ret = i915_gem_obj_ggtt_pin(so.obj, 4096, 0); ret = i915_gem_object_ggtt_pin(so.obj, NULL, 0, 0, 0);
if (ret) if (ret)
goto err_obj; goto err_obj;
......
...@@ -635,7 +635,7 @@ gem_allocate_guc_obj(struct drm_i915_private *dev_priv, u32 size) ...@@ -635,7 +635,7 @@ gem_allocate_guc_obj(struct drm_i915_private *dev_priv, u32 size)
return NULL; return NULL;
} }
if (i915_gem_obj_ggtt_pin(obj, PAGE_SIZE, if (i915_gem_object_ggtt_pin(obj, NULL, 0, PAGE_SIZE,
PIN_OFFSET_BIAS | GUC_WOPCM_TOP)) { PIN_OFFSET_BIAS | GUC_WOPCM_TOP)) {
i915_gem_object_put(obj); i915_gem_object_put(obj);
return NULL; return NULL;
......
...@@ -323,7 +323,7 @@ static int guc_ucode_xfer(struct drm_i915_private *dev_priv) ...@@ -323,7 +323,7 @@ static int guc_ucode_xfer(struct drm_i915_private *dev_priv)
return ret; return ret;
} }
ret = i915_gem_obj_ggtt_pin(guc_fw->guc_fw_obj, 0, 0); ret = i915_gem_object_ggtt_pin(guc_fw->guc_fw_obj, NULL, 0, 0, 0);
if (ret) { if (ret) {
DRM_DEBUG_DRIVER("pin failed %d\n", ret); DRM_DEBUG_DRIVER("pin failed %d\n", ret);
return ret; return ret;
......
...@@ -799,7 +799,8 @@ static int intel_lr_context_pin(struct i915_gem_context *ctx, ...@@ -799,7 +799,8 @@ static int intel_lr_context_pin(struct i915_gem_context *ctx,
if (ce->pin_count++) if (ce->pin_count++)
return 0; return 0;
ret = i915_gem_obj_ggtt_pin(ce->state, GEN8_LR_CONTEXT_ALIGN, ret = i915_gem_object_ggtt_pin(ce->state, NULL,
0, GEN8_LR_CONTEXT_ALIGN,
PIN_OFFSET_BIAS | GUC_WOPCM_TOP); PIN_OFFSET_BIAS | GUC_WOPCM_TOP);
if (ret) if (ret)
goto err; goto err;
...@@ -1203,7 +1204,8 @@ static int lrc_setup_wa_ctx_obj(struct intel_engine_cs *engine, u32 size) ...@@ -1203,7 +1204,8 @@ static int lrc_setup_wa_ctx_obj(struct intel_engine_cs *engine, u32 size)
return ret; return ret;
} }
ret = i915_gem_obj_ggtt_pin(engine->wa_ctx.obj, PAGE_SIZE, 0); ret = i915_gem_object_ggtt_pin(engine->wa_ctx.obj, NULL,
0, PAGE_SIZE, 0);
if (ret) { if (ret) {
DRM_DEBUG_DRIVER("pin LRC WA ctx backing obj failed: %d\n", DRM_DEBUG_DRIVER("pin LRC WA ctx backing obj failed: %d\n",
ret); ret);
......
...@@ -1401,7 +1401,8 @@ void intel_setup_overlay(struct drm_i915_private *dev_priv) ...@@ -1401,7 +1401,8 @@ void intel_setup_overlay(struct drm_i915_private *dev_priv)
} }
overlay->flip_addr = reg_bo->phys_handle->busaddr; overlay->flip_addr = reg_bo->phys_handle->busaddr;
} else { } else {
ret = i915_gem_obj_ggtt_pin(reg_bo, PAGE_SIZE, PIN_MAPPABLE); ret = i915_gem_object_ggtt_pin(reg_bo, NULL,
0, PAGE_SIZE, PIN_MAPPABLE);
if (ret) { if (ret) {
DRM_ERROR("failed to pin overlay register bo\n"); DRM_ERROR("failed to pin overlay register bo\n");
goto out_free_bo; goto out_free_bo;
......
...@@ -639,7 +639,7 @@ int intel_init_pipe_control(struct intel_engine_cs *engine, int size) ...@@ -639,7 +639,7 @@ int intel_init_pipe_control(struct intel_engine_cs *engine, int size)
goto err; goto err;
} }
ret = i915_gem_obj_ggtt_pin(obj, 4096, PIN_HIGH); ret = i915_gem_object_ggtt_pin(obj, NULL, 0, 4096, PIN_HIGH);
if (ret) if (ret)
goto err_unref; goto err_unref;
...@@ -1896,7 +1896,7 @@ static int init_status_page(struct intel_engine_cs *engine) ...@@ -1896,7 +1896,7 @@ static int init_status_page(struct intel_engine_cs *engine)
* actualy map it). * actualy map it).
*/ */
flags |= PIN_MAPPABLE; flags |= PIN_MAPPABLE;
ret = i915_gem_obj_ggtt_pin(obj, 4096, flags); ret = i915_gem_object_ggtt_pin(obj, NULL, 0, 4096, flags);
if (ret) { if (ret) {
err_unref: err_unref:
i915_gem_object_put(obj); i915_gem_object_put(obj);
...@@ -1943,7 +1943,7 @@ int intel_ring_pin(struct intel_ring *ring) ...@@ -1943,7 +1943,7 @@ int intel_ring_pin(struct intel_ring *ring)
int ret; int ret;
if (HAS_LLC(dev_priv) && !obj->stolen) { if (HAS_LLC(dev_priv) && !obj->stolen) {
ret = i915_gem_obj_ggtt_pin(obj, PAGE_SIZE, flags); ret = i915_gem_object_ggtt_pin(obj, NULL, 0, PAGE_SIZE, flags);
if (ret) if (ret)
return ret; return ret;
...@@ -1957,7 +1957,7 @@ int intel_ring_pin(struct intel_ring *ring) ...@@ -1957,7 +1957,7 @@ int intel_ring_pin(struct intel_ring *ring)
goto err_unpin; goto err_unpin;
} }
} else { } else {
ret = i915_gem_obj_ggtt_pin(obj, PAGE_SIZE, ret = i915_gem_object_ggtt_pin(obj, NULL, 0, PAGE_SIZE,
flags | PIN_MAPPABLE); flags | PIN_MAPPABLE);
if (ret) if (ret)
return ret; return ret;
...@@ -2092,7 +2092,8 @@ static int intel_ring_context_pin(struct i915_gem_context *ctx, ...@@ -2092,7 +2092,8 @@ static int intel_ring_context_pin(struct i915_gem_context *ctx,
return 0; return 0;
if (ce->state) { if (ce->state) {
ret = i915_gem_obj_ggtt_pin(ce->state, ctx->ggtt_alignment, 0); ret = i915_gem_object_ggtt_pin(ce->state, NULL, 0,
ctx->ggtt_alignment, 0);
if (ret) if (ret)
goto error; goto error;
} }
...@@ -2649,7 +2650,7 @@ static void intel_ring_init_semaphores(struct drm_i915_private *dev_priv, ...@@ -2649,7 +2650,7 @@ static void intel_ring_init_semaphores(struct drm_i915_private *dev_priv,
i915.semaphores = 0; i915.semaphores = 0;
} else { } else {
i915_gem_object_set_cache_level(obj, I915_CACHE_LLC); i915_gem_object_set_cache_level(obj, I915_CACHE_LLC);
ret = i915_gem_obj_ggtt_pin(obj, 0, PIN_NONBLOCK); ret = i915_gem_object_ggtt_pin(obj, NULL, 0, 0, 0);
if (ret != 0) { if (ret != 0) {
i915_gem_object_put(obj); i915_gem_object_put(obj);
DRM_ERROR("Failed to pin semaphore bo. Disabling semaphores\n"); DRM_ERROR("Failed to pin semaphore bo. Disabling semaphores\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment