1. 23 8月, 2013 2 次提交
  2. 22 8月, 2013 1 次提交
    • B
      drm/i915: Initialize seqno for VECS too · 5020150b
      Ben Widawsky 提交于
      We require n-1 mailboxes for proper semaphore synchronization. All
      semaphore synchronization code relies on proper values in these
      mailboxes. The fact that we failed to touch the vebox ring by itself
      was unlikely to be an issue since the HW should be initializing the
      values to 0. However the error framework for testing seqno wrap
      introduced by Mika, in addition to the hangcheck via seqno, and
      i915_error_first_batchbuffer() combined caused a nice explosion.
      
      The problem is caused by seqno wrap because the wrap condition is not
      properly setup. The wrap code attempts to set the sync mailboxes all
      to 0, and then set the current seqno to one less than 0. In all cases,
      the vebox mailbox wasn't properly being initialized. This caused a
      wrap to not occur. When hangcheck kicks in with the bogus seqno
      values, the rest just doesn't work. It makes me wonder if we shouldn't
      consider a dumber version of hangcheck...
      
      How we messed this up: VECS support was written before the
      aforementioned other features. Upon VECS being rebased, these facts
      were missed.
      
      Cc: Mika Kuoppala <mika.kuoppala@intel.com>
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=65387
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=67198Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      5020150b
  3. 06 8月, 2013 1 次提交
    • B
      drm/i915: Add VM to pin · c37e2204
      Ben Widawsky 提交于
      To verbalize it, one can say, "pin an object into the given address
      space." The semantics of pinning remain the same otherwise.
      
      Certain objects will always have to be bound into the global GTT.
      Therefore, global GTT is a special case, and keep a special interface
      around for it (i915_gem_obj_ggtt_pin).
      
      v2: s/i915_gem_ggtt_pin/i915_gem_obj_ggtt_pin
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      c37e2204
  4. 11 7月, 2013 3 次提交
    • D
      drm/i915: don't enable PM_VEBOX_CS_ERROR_INTERRUPT · c0d6a3dd
      Daniel Vetter 提交于
      The code to handle it is broken - there's simply no code to clear CS
      parser errors on gen5+. And behold, for all the other rings we also
      don't enable it!
      
      Leave the handling code itself in place just to be consistent with the
      existing mess though. And in case someone feels like fixing it all up.
      
      This has been errornously enabled in
      
      commit 12638c57
      Author: Ben Widawsky <ben@bwidawsk.net>
      Date:   Tue May 28 19:22:31 2013 -0700
      
          drm/i915: Enable vebox interrupts
      
      Cc: Damien Lespiau <damien.lespiau@intel.com>
      Cc: Ben Widawsky <ben@bwidawsk.net>
      Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      c0d6a3dd
    • D
      drm/i915: unify ring irq refcounts (again) · c7113cc3
      Daniel Vetter 提交于
      With the simplified locking there's no reason any more to keep the
      refcounts seperate.
      
      v2: Readd the lost comment that ring->irq_refcount is protected by
      dev_priv->irq_lock.
      Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      c7113cc3
    • D
      drm/i915: kill dev_priv->rps.lock · 59cdb63d
      Daniel Vetter 提交于
      Now that the rps interrupt locking isn't clearly separated (at elast
      conceptually) from all the other interrupt locking having a different
      lock stopped making sense: It protects much more than just the rps
      workqueue it started out with. But with the addition of VECS the
      separation started to blurr and resulted in some more complex locking
      for the ring interrupt refcount.
      
      With this we can (again) unifiy the ringbuffer irq refcounts without
      causing a massive confusion, but that's for the next patch.
      
      v2: Explain better why the rps.lock once made sense and why no longer,
      requested by Ben.
      Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      59cdb63d
  5. 09 7月, 2013 2 次提交
    • D
      drm/i915: fix up ring cleanup for the i830/i845 CS tlb w/a · aaf8a516
      Daniel Vetter 提交于
      It's not a good idea to also run the pipe_control cleanup.
      
      This regression has been introduced whith the original cs tlb w/a in
      
      commit b45305fc
      Author: Daniel Vetter <daniel.vetter@ffwll.ch>
      Date:   Mon Dec 17 16:21:27 2012 +0100
      
          drm/i915: Implement workaround for broken CS tlb on i830/845
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=64610
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: stable@vger.kernel.org
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      aaf8a516
    • B
      drm/i915: Getter/setter for object attributes · f343c5f6
      Ben Widawsky 提交于
      Soon we want to gut a lot of our existing assumptions how many address
      spaces an object can live in, and in doing so, embed the drm_mm_node in
      the object (and later the VMA).
      
      It's possible in the future we'll want to add more getter/setter
      methods, but for now this is enough to enable the VMAs.
      
      v2: Reworked commit message (Ben)
      Added comments to the main functions (Ben)
      sed -i "s/i915_gem_obj_set_color/i915_gem_obj_ggtt_set_color/" drivers/gpu/drm/i915/*.[ch]
      sed -i "s/i915_gem_obj_bound/i915_gem_obj_ggtt_bound/" drivers/gpu/drm/i915/*.[ch]
      sed -i "s/i915_gem_obj_size/i915_gem_obj_ggtt_size/" drivers/gpu/drm/i915/*.[ch]
      sed -i "s/i915_gem_obj_offset/i915_gem_obj_ggtt_offset/" drivers/gpu/drm/i915/*.[ch]
      (Daniel)
      
      v3: Rebased on new reserve_node patch
      Changed DRM_DEBUG_KMS to actually work (will need fixing later)
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      f343c5f6
  6. 04 7月, 2013 1 次提交
    • D
      drm/i915: reinit status page registers after gpu reset · 035dc1e0
      Daniel Vetter 提交于
      This fixes gpu reset on my gm45 - without this patch the bsd thing is
      forever stuck since the seqno updates never reach the status page.
      
      Tbh I have no idea how this ever worked without rewriting the hws
      registers after a gpu reset.
      
      To satisfy my OCD also give the functions a bit more consistent names:
      - Use status_page everywhere, also for the physical addressed one.
      - Use init for the allocation part and setup for the register setup
        part consistently.
      
      Long term I'd really like to share the hw init parts completely
      between gpu reset, resume and driver load, i.e. to call
      i915_gem_init_hw instead of the individual pieces we might need.
      
      v2: Add the missing paragraph to the commit message about what bug
      exactly this patch here fixes.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=65495
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Tested-by: Nlu hua <huax.lu@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      035dc1e0
  7. 13 6月, 2013 1 次提交
  8. 11 6月, 2013 1 次提交
  9. 07 6月, 2013 1 次提交
    • R
      drm/i915: WA: FBC Render Nuke. · fd3da6c9
      Rodrigo Vivi 提交于
      WaFbcNukeOn3DBlt for IVB, HSW.
      
      According BSPec: "Workaround: Do not enable Render Command Streamer tracking for FBC.
      Instead insert a LRI to address 0x50380 with data 0x00000004 after the PIPE_CONTROL that
      follows each render submission."
      
      v2: Chris noticed that flush_domains check was missing here and also suggested to do
          LRI only when fbc is enabled. To avoid do a I915_READ on every flush lets use the
          module parameter check.
      
      v3: Adding Wa name as Damien suggested.
      
      v4: Ville noticed VLV doesn't support fbc at all and comment came wrong from spec.
      
      v5: Ville noticed than on blt a Cache Clean LRI should be used instead the Nuke one.
      
      v6: Check for flush domain on blt (by Ville).
          Check for scanout dirty (by Chris).
      
      v7: Apply proper fbc_dirty implemented by Chris.
      
      v8: remove unused variables.
      
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@gmail.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      fd3da6c9
  10. 01 6月, 2013 12 次提交
  11. 11 5月, 2013 1 次提交
  12. 20 2月, 2013 2 次提交
  13. 23 1月, 2013 2 次提交
  14. 22 1月, 2013 1 次提交
  15. 20 1月, 2013 2 次提交
  16. 18 1月, 2013 1 次提交
  17. 19 12月, 2012 2 次提交
  18. 18 12月, 2012 1 次提交
    • D
      drm/i915: Implement workaround for broken CS tlb on i830/845 · b45305fc
      Daniel Vetter 提交于
      Now that Chris Wilson demonstrated that the key for stability on early
      gen 2 is to simple _never_ exchange the physical backing storage of
      batch buffers I've tried a stab at a kernel solution. Doesn't look too
      nefarious imho, now that I don't try to be too clever for my own good
      any more.
      
      v2: After discussing the various techniques, we've decided to always blit
      batches on the suspect devices, but allow userspace to opt out of the
      kernel workaround assume full responsibility for providing coherent
      batches. The principal reason is that avoiding the blit does improve
      performance in a few key microbenchmarks and also in cairo-trace
      replays.
      Signed-Off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      [danvet:
      - Drop the hunk which uses HAS_BROKEN_CS_TLB to implement the ring
        wrap w/a. Suggested by Chris Wilson.
      - Also add the ACTHD check from Chris Wilson for the error state
        dumping, so that we still catch batches when userspace opts out of
        the w/a.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      b45305fc
  19. 11 12月, 2012 1 次提交
  20. 06 12月, 2012 2 次提交