1. 14 4月, 2016 12 次提交
  2. 13 4月, 2016 25 次提交
  3. 12 4月, 2016 3 次提交
    • T
      drm/i915: Only grab correct forcewake for the engine with execlists · 3756685a
      Tvrtko Ursulin 提交于
      Rather than blindly waking up all forcewake domains on command
      submission, we can teach each engine what is (or are) the correct
      one to take.
      
      On platforms with multiple forcewake domains like VLV, CHV, SKL
      and BXT, this has the potential of lowering the GPU and CPU
      power use and submission latency.
      
      To implement it we add a function named
      intel_uncore_forcewake_for_reg whose purpose is to query which
      forcewake domains need to be taken to read or write a specific
      register with raw mmio accessors.
      
      These enables the execlists engine setup  to query which
      forcewake domains are relevant per engine on the currently
      running platform.
      
      v2:
        * Kerneldoc.
        * Split from intel_uncore.c macro extraction, WARN_ON,
          no warns on old platforms. (Chris Wilson)
      
      v3:
        * Single domain per engine, mention all registers,
          bi-directional function and a new name, fix handling
          of gen6 and gen7 writes. (Chris Wilson)
      Signed-off-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Link: http://patchwork.freedesktop.org/patch/msgid/1460468251-14069-1-git-send-email-tvrtko.ursulin@linux.intel.com
      3756685a
    • T
      drm/i915: Remove forcewake request registers from the shadowed table · a70ecc16
      Tvrtko Ursulin 提交于
      Chris Wilson points out that we can remove them from the array
      since they are always written to with raw accessors.
      Signed-off-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      a70ecc16
    • T
      drm/i915: Extract knowledge of register forcewake domains · 6863b76c
      Tvrtko Ursulin 提交于
      Knowledge of which register per platform belonds in which
      forcewake domain was embedded in the MMIO accessors themselves.
      
      Extract it into standalone macros so they can be used from
      new code in the following patches.
      
      This causes GCC to compile some of the MMIO accessors slightly
      differently and grows the code a tiny amount. But none of the
      growth is on the fast-path so it does not matter hugely.
      
      Affected sizes before:
      
      00000000000026f0 00000000000001a5 t gen6_read16
      0000000000002390 00000000000001a5 t gen6_read32
      00000000000028a0 00000000000001a5 t gen6_read64
      
      00000000000061d0 000000000000019e t gen8_write16
      0000000000006510 000000000000019d t gen8_write32
      0000000000006370 000000000000019d t gen8_write64
      00000000000021f0 000000000000019d t gen8_write8
      
      Affected sizes after:
      
      0000000000002840 00000000000001aa t gen6_read16
      00000000000024e0 00000000000001a9 t gen6_read32
      00000000000029f0 00000000000001a9 t gen6_read64
      
      0000000000004f20 00000000000001b5 t gen8_write16
      0000000000004ba0 00000000000001b4 t gen8_write32
      00000000000050e0 00000000000001b4 t gen8_write64
      0000000000004d60 00000000000001b4 t gen8_write8
      
      Other MMIO accessors are not affected in size.
      Signed-off-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Acked-by: NChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      6863b76c