1. 12 Feb, 2014 32 commits
  2. 07 Feb, 2014 2 commits
    • Jeff McGee's avatar
      drm/i915: Update rps interrupt limits · b8a5ff8d
      Jeff McGee authored
      sysfs changes to rps min and max delay were only triggering an update
      of the rps interrupt limits if the active delay required an update.
      This change ensures that interrupt limits are always updated.
      
      v2: correct compile issue missed on rebase
      v3: add igt testcases to signed-off-by section
      
      Testcase: igt/pm_rps/min-max-config-idle
      Testcase: igt/pm_rps/min-max-config-loaded
      Signed-off-by: default avatarJeff McGee <jeff.mcgee@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      b8a5ff8d
    • Jeff McGee's avatar
      drm/i915: Restore rps/rc6 on reset · dd0a1aa1
      Jeff McGee authored
      A check of rps/rc6 state after i915_reset determined that the ring
      MAX_IDLE registers were returned to their hardware defaults and that
      the GEN6_PMIMR register was set to mask all interrupts. This change
      restores those values to their pre-reset states by re-initializing
      rps/rc6 in i915_reset. A full re-initialization was opted for versus
      a targeted set of restore operations for simplicity and maintain-
      ability. Note that the re-initialization is not done for Ironlake,
      due to a past comment that it causes problems.
      
      Also updated the rps initialization sequence to preserve existing
      min/max values in the case of a re-init. We assume the values were
      validated upon being set and do not do further range checking. The
      debugfs interface for changing min/max was updated with range
      checking to ensure this condition (already present in sysfs
      interface).
      
      v2: fix rps logging to output hw_max and hw_min, not rps.max_delay
          and rps.min_delay which don't strictly represent hardware limits.
          Add igt testcase to signed-off-by section.
      
      Testcase: igt/pm_rps/reset
      Signed-off-by: default avatarJeff McGee <jeff.mcgee@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      dd0a1aa1
  3. 06 Feb, 2014 1 commit
    • Chris Wilson's avatar
      drm/i915: Prevent recursion by retiring requests when the ring is full · 1f70999f
      Chris Wilson authored
      As the VM do not track activity of objects and instead use a large
      hammer to forcibly idle and evict all of their associated objects when
      one is released, it is possible for that to cause a recursion when we
      need to wait for free space on a ring and call retire requests.
      (intel_ring_begin -> intel_ring_wait_request ->
      i915_gem_retire_requests_ring -> i915_gem_context_free ->
      i915_gem_evict_vm -> i915_gpu_idle -> intel_ring_begin etc)
      
      In order to remove the requirement for calling retire-requests from
      intel_ring_wait_request, we have to inline a couple of steps from
      retiring requests, notably we have to record the position of the request
      we wait for and use that to update the available ring space.
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      1f70999f
  4. 05 Feb, 2014 5 commits