1. 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
  2. 23 6月, 2011 1 次提交
  3. 14 5月, 2011 2 次提交
  4. 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
  5. 02 3月, 2011 1 次提交
  6. 08 2月, 2011 1 次提交
  7. 12 1月, 2011 3 次提交
  8. 20 12月, 2010 1 次提交
  9. 18 12月, 2010 1 次提交
  10. 06 12月, 2010 1 次提交
  11. 25 11月, 2010 1 次提交
  12. 21 11月, 2010 1 次提交
  13. 04 11月, 2010 1 次提交
  14. 21 9月, 2010 1 次提交
  15. 18 9月, 2010 1 次提交
    • C
      drm/i915: use GMBUS to manage i2c links · f899fc64
      Chris Wilson 提交于
      Use the GMBUS interface rather than direct bit banging to grab the EDID
      over DDC (and for other forms of auxiliary communication with external
      display controllers). The hope is that this method will be much faster
      and more reliable than bit banging for fetching EDIDs from buggy monitors
      or through switches, though we still preserve the bit banging as a
      fallback in case GMBUS fails.
      
      Based on an original patch by Jesse Barnes.
      
      Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      f899fc64
  16. 17 9月, 2010 1 次提交
  17. 22 8月, 2010 2 次提交
  18. 02 8月, 2010 1 次提交
  19. 13 4月, 2010 1 次提交
  20. 23 2月, 2010 2 次提交
  21. 07 1月, 2010 1 次提交
  22. 08 12月, 2009 2 次提交
  23. 02 12月, 2009 1 次提交
  24. 13 11月, 2009 1 次提交
  25. 06 11月, 2009 1 次提交
  26. 24 10月, 2009 1 次提交
  27. 16 10月, 2009 1 次提交
  28. 14 10月, 2009 1 次提交
  29. 18 9月, 2009 1 次提交
  30. 05 9月, 2009 1 次提交
    • J
      drm/i915: add dynamic clock frequency control · 652c393a
      Jesse Barnes 提交于
      There are several sources of unnecessary power consumption on Intel
      graphics systems. The first is the LVDS clock. TFTs don't suffer from
      persistence issues like CRTs, and so we can reduce the LVDS refresh rate
      when the screen is idle. It will be automatically upclocked when
      userspace triggers graphical activity. Beyond that, we can enable memory
      self refresh. This allows the memory to go into a lower power state when
      the graphics are idle. Finally, we can drop some clocks on the gpu
      itself. All of these things can be reenabled between frames when GPU
      activity is triggered, and so there should be no user visible graphical
      changes.
      Signed-off-by: NJesse Barnes <jesse.barnes@intel.com>
      Signed-off-by: NMatthew Garrett <mjg@redhat.com>
      Signed-off-by: NEric Anholt <eric@anholt.net>
      652c393a
  31. 06 8月, 2009 1 次提交
  32. 11 7月, 2009 1 次提交
  33. 19 6月, 2009 1 次提交