1. 14 12月, 2013 1 次提交
  2. 13 12月, 2013 1 次提交
  3. 11 12月, 2013 2 次提交
    • P
      drm/i915: add some runtime PM get/put calls · c8c8fb33
      Paulo Zanoni 提交于
      These are needed when we cat the debugfs and sysfs files.
      
      V2: - Rebase
      V3: - Rebase
      V4: - Rebase
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NRodrigo Vivi <rodrigo.vivi@gmail.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      c8c8fb33
    • P
      drm/i915: add initial Runtime PM functions · 8a187455
      Paulo Zanoni 提交于
      This patch adds the initial infrastructure to allow a Runtime PM
      implementation that sets the device to its D3 state. The patch just
      adds the necessary callbacks and the initial infrastructure.
      
      We still don't have any platform that actually uses this
      infrastructure, we still don't call get/put in all the places we need
      to, and we don't have any function to save/restore the state of the
      registers. This is not a problem since no platform uses the code added
      by this patch. We have a few people simultaneously working on runtime
      PM, so this initial code could help everybody make their plans.
      
      V2: - Move some functions to intel_pm.c
          - Remove useless pm_runtime_allow() call at init
          - Remove useless pm_runtime_mark_last_busy() call at get
          - Use pm_runtime_get_sync() instead of 2 calls
          - Add a WARN to check if we're really awake
      
      V3: - Rebase.
      
      V4: - Don't need to call pci_{save,restore}_state and
            pci_set_power_sate, since they're already called by the PCI
            layer
          - Remove wrong pm_runtime_enable() call at init_runtime_pm
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NRodrigo Vivi <rodrigo.vivi@gmail.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      8a187455
  4. 09 12月, 2013 1 次提交
    • D
      drm/i915: Remove duplicate intel_uncore_forcewake_reset. · c461562e
      Deepak S 提交于
      Since early sanitize and uncore sanitize are called one after the other,
      I think, we can remove second forcewake reset which was are calling
      twice in both the functions.
      
      Note that this is merge fallout between
      
      commit ef46e0d2
      Author: Daniel Vetter <daniel.vetter@ffwll.ch>
      Date:   Sat Nov 16 16:00:09 2013 +0100
      
          drm/i915: restore the early forcewake cleanup
      
      and
      
      commit 521198a2
      Author: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Date:   Fri Aug 23 16:52:30 2013 +0300
      
          drm/i915: sanitize forcewake registers on reset
      Signed-off-by: NDeepak S <deepak.s@intel.com>
      [danvet: Explain how this came to be.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      c461562e
  5. 04 12月, 2013 2 次提交
    • D
      drm/i915/vlv: Update Wait for FIFO and wait for 20 free entries. v3 · 5135d64b
      Deepak S 提交于
      On VLV, FIFO will be shared by both SW and HW. So, we read the
      free entries through register and update dev_priv variable
      and wait for only 20 entries to be free
      
      From Deepak's follow-up mail explaining why vlv is special:
      
      "On SB, Out of 64 FIFO Entries, 20 Entries will be used by HW and
      remaining 44 will be used by the SW,. I think due to this reason, we
      have a threshold of 20 Entries."
      
      "On VLV, HW and SW can access all 64 fifo entries, I don't think
      having a threshold of 20 Entries is mandatory on VLV. Also, since both
      SW and HW can access all 64 Entries. I think on VLV, we need to update
      the fifo_count before waiting for the FIFO."
      
      v2: Apply mask when we read the number of free FIFO entries (Ville).
      
      v3: Mask applied after reading the register (Deepak).
      Signed-off-by: NDeepak S <deepak.s@intel.com>
      [danvet: Add further explanation from Deepak to commit message.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      5135d64b
    • V
      drm/i915: Add REG_WRITE_FOOTER · 0d965301
      Ville Syrjälä 提交于
      Add a REG_WRITE_FOOTER macro as a counterpart to the REG_WRITE_HEADER.
      The current code has the spin_lock() in the HEADER, but the
      spin_unlock() is open coded, which looks rather confusing on the first
      glance. A bit of additional symmetry might help.
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NMika Kuoppala <mika.kuoppala@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      0d965301
  6. 28 11月, 2013 6 次提交
  7. 19 11月, 2013 1 次提交
  8. 18 11月, 2013 1 次提交
    • D
      drm/i915: restore the early forcewake cleanup · ef46e0d2
      Daniel Vetter 提交于
      Some BIOS just leak the forcewak bits, which we clean up.
      Unfortunately this has been broken in
      
      commit 521198a2
      Author: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Date:   Fri Aug 23 16:52:30 2013 +0300
      
          drm/i915: sanitize forcewake registers on reset
      
      To make this work both for resets and for BIOS takeover just add the
      forcewake clearing call back to intel_uncore_early_sanitize.
      
      We need to clear the forcewake in early sanitize so that the forcewak
      dance in intel_uncore_init (to figure out whether we have mt or legacy
      forcewake on ivb) works. That cleanup fits in nicely with the general
      topic of early_sanitize to prepare for the very first mmio ops.
      
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Reported-by: NJörg Otte <jrg.otte@gmail.com>
      Cc: Jörg Otte <jrg.otte@gmail.com>
      References: https://lkml.org/lkml/2013/11/16/40
      Cc: stable@vger.kernel.org (for 3.12 only)
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      ef46e0d2
  9. 14 11月, 2013 1 次提交
  10. 13 11月, 2013 1 次提交
  11. 12 11月, 2013 1 次提交
    • M
      drm/i915: add i915_get_reset_stats_ioctl · b6359918
      Mika Kuoppala 提交于
      This ioctl returns reset stats for specified context.
      
      The struct returned contains context loss counters.
      
      reset_count:    all resets across all contexts
      batch_active:   active batches lost on resets
      batch_pending:  pending batches lost on resets
      
      v2: get rid of state tracking completely and deliver only counts. Idea
          from Chris Wilson.
      
      v3: fix commit message
      
      v4: default context handled inside i915_gem_context_get_hang_stats
      
      v5: reset_count only for priviledged process
      
      v6: ctx=0 needs CAP_SYS_ADMIN for batch_* counters (Chris Wilson)
      
      v7: context hang stats never returns NULL
      
      v8: rebased on top of reworked context hang stats
          DRM_RENDER_ALLOW for ioctl
      
      v9: use DEFAULT_CONTEXT_ID. Improve comments for ioctl struct members
      Signed-off-by: NMika Kuoppala <mika.kuoppala@intel.com>
      Cc: Ian Romanick <idr@freedesktop.org>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Reviewed-by: NDamien Lespiau <damien.lespiau@intel.com>
      Reviewed-by: NIan Romanick <ian.d.romanick@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      b6359918
  12. 09 11月, 2013 2 次提交
  13. 08 11月, 2013 1 次提交
    • B
      drm/i915/bdw: Handle forcewake for writes on gen8 · ab2aa47e
      Ben Widawsky 提交于
      GEN8 removes the GT FIFO which we've all come to know and love. Instead
      it offers a wider range of optimized registers which always keep a
      shadowed copy, and are fed to the GPU when it wakes.
      
      How this is implemented in hardware is still somewhat of a mystery. As
      far as I can tell, the basic design is as follows:
      
      If the register is not optimized, you must use the old forcewake
      mechanism to bring the GT out of sleep. [1]
      
      If register is in the optimized list the write will signal that the
      GT should begin to come out of whatever sleep state it is in.
      
      While the GT is coming out of sleep, the requested write will be stored
      in an intermediate shadow register.
      
      Do to the fact that the implementation details are not clear, I see
      several risks:
      1. Order is not preserved as it is with GT FIFO. If we issue multiple
      writes to optimized registers, where order matters, we may need to
      serialize it with forcewake.
      2. The optimized registers have only 1 shadowed slot, meaning if we
      issue multiple writes to the same register, and those values need to
      reach the GPU in order, forcewake will be required.
      
      [1] We could implement a SW queue the way the GT FIFO used to work if
      desired.
      
      NOTE: Compile tested only until we get real silicon.
      
      v2:
      - Use a default case to make future platforms also work.
      - Get rid of IS_BROADWELL since that's not yet defined, but we want to
        MMIO as soon as possible.
      
      v3: Apply suggestions from Mika's review:
      - s/optimized/shadowed/
      - invert the logic of the helper so that it does what it says (the
        code itself was correct, just confusing to read).
      
      v4:
      - Squash in lost break.
      
      Signed-off-by: Ben Widawsky <ben@bwidawsk.net> (v1)
      Reviewed-by: NMika Kuoppala <mika.kuoppala@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      ab2aa47e
  14. 10 10月, 2013 7 次提交
  15. 04 10月, 2013 1 次提交
    • C
      drm/i915/vlv: Turn off power gate for BIOS-less system. · 02f4c9e0
      Chon Ming Lee 提交于
      During system boot up, by default, the power gate for render, media and
      display well still power gated.  Normally, BIOS will turn off the power
      gate.  In the BIOS-less system, the driver need to turn off the power
      gate very early during driver load.
      
      v2: Move this to intel_uncore_sanitize to allow it to get call during
      resume path. (Daniel)
      v3: Remove redundant write 0 to DPIO_CTL, and use DPIO_RESET instead of
      just 0x1 (Ville)
          Add turn of power gate for display 2d/render well/media well.
      v4: Remove toggle cmnreset in intel_uncore_sanitize.  Cmnreset should
      toggle after CRI clock source has been selected.  Jesse DPIO reset patch
      which toggle the cmnreset in intel_modeset_init_hw() should handle it.
      (Ville)
      Signed-off-by: NChon Ming Lee <chon.ming.lee@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      02f4c9e0
  16. 01 10月, 2013 1 次提交
    • C
      drm/i915: Delay the release of the forcewake by a jiffie · aec347ab
      Chris Wilson 提交于
      Obtaining the forcwake requires expensive and time consuming
      serialisation. And we often try to obtain the forcewake multiple times
      in very quick succession. We can reduce the overhead of these sequences
      by delaying the forcewake release, and so not hammer the hw quite so
      hard.
      
      I was hoping this would help with the spurious
      [drm:__gen6_gt_force_wake_mt_get] *ERROR* Timed out waiting for forcewake old ack to clear.
      found on Haswell. Alas not.
      
      v2: Fix teardown ordering - unmap the regs after turning off forcewake,
      and make sure we do turn off forcewake - both found by Ville.
      
      v3: As we introduce intel_uncore_fini(), use it to make sure everything
      is disabled before we hand back to the BIOS.
      
      Note: I have no claims for improved performance, stablity or power
      comsumption for this patch. We should not be hitting the registers often
      enough for this to improve benchmarks, but given the nature of our hw it
      is likely to improve long term stability.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      aec347ab
  17. 03 9月, 2013 1 次提交
  18. 25 7月, 2013 5 次提交