1. 24 11月, 2016 1 次提交
  2. 23 11月, 2016 1 次提交
  3. 17 11月, 2016 2 次提交
  4. 16 11月, 2016 1 次提交
  5. 14 11月, 2016 7 次提交
  6. 11 11月, 2016 1 次提交
  7. 10 11月, 2016 10 次提交
  8. 09 11月, 2016 8 次提交
  9. 08 11月, 2016 7 次提交
  10. 07 11月, 2016 2 次提交
    • I
      drm/i915: Add assert for no pending GPU requests during suspend/resume in LR mode · 31ab49ab
      Imre Deak 提交于
      During resume we will reset the SW/HW tracking for each ring head/tail
      pointers and so are not prepared to replay any pending requests (as
      opposed to GPU reset time). Add an assert for this both to the suspend
      and the resume code.
      
      v2:
      - Check for ELSP port idle already during suspend and check !gt.awake
        during resume. (Chris)
      v3:
      - Move the !gt.awake check to i915_gem_resume().
      v4:
      - s/intel_lr_engines_idle/intel_execlists_idle/ (Chris)
      
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Mika Kuoppala <mika.kuoppala@intel.com>
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Link: http://patchwork.freedesktop.org/patch/msgid/1478510405-11799-4-git-send-email-imre.deak@intel.com
      31ab49ab
    • I
      drm/i915: Make sure engines are idle during GPU idling in LR mode · 0cb5670b
      Imre Deak 提交于
      We assume that the GPU is idle once receiving the seqno via the last
      request's user interrupt. In execlist mode the corresponding context
      completed interrupt can be delayed though and until this latter
      interrupt arrives we consider the request to be pending on the ELSP
      submit port. This can cause a problem during system suspend where this
      last request will be seen by the resume code as still pending. Such
      pending requests are normally replayed after a GPU reset, but during
      resume we reset both SW and HW tracking of the ring head/tail pointers,
      so replaying the pending request with its stale tail pointer will leave
      the ring in an inconsistent state. A subsequent request submission can
      lead then to the GPU executing from uninitialized area in the ring
      behind the above stale tail pointer.
      
      Fix this by making sure any pending request on the ELSP port is
      completed before suspending. I used a polling wait since the completion
      time I measured was <1ms and since normally we only need to wait during
      system suspend. GPU idling during runtime suspend is scheduled with a
      delay (currently 50-100ms) after the retirement of the last request at
      which point the context completed interrupt must have arrived already.
      
      The chance of this bug was increased by
      
      commit 1c777c5d
      Author: Imre Deak <imre.deak@intel.com>
      Date:   Wed Oct 12 17:46:37 2016 +0300
      
          drm/i915/hsw: Fix GPU hang during resume from S3-devices state
      
      but it could happen even without the explicit GPU reset, since we
      disable interrupts afterwards during the suspend sequence.
      
      v2:
      - Do an unlocked poll-wait first. (Chris)
      v3-4:
      - s/intel_lr_engines_idle/intel_execlists_idle/ and move
        i915.enable_execlists check to the new helper. (Chris)
      
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Mika Kuoppala <mika.kuoppala@intel.com>
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98470Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Link: http://patchwork.freedesktop.org/patch/msgid/1478510405-11799-3-git-send-email-imre.deak@intel.com
      0cb5670b