1. 24 Jan, 2014 31 commits
  2. 23 Jan, 2014 1 commit
  3. 22 Jan, 2014 8 commits
    • Kenneth Graunke's avatar
      drm/i915: Allow reading the TIMESTAMP register on Gen8. · 43181011
      Kenneth Graunke authored
      Nothing's changed here; we just need to bump the generation check.
      Signed-off-by: default avatarKenneth Graunke <kenneth@whitecape.org>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      43181011
    • Chris Wilson's avatar
      drm/i915: Repeat evictions whilst pageflip completions are outstanding · 74e21ac2
      Chris Wilson authored
      Since an old pageflip will keep its scanout buffer object pinned until
      it has executed its unpin task on the common workqueue, we can clog up
      our GGTT with stale pinned objects. As we cannot flush those workqueues
      without dropping our locks, we have to resort to falling back to
      userspace and telling them to repeat the operation in order to have a
      chance to run our workqueues and free up the required memory. If we
      fail, then we are forced to report ENOSPC back to userspace causing the
      operation to fail and best-case scenario is that it introduces temporary
      corruption.
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarJon Bloomfield <jon.bloomfield@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      74e21ac2
    • Chris Wilson's avatar
      drm/i915: Wait for completion of pending flips when starved of fences · 5dce5b93
      Chris Wilson authored
      On older generations (gen2, gen3) the GPU requires fences for many
      operations, such as blits. The display hardware also requires fences for
      scanouts and this leads to a situation where an arbitrary number of
      fences may be pinned by old scanouts following a pageflip but before we
      have executed the unpin workqueue. This is unpredictable by userspace
      and leads to random EDEADLK when submitting an otherwise benign
      execbuffer. However, we can detect when we have an outstanding flip and
      so cause userspace to wait upon their completion before finally
      declaring that the system is starved of fences. This is really no worse
      than forcing the GPU to stall waiting for older execbuffer to retire and
      release their fences before we can reallocate them for the next
      execbuffer.
      
      v2: move the test for a pending fb unpin to a common routine for
      later reuse during eviction
      
      Reported-and-tested-by: dimon@gmx.net
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=73696Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarJon Bloomfield <jon.bloomfield@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      5dce5b93
    • Imre Deak's avatar
      drm/i915: don't disable DP port after a failed link training · 2e82a720
      Imre Deak authored
      Atm after a failed link training we disable the DP port. This can happen
      during a modeset-enable or a DP link re-establishment. The latter can be
      a problem and we shouldn't disable the DP port, see the previous patch for
      the reasoning. In the former case the right thing would be to disable
      the DP port, but also the rest of the pipe.
      
      As a stop-gap solution leave the DP port enabled in both cases. It is an
      improvement on its own (avoiding HW lock ups) and the proper solution
      for the first case requires a bigger change, so let's keep that on the
      TODO list.
      
      v2:
      - fix explanation of change impact (Chris)
      Suggested-by: default avatarDaniel Vetter <daniel@ffwll.ch>
      Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
      Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      2e82a720
    • Imre Deak's avatar
      drm/i915: don't disable the DP port if the link is lost · 5d6a1116
      Imre Deak authored
      Currently if the DP link is lost (either because of a hot unplug, or
      failed link status check) we disable the DP port, but leave the rest
      of the pipe running. This is incompatible with the modeset disabling
      sequence of some platforms/configurations. At least this is the case for
      DP ports on the CPU as opposed to PCH.
      
      Atm we'll also get a warning when we do a modeset disable after the
      above link lost event, since we expect the DP port to be enabled at this
      point (see the bugzilla ticket for the related dmesg).
      
      Note that with this patch we'll still end up disabling the port, thanks
      to the HPD uevent and subsequent modeset disable.
      
      See also the next patch fixing the other half of this issue.
      
      Solution suggested by Ville.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=70570Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
      Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      5d6a1116
    • Ville Syrjälä's avatar
      drm/i915: Eliminate lots of WARNs when there's no backlight present · dc5a4363
      Ville Syrjälä authored
      My 855gm doesn't register the intel backlight but it still ends up
      calling the backlight code to enable/disable the backlight via the
      LVDS code. This leads to some WARNs due to backlight.max being 0.
      
      Let's have intel_panel_enable_backlight() and intel_panel_disable_backlight()
      check whether there's a backlight present or not.
      
      Also move the backlight.present check from asle_set_backlight() into
      intel_panel_set_backlight() for some extra symmetry.
      Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      dc5a4363
    • Imre Deak's avatar
      drm/i915: g4x/vlv: fix dp aux interrupt mask · bfbdb420
      Imre Deak authored
      Fix typo possibly leading to timed out DP aux transactions on ports C,D.
      
      Introduced in:
      
      Commmit 4aeebd74
      Author: Daniel Vetter <daniel.vetter@ffwll.ch>
      Date:   Thu Oct 31 09:53:36 2013 +0100
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=72210
      Signed off-by: Imre Deak <imre.deak@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      bfbdb420
    • Ben Widawsky's avatar
      drm/i915/ppgtt: Defer request freeing on reset · 1d62beea
      Ben Widawsky authored
      We need to defer the free request until the object/vma is capable of
      being freed - or else we have a problem  when we try to destroy the
      context.
      
      The exact same issue is described and fixed here:
      commit e2078043
      Author: Ben Widawsky <ben@bwidawsk.net>
      Date:   Fri Dec 6 14:11:22 2013 -0800
      
          drm/i915: Defer request freeing
      
      I had this fix previously, but decided not to keep it for some reason I
      can no longer remember.
      
      gem_reset_stats is a really good test at hitting the problem.
      
      For the inquisitive:
      [  170.516392] ------------[ cut here ]------------
      [  170.517227] WARNING: CPU: 1 PID: 105 at drivers/gpu/drm/drm_mm.c:578 drm_mm_takedown+0x2e/0x30 [drm]()
      [  170.518064] Memory manager not clean during takedown.
      [  170.518941] CPU: 1 PID: 105 Comm: kworker/1:1 Not tainted 3.13.0-rc4-BEN+ #28
      [  170.519787] Hardware name: Hewlett-Packard HP EliteBook 8470p/179B, BIOS 68ICF Ver. F.02 04/27/2012
      [  170.520662] Call Trace:
      [  170.521517]  [<ffffffff814f0589>] dump_stack+0x4e/0x7a
      [  170.522373]  [<ffffffff81049e6d>] warn_slowpath_common+0x7d/0xa0
      [  170.523227]  [<ffffffff81049edc>] warn_slowpath_fmt+0x4c/0x50
      [  170.524079]  [<ffffffffa06c414e>] drm_mm_takedown+0x2e/0x30 [drm]
      [  170.524934]  [<ffffffffa07213f3>] gen6_ppgtt_cleanup+0x23/0x110
      [i915]
      [  170.525777]  [<ffffffffa07837ed>] ppgtt_release.part.5+0x24/0x29
      [i915]
      [  170.526603]  [<ffffffffa071aaa5>] i915_gem_context_free+0x195/0x1a0
      [i915]
      [  170.527423]  [<ffffffffa071189d>] i915_gem_free_request+0x9d/0xb0
      [i915]
      [  170.528247]  [<ffffffffa0718af9>] i915_gem_reset+0x1f9/0x3f0 [i915]
      [  170.529065]  [<ffffffffa0700cce>] i915_reset+0x4e/0x180 [i915]
      [  170.529870]  [<ffffffffa070829d>] i915_error_work_func+0xcd/0x120
      [i915]
      [  170.530666]  [<ffffffff8106c13a>] process_one_work+0x1fa/0x6d0
      [  170.531453]  [<ffffffff8106c0d8>] ? process_one_work+0x198/0x6d0
      [  170.532230]  [<ffffffff8106c72b>] worker_thread+0x11b/0x3a0
      [  170.532996]  [<ffffffff8106c610>] ? process_one_work+0x6d0/0x6d0
      [  170.533771]  [<ffffffff810743ef>] kthread+0xff/0x120
      [  170.534548]  [<ffffffff810742f0>] ? insert_kthread_work+0x80/0x80
      [  170.535322]  [<ffffffff814f97ac>] ret_from_fork+0x7c/0xb0
      [  170.536089]  [<ffffffff810742f0>] ? insert_kthread_work+0x80/0x80
      [  170.536847] ---[ end trace 3d4c12892e42d58f ]---
      
      v2: Whitespace fix. (Chris)
      
      Note: This is a bug that only hits the ppgtt topic branch but I've
      figured that doing the request cleanup in this order is generally the
      right thing to do.
      Signed-off-by: default avatarBen Widawsky <ben@bwidawsk.net>
      [danvet: Add a code comment to clarify what's actually going on since
      the lifetime rules aroung ppgtt cleanup are ... fuzzy a best atm. Also
      add a note about why we need this.]
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      1d62beea