Commit 737aac24 authored by Chris Wilson's avatar Chris Wilson

drm/i915: Mark unmappable GGTT entries as PIN_HIGH

We allocate a few objects into the GGTT that we never need to access via
the mappable aperture (such as contexts, status pages). We can request
that these are bound high in the VM to increase the amount of mappable
aperture available. However, anything that may be frequently pinned
(such as logical contexts) we want to use the fast search & insert.
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/1470832906-13972-1-git-send-email-chris@chris-wilson.co.uk
parent b5163dbb
...@@ -1182,7 +1182,7 @@ static int lrc_setup_wa_ctx_obj(struct intel_engine_cs *engine, u32 size) ...@@ -1182,7 +1182,7 @@ static int lrc_setup_wa_ctx_obj(struct intel_engine_cs *engine, u32 size)
} }
ret = i915_gem_object_ggtt_pin(engine->wa_ctx.obj, NULL, ret = i915_gem_object_ggtt_pin(engine->wa_ctx.obj, NULL,
0, PAGE_SIZE, 0); 0, PAGE_SIZE, PIN_HIGH);
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);
......
...@@ -2093,7 +2093,7 @@ static int intel_ring_context_pin(struct i915_gem_context *ctx, ...@@ -2093,7 +2093,7 @@ static int intel_ring_context_pin(struct i915_gem_context *ctx,
if (ce->state) { if (ce->state) {
ret = i915_gem_object_ggtt_pin(ce->state, NULL, 0, ret = i915_gem_object_ggtt_pin(ce->state, NULL, 0,
ctx->ggtt_alignment, 0); ctx->ggtt_alignment, PIN_HIGH);
if (ret) if (ret)
goto error; goto error;
} }
...@@ -2629,7 +2629,8 @@ static void intel_ring_init_semaphores(struct drm_i915_private *dev_priv, ...@@ -2629,7 +2629,8 @@ 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_object_ggtt_pin(obj, NULL, 0, 0, 0); ret = i915_gem_object_ggtt_pin(obj, NULL,
0, 0, PIN_HIGH);
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