1. 25 1月, 2014 28 次提交
  2. 23 1月, 2014 1 次提交
  3. 22 1月, 2014 11 次提交
    • K
      drm/i915: Allow reading the TIMESTAMP register on Gen8. · 43181011
      Kenneth Graunke 提交于
      Nothing's changed here; we just need to bump the generation check.
      Signed-off-by: NKenneth Graunke <kenneth@whitecape.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      43181011
    • C
      drm/i915: Repeat evictions whilst pageflip completions are outstanding · 74e21ac2
      Chris Wilson 提交于
      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: NChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NJon Bloomfield <jon.bloomfield@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      74e21ac2
    • C
      drm/i915: Wait for completion of pending flips when starved of fences · 5dce5b93
      Chris Wilson 提交于
      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: NChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NJon Bloomfield <jon.bloomfield@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      5dce5b93
    • I
      drm/i915: don't disable DP port after a failed link training · 2e82a720
      Imre Deak 提交于
      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: NDaniel Vetter <daniel@ffwll.ch>
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      2e82a720
    • I
      drm/i915: don't disable the DP port if the link is lost · 5d6a1116
      Imre Deak 提交于
      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: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      5d6a1116
    • V
      drm/i915: Eliminate lots of WARNs when there's no backlight present · dc5a4363
      Ville Syrjälä 提交于
      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: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NJani Nikula <jani.nikula@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      dc5a4363
    • I
      drm/i915: g4x/vlv: fix dp aux interrupt mask · bfbdb420
      Imre Deak 提交于
      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: NDaniel Vetter <daniel.vetter@ffwll.ch>
      bfbdb420
    • B
      drm/i915/ppgtt: Defer request freeing on reset · 1d62beea
      Ben Widawsky 提交于
      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: NBen 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: NDaniel Vetter <daniel.vetter@ffwll.ch>
      1d62beea
    • K
      i915: send D1 opregion notification · 1fb2362b
      Kristen Carlson Accardi 提交于
      The opregion notification for runtime suspend is currently D1, not D3.
      Signed-off-by: NKristen Carlson Accardi <kristen@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      1fb2362b
    • J
      drm/i915/bdw: remove preliminary_hw_support flag from BDW · babb1903
      Jesse Barnes 提交于
      It ought to work ok in 3.14.  We have some fun stuff coming after that,
      but all the basics are in place now and seem relatively stable.
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Acked by: Ben Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      babb1903
    • D
      drm/i915: Tune down reset_stat output from ERROR to debug · 86648500
      Daniel Vetter 提交于
      This is user-triggerable and hence we should not allow it to spam
      dmesg. Also, it upsets the nice dmesg tracking piglit does.
      
      Note that this is just extra debugging information, mostly
      unwanted, in case of a hang and that there is a separate message to the
      user giving instructions on how to report a bug for a GPU hang.
      
      v2: Add note as suggests in Chris' reply.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=72740
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Reviewed-by: NMika Kuoppala <mika.kuoppala@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      86648500