Skip to content

Commit

Permalink
drm/i915: Always pin contexts into the high GGTT
Browse files Browse the repository at this point in the history
Now that we have fast top-down insertion into the drm_mm, we can use it
for frequent runtime operations like insertion of the context object,
whereas before we limited it to the one-off insertion of the pinned
kernel context. Keeping the active context objects out of the mappable
region of the global GTT (except under memory pressure) improves our
ability to allocate mappable aperture region without triggering a GPU
stall.

Signed-off-by: Chris Wilson <[email protected]>
Cc: Joonas Lahtinen <[email protected]>
Link: http://patchwork.freedesktop.org/patch/msgid/[email protected]
Reviewed-by: Joonas Lahtinen <[email protected]>
Reviewed-by: Mika Kuoppala <[email protected]>
  • Loading branch information
ickle committed Feb 10, 2017
1 parent 370a81f commit 72b72ae
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 12 deletions.
4 changes: 1 addition & 3 deletions drivers/gpu/drm/i915/intel_lrc.c
Original file line number Diff line number Diff line change
Expand Up @@ -773,11 +773,9 @@ static int execlists_context_pin(struct intel_engine_cs *engine,
}
GEM_BUG_ON(!ce->state);

flags = PIN_GLOBAL;
flags = PIN_GLOBAL | PIN_HIGH;
if (ctx->ggtt_offset_bias)
flags |= PIN_OFFSET_BIAS | ctx->ggtt_offset_bias;
if (i915_gem_context_is_kernel(ctx))
flags |= PIN_HIGH;

ret = i915_vma_pin(ce->state, 0, GEN8_LR_CONTEXT_ALIGN, flags);
if (ret)
Expand Down
12 changes: 3 additions & 9 deletions drivers/gpu/drm/i915/intel_ringbuffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -2004,7 +2004,7 @@ intel_ring_free(struct intel_ring *ring)
kfree(ring);
}

static int context_pin(struct i915_gem_context *ctx, unsigned int flags)
static int context_pin(struct i915_gem_context *ctx)
{
struct i915_vma *vma = ctx->engine[RCS].state;
int ret;
Expand All @@ -2019,7 +2019,7 @@ static int context_pin(struct i915_gem_context *ctx, unsigned int flags)
return ret;
}

return i915_vma_pin(vma, 0, ctx->ggtt_alignment, PIN_GLOBAL | flags);
return i915_vma_pin(vma, 0, ctx->ggtt_alignment, PIN_GLOBAL | PIN_HIGH);
}

static int intel_ring_context_pin(struct intel_engine_cs *engine,
Expand All @@ -2034,13 +2034,7 @@ static int intel_ring_context_pin(struct intel_engine_cs *engine,
return 0;

if (ce->state) {
unsigned int flags;

flags = 0;
if (i915_gem_context_is_kernel(ctx))
flags = PIN_HIGH;

ret = context_pin(ctx, flags);
ret = context_pin(ctx);
if (ret)
goto error;
}
Expand Down

0 comments on commit 72b72ae

Please sign in to comment.