1. 03 9月, 2012 11 次提交
  2. 27 8月, 2012 2 次提交
  3. 25 8月, 2012 1 次提交
    • C
      drm/i915: Avoid unbinding due to an interrupted pin_and_fence during execbuffer · 7788a765
      Chris Wilson 提交于
      If we need to stall in order to complete the pin_and_fence operation
      during execbuffer reservation, there is a high likelihood that the
      operation will be interrupted by a signal (thanks X!). In order to
      simplify the cleanup along that error path, the object was
      unconditionally unbound and the error propagated. However, being
      interrupted here is far more common than I would like and so we can
      strive to avoid the extra work by eliminating the forced unbind.
      
      v2: In discussion over the indecent colour of the new functions and
      unwind path, we realised that we can use the new unreserve function to
      clean up the code even further.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      7788a765
  4. 24 8月, 2012 12 次提交
  5. 23 8月, 2012 2 次提交
  6. 22 8月, 2012 1 次提交
  7. 21 8月, 2012 7 次提交
    • X
      drm/i915: fix reassignment of variable "intel_dp->DP" · de9932d1
      Xu, Anhua 提交于
      In intel_dp_mode_set we OR in the exact same bits twice at the same
      spot. Kill one of the redundant assignments.
      
      This little regression was introduced by:
      commit 417e822d
      Author: Keith Packard <keithp@keithp.com>
      Date:   Tue Nov 1 19:54:11 2011 -0700
      
          drm/i915: Treat PCH eDP like DP in most places
      
      	PCH eDP has many of the same needs as regular PCH DP connections,
      	including the DP_CTl bit settings, the TRANS_DP_CTL register.
      
      The reachable tag for this commit is: v3.1-5461-g417e822dSigned-off-by: NAnhua Xu <anhua.xu@intel.com>
      [danvet: Improved the commit message somewhat and ensured the diff is
      clearer.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      de9932d1
    • C
      drm/i915: Try harder to allocate an mmap_offset · d8cb5086
      Chris Wilson 提交于
      Given the persistence of an offset for the lifetime of an object, itis
      easy to contemplate how the mmap space becomes badly fragmented to the
      point that further allocations fail with ENOSPC. Our only recourse at
      this point is to try to purge the objects to release some space and
      reattempt the allocation.
      
      References: https://bugs.freedesktop.org/show_bug.cgi?id=39552Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      d8cb5086
    • C
      drm/i915: Show pin count in debugfs · c110a6d7
      Chris Wilson 提交于
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      c110a6d7
    • C
    • C
      drm/i915: Add some sanity checks to unbound tracking · c4670ad0
      Chris Wilson 提交于
      A pair of universally true checks that just need to be put in the right
      place depending on where in the patch sequence you go. Note that
      i915_gem_object_put_pages_gtt() already gains the
      BUG_ON(obj->gtt_space), but on reflection that needed to migrate to
      put_pages().
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      c4670ad0
    • C
      drm/i915: Track unbound pages · 6c085a72
      Chris Wilson 提交于
      When dealing with a working set larger than the GATT, or even the
      mappable aperture when touching through the GTT, we end up with evicting
      objects only to rebind them at a new offset again later. Moving an
      object into and out of the GTT requires clflushing the pages, thus
      causing a double-clflush penalty for rebinding.
      
      To avoid having to clflush on rebinding, we can track the pages as they
      are evicted from the GTT and only relinquish those pages on memory
      pressure.
      
      As usual, if it were not for the handling of out-of-memory condition and
      having to manually shrink our own bo caches, it would be a net reduction
      of code. Alas.
      
      Note: The patch also contains a few changes to the last-hope
      evict_everything logic in i916_gem_execbuffer.c - we no longer try to
      only evict the purgeable stuff in a first try (since that's superflous
      and only helps in OOM corner-cases, not fragmented-gtt trashing
      situations).
      
      Also, the extraction of the get_pages retry loop from bind_to_gtt (and
      other callsites) to get_pages should imo have been a separate patch.
      
      v2: Ditch the newly added put_pages (for unbound objects only) in
      i915_gem_reset. A quick irc discussion hasn't revealed any important
      reason for this, so if we need this, I'd like to have a git blame'able
      explanation for it.
      
      v3: Undo the s/drm_malloc_ab/kmalloc/ in get_pages that Chris noticed.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      [danvet: Split out code movements and rant a bit in the commit message
      with a few Notes. Done v2]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      6c085a72
    • D
      drm/i915: use hsw rps tuning values everywhere on gen6+ · 1ee9ae32
      Daniel Vetter 提交于
      James Bottomley reported [1] a massive power regression, due to the
      enabling of semaphores by default in 3.5. A workaround for him is to
      again disable semaphores. And indeed, his system has a very hard time
      to enter rc6 with semaphores enabled.
      
      Ben Widawsky run around with a kill-a-watt a lot and noticed:
      - There are indeed a few rare systems that seem to have a hard time
        entering rc6 when desktop-idle.
      - One machine, The Indestructible Toshiba regressed in this behaviour
        between 3.5 and 3.6 in a merge commit! So rc6 behaviour with the
        current setting seems to be highly timing dependent and not robust
        at all.
      - The behaviour James reported wrt semaphores seems to be a freak
        timing thing that only happens on his specific machine, confirming
        that enabling semaphores shouldn't reduce rc6 residency.
      
      Now furthermore the Google ChromeOS guys reported [2] a while ago that
      at least on some machines a simply a blinking cursor can keep the gpu
      turbo at the highest frequency. This is because the current rps limits
      used on snb/ivb are highly asymmetric.
      
      On the theory that gpu turbo and rc6 tuning values are related, we've
      tried whether the much saner looking (since much less asymmetric) rps
      tuning values used for hsw would also help entering rc6 more robustly.
      
      And it seems to mostly work, and we don't really have the resources to
      through-roughly tune things in any better way: The values from the
      ChromeOS ppl seem to fare a bit worse for James' machine, so I guess
      we better stick with something vpg (the gpu hw/windows group)
      provided, hoping that they've done their jobs.
      
      Reference[1]: http://lists.freedesktop.org/archives/dri-devel/2012-July/025675.html
      Reference[2]: http://lists.freedesktop.org/archives/intel-gfx/2012-July/018692.html
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=53393Tested-by: NBen Widawsky <ben@bwidawsk.net>
      Cc: stable@vger.kernel.org
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      1ee9ae32
  8. 20 8月, 2012 1 次提交
  9. 17 8月, 2012 3 次提交