drm/i915: Reduce context alignment
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 27 Feb 2017 13:59:13 +0000 (13:59 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 27 Feb 2017 16:01:47 +0000 (16:01 +0000)
No hardware was ever shipped that needed more than 4096 byte alignment
and future hardware will not use this legacy path. So reduce the
alignment to make it easier and quicker to launch workloads.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170227135913.8056-3-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_gem_context.c
drivers/gpu/drm/i915/i915_gem_context.h
drivers/gpu/drm/i915/intel_ringbuffer.c

index 521e6f4705b1c7b0a0524770463be3d9250cd52a..baceca14f5e0c8b775a4ee3fd17514438193f12c 100644 (file)
 
 #define ALL_L3_SLICES(dev) (1 << NUM_L3_SLICES(dev)) - 1
 
-/* This is a HW constraint. The value below is the largest known requirement
- * I've seen in a spec to date, and that was a workaround for a non-shipping
- * part. It should be safe to decrease this, but it's more future proof as is.
- */
-#define GEN6_CONTEXT_ALIGN (64<<10)
-#define GEN7_CONTEXT_ALIGN I915_GTT_MIN_ALIGNMENT
-
-static size_t get_context_alignment(struct drm_i915_private *dev_priv)
-{
-       if (IS_GEN6(dev_priv))
-               return GEN6_CONTEXT_ALIGN;
-
-       return GEN7_CONTEXT_ALIGN;
-}
-
 static int get_context_size(struct drm_i915_private *dev_priv)
 {
        int ret;
@@ -281,8 +266,6 @@ __create_hw_context(struct drm_i915_private *dev_priv,
        list_add_tail(&ctx->link, &dev_priv->context_list);
        ctx->i915 = dev_priv;
 
-       ctx->ggtt_alignment = get_context_alignment(dev_priv);
-
        if (dev_priv->hw_context_size) {
                struct drm_i915_gem_object *obj;
                struct i915_vma *vma;
index 0ac750b90f3d33f5585351fe284da68eaf6cb1e2..81268c9770a6e849729e304de81e3e4413e0cfbe 100644 (file)
@@ -140,8 +140,6 @@ struct i915_gem_context {
         */
        int priority;
 
-       /** ggtt_alignment: alignment restriction for context objects */
-       u32 ggtt_alignment;
        /** ggtt_offset_bias: placement restriction for context objects */
        u32 ggtt_offset_bias;
 
index f62afffef68203feced8fe52810af2b2c1613e9e..4a864f8c9387640bf0ade39e20169fd27d686881 100644 (file)
@@ -1431,7 +1431,8 @@ static int context_pin(struct i915_gem_context *ctx)
                        return ret;
        }
 
-       return i915_vma_pin(vma, 0, ctx->ggtt_alignment, PIN_GLOBAL | PIN_HIGH);
+       return i915_vma_pin(vma, 0, I915_GTT_MIN_ALIGNMENT,
+                           PIN_GLOBAL | PIN_HIGH);
 }
 
 static int intel_ring_context_pin(struct intel_engine_cs *engine,