1. 11 6月, 2013 1 次提交
  2. 06 5月, 2013 3 次提交
  3. 31 1月, 2013 2 次提交
    • D
      drm/i915: move DP save/restore into i915_ums.c · a65e827d
      Daniel Vetter 提交于
      Note that this slightly changes the order, but we only move it within
      the block of registers that restore encoder state. Specifically LVDS
      is now restored after DP, whereas previously it was done before.
      
      Legacy vga is still restored afterwards, which seems to be the
      important thing (if there's anything important in this restore
      ordering at all).
      Reviewed-by: NImre Deak <imre.deak@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      a65e827d
    • D
      drm/i915: extract ums suspend/resume into i915_ums.c · d8157a36
      Daniel Vetter 提交于
      Similarly to how i915_dma.c is shaping up to be the dungeon hole for
      all things supporting dri1, create a new one to hide all the crazy
      things which are only really useful for ums support. Biggest part is
      the register suspend/resume support.
      
      Unfortunately a lot of it is still intermingled with bits and pieces
      we might still need, so needs more analysis and needs to stay in
      i915_suspend.c for now.
      Reviewed-by: NImre Deak <imre.deak@intel.com>
      
      v2: s/modeset_reg/display_reg/ as suggested by Imre, to avoid
      confusion between the kernel modeset code and display save/restore to
      support ums.
      
      v3: Fixup alphabetical order in the Makefile, spotted by Chris Wilson.
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      d8157a36
  4. 29 1月, 2013 1 次提交
  5. 24 1月, 2013 1 次提交
  6. 22 11月, 2012 1 次提交
  7. 12 11月, 2012 1 次提交
  8. 18 10月, 2012 4 次提交
  9. 03 10月, 2012 2 次提交
  10. 26 6月, 2012 1 次提交
  11. 23 6月, 2012 1 次提交
  12. 20 5月, 2012 1 次提交
  13. 03 5月, 2012 1 次提交
  14. 13 4月, 2012 1 次提交
    • D
      drm/i915: re-init modeset hw state after gpu reset · f817586c
      Daniel Vetter 提交于
      After a gpu reset we need to re-init some of the hw state we only
      initialize when modeset is enabled, like rc6, hw contexts or render/GT
      core clock gating and workaround register settings.
      
      Note that this patch has a small change in the resume code:
      - rc6 on gen6+ is only restored for the modeset case (for more
        consistency with other callsites). This is no problem because recent
        kernels refuse to load drm/i915 without kms on gen6+
      - rc6/emon on ilk is only restored for the modeset case. This is no
        problem because rc6 is disabled by default on ilk, and ums on ilk
        has never really been a supported option outside of horrible rhel
        backports.
      
      v2: Chris Wilson noticed that we not only fail to restore the clock
      gating settings after gpu reset.
      
      v3: Move the call to modeset_init_hw in _reset out of the
      struct_mutext protected area - other callers don't hold it, too.
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-Off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      f817586c
  15. 25 1月, 2012 1 次提交
  16. 10 1月, 2012 2 次提交
  17. 04 11月, 2011 1 次提交
  18. 20 9月, 2011 1 次提交
  19. 16 8月, 2011 1 次提交
  20. 30 7月, 2011 1 次提交
  21. 09 7月, 2011 1 次提交
  22. 30 6月, 2011 1 次提交
    • K
      drm/i915: Hold struct_mutex during i915_save_state/i915_restore_state · d70bed19
      Keith Packard 提交于
      Lots of register access in these functions, some of which requires the
      struct mutex.
      
      These functions now hold the struct mutex across the calls to
      i915_save_display and i915_restore_display, and so the internal mutex
      calls in those functions have been removed. To ensure that no-one else
      was calling them (and hence violating the new required locking
      invarient), those functions have been made static.
      
      gen6_enable_rps locks the struct mutex, and so i915_restore_state
      unlocks the mutex around calls to that function.
      Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NKeith Packard <keithp@keithp.com>
      d70bed19
  23. 29 6月, 2011 1 次提交
    • J
      drm/i915: load a ring frequency scaling table v3 · 23b2f8bb
      Jesse Barnes 提交于
      The ring frequency scaling table tells the PCU to treat certain GPU
      frequencies as if they were a given CPU frequency for purposes of
      scaling the ring frequency.  Normally the PCU will scale the ring
      frequency based on the CPU P-state, but with the table present, it will
      also take the GPU frequency into account.
      
      The main downside of keeping the ring frequency high while the CPU is
      at a low frequency (or asleep altogether) is increased power
      consumption.  But then if you're keeping your GPU busy, you probably
      want the extra performance.
      
      v2:
        - add units to debug table header (from Eric)
        - use tsc_khz as a fallback if the cpufreq driver doesn't give us a freq
          (from Chris)
      v3:
        - fix comments & debug output
        - remove unneeded force wake get/put
      Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
      Tested-by: NEric Anholt <eric@anholt.net>
      Reviewed-by: NEric Anholt <eric@anholt.net>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NKeith Packard <keithp@keithp.com>
      23b2f8bb
  24. 23 6月, 2011 1 次提交
  25. 14 5月, 2011 2 次提交
  26. 24 3月, 2011 2 次提交
    • C
      Revert "drm/i915: Don't save/restore hardware status page address register" · f0c86024
      Chris Wilson 提交于
      This reverts commit a7a75c8f.
      
      There are two different variations on how Intel hardware addresses the
      "Hardware Status Page". One as a location in physical memory and the
      other as an offset into the virtual memory of the GPU, used in more
      recent chipsets. (The HWS itself is a cacheable region of memory which
      the GPU can write to without requiring CPU synchronisation, used for
      updating various details of hardware state, such as the position of
      the GPU head in the ringbuffer, the last breadcrumb seqno, etc).
      
      These two types of addresses were updated in different locations of code
      - one inline with the ringbuffer initialisation, and the other during
      device initialisation. (The HWS page is logically associated with
      the rings, and there is one HWS page per ring.) During resume, only the
      ringbuffers were being re-initialised along with the virtual HWS page,
      leaving the older physical address HWS untouched. This then caused a
      hang on the older gen3/4 (915GM, 945GM, 965GM) the first time we tried
      to synchronise the GPU as the breadcrumbs were never being updated.
      Reported-and-tested-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Reported-by: NJan Niehusmann <jan@gondor.com>
      Reported-and-tested-by: NJustin P. Mattock <justinmattock@gmail.com>
      Reported-and-tested-by: NMichael "brot" Groh <brot@minad.de>
      Cc: Zhenyu Wang <zhenyuw@linux.intel.com>
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Acked-by: NZhenyu Wang <zhenyuw@linux.intel.com>
      f0c86024
    • C
      Revert "drm/i915: Don't save/restore hardware status page address register" · 968b503e
      Chris Wilson 提交于
      This reverts commit a7a75c8f.
      
      There are two different variations on how Intel hardware addresses the
      "Hardware Status Page". One as a location in physical memory and the
      other as an offset into the virtual memory of the GPU, used in more
      recent chipsets. (The HWS itself is a cacheable region of memory which
      the GPU can write to without requiring CPU synchronisation, used for
      updating various details of hardware state, such as the position of
      the GPU head in the ringbuffer, the last breadcrumb seqno, etc).
      
      These two types of addresses were updated in different locations of code
      - one inline with the ringbuffer initialisation, and the other during
      device initialisation. (The HWS page is logically associated with
      the rings, and there is one HWS page per ring.) During resume, only the
      ringbuffers were being re-initialised along with the virtual HWS page,
      leaving the older physical address HWS untouched. This then caused a
      hang on the older gen3/4 (915GM, 945GM, 965GM) the first time we tried
      to synchronise the GPU as the breadcrumbs were never being updated.
      Reported-and-tested-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Reported-by: NJan Niehusmann <jan@gondor.com>
      Reported-by: NJustin P. Mattock <justinmattock@gmail.com>
      Reported-and-tested-by: NMichael "brot" Groh <brot@minad.de>
      Cc: Zhenyu Wang <zhenyuw@linux.intel.com>
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      968b503e
  27. 02 3月, 2011 1 次提交
  28. 08 2月, 2011 1 次提交
  29. 12 1月, 2011 2 次提交