1. 22 1月, 2014 11 次提交
    • 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
    • B
      drm/i915: Make semaphore modparam RO · fae0ce15
      Ben Widawsky 提交于
      A couple patches in the upcoming rework of semaphores will break if
      semaphores are toggled by the user at various times. Since the code
      cleanups there seem to be an overall win, and toggling semaphores at
      runtime is not a terribly useful thing to do, simply make the module
      parameter read-only.
      
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      fae0ce15
    • B
      drm/i915: Fix disabled semaphores · f0a9f74c
      Ben Widawsky 提交于
      The ring will emit too many if semaphores are disabled since we do not
      add the correct number to num_dwords anymore.
      
      This was introduced:
      commit 52ed2325
      Author: Ben Widawsky <benjamin.widawsky@intel.com>
      Date:   Mon Dec 16 20:50:38 2013 -0800
      
          drm/i915: Don't emit mbox updates without semaphores
      
      FWIW, the bug was fixed later in the series.
      
      /me hangs head in shame.
      
      Daniel: Also note that we should have merged the read-only semaphore
      modparam before this patch.
      Reported-by: NKenneth Graunke <kenneth@whitecape.org>
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      f0a9f74c
    • B
      drm/i915: Clarify relocation errnos · 8b78f0e5
      Ben Widawsky 提交于
      While trying to find a random -EINVAL from a failing test, I noticed we
      had a few hard to follow return values.
      
      The first two hunks in this patch replace completely useless
      initialization of ret. The last several hunks help to distinguish
      between altering 'return ret' and 'return <ERROR>'
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      8b78f0e5
  2. 21 1月, 2014 27 次提交
  3. 20 1月, 2014 2 次提交
    • V
      drm/i915: Add a kludge for DSL incrementing too late and ISR not working · 095163ba
      Ville Syrjälä 提交于
      On pre-PCH platforms ISR doesn't seem to be an actual ISR, at least as
      far as display interrupts are concerned. Instead it sort of looks like
      some ISR bits just directly reflect the corresponding bit from PIPESTAT.
      The bit appears in the ISR only if the PIPESTAT interrupt is enabled. So
      in that sense it sort of looks a bit like the south interrupt scheme on
      PCH platforms. So it goes something a bit like this:
      PIPESTAT.status & PIPESTAT.enable -> ISR -> IMR -> IIR -> IER -> actual
      interrupt
      
      In any case that means the intel_pipe_in_vblank_locked() doesn't actually
      work for pre-PCH platforms. As a last resort, add a similar kludge as radeon
      has that fixes things up if we got called from the vblank interrupt,
      but the scanline counter value indicates that we're not quite there yet.
      We know that the scanline counter increments at hsync but is otherwise
      accurate, so we can limit the kludge to the line just prior to vblank
      start, instead of the relative distance that radeon uses.
      
      Reviewed-by: mario.kleiner.de@gmail.com
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      095163ba
    • V
      drm/radeon: Move the early vblank IRQ fixup to radeon_get_crtc_scanoutpos() · 8072bfa6
      Ville Syrjälä 提交于
      i915 doesn't need this kludge for most platforms. Although we do
      appear to need something similar on certain platforms, but we can
      be more accurate when we apply the adjustment since we know exactly
      why the scanline counter doesn't always quite match the vblank
      status.
      
      Also the current code doesn't handle interlaced modes correctly,
      and we already deal with interlaced modes in i915 code.
      
      So let's just move the current code to radeon_get_crtc_scanoutpos()
      since that's why it was added. For i915 we'll add a more finely
      targeted variant.
      
      v2: Fix vpos vs. *vpos bug (Mario)
      
      Reviewed-by: mario.kleiner.de@gmail.com
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      8072bfa6