drm/i915: Mark unmappable GGTT entries as PIN_HIGH
authorChris Wilson <chris@chris-wilson.co.uk>
Wed, 10 Aug 2016 12:41:45 +0000 (13:41 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Wed, 10 Aug 2016 15:07:51 +0000 (16:07 +0100)
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: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1470832906-13972-1-git-send-email-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/intel_lrc.c
drivers/gpu/drm/i915/intel_ringbuffer.c

index 309c5d9b1c5724d53303b5db1c9c30fe66301456..c7f4b64b16f616215ac0262df43003c7eaef6f00 100644 (file)
@@ -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,
-                                      0, PAGE_SIZE, 0);
+                                      0, PAGE_SIZE, PIN_HIGH);
        if (ret) {
                DRM_DEBUG_DRIVER("pin LRC WA ctx backing obj failed: %d\n",
                                 ret);
index 16b726fe33ebca4ba99c7b4b954089421aff13e9..09f01c641c14827ecb77373786d35a672e486c42 100644 (file)
@@ -2093,7 +2093,7 @@ static int intel_ring_context_pin(struct i915_gem_context *ctx,
 
        if (ce->state) {
                ret = i915_gem_object_ggtt_pin(ce->state, NULL, 0,
-                                              ctx->ggtt_alignment, 0);
+                                              ctx->ggtt_alignment, PIN_HIGH);
                if (ret)
                        goto error;
        }
@@ -2629,7 +2629,8 @@ static void intel_ring_init_semaphores(struct drm_i915_private *dev_priv,
                        i915.semaphores = 0;
                } else {
                        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) {
                                i915_gem_object_put(obj);
                                DRM_ERROR("Failed to pin semaphore bo. Disabling semaphores\n");
This page took 0.027708 seconds and 5 git commands to generate.