1. 25 1月, 2014 6 次提交
  2. 22 1月, 2014 1 次提交
    • 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
  3. 20 1月, 2014 3 次提交
  4. 11 1月, 2014 7 次提交
  5. 10 1月, 2014 3 次提交
    • D
      drm/i915: Drop I915_ prefix from HAS_FBC · 3a77c4c4
      Daniel Vetter 提交于
      My OCD just couldn't let this slide. Spotted while reviewing Ville's
      patch to only flip planes when we have FBC.
      
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      3a77c4c4
    • V
      drm/i915: Don't swap planes on 830M · 38af6096
      Ville Syrjälä 提交于
      Looks like 830M doesn't quite like it when you try to move a plane from
      one pipe to another. It seems that the plane's old pipe has to be active
      even if the plane is already disabled, otherwise the relevant register
      just won't accept new values.
      
      The following commit:
      
       commit 1f1c2e24
       Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
       Date:   Thu Nov 28 17:30:01 2013 +0200
      
          drm/i915: Swap primary planes on gen2 for FBC
      
      caused a regression on 830M. It will attempt to swap the planes when the
      driver is loaded, but at that time only pipe A might be active, so plane
      A gets disabled, but plane B won't get enabled since pipe B is not
      active when we try to move the plane over to pipe A.
      
      There's no reason to swap planes on 830M since it doesn't support
      FBC. Change the logic a bit to limit the plane swapping to platforms
      which actually support FBC. This should avoid getting a black screen on
      830M.
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      38af6096
    • V
      drm/i915: Don't grab crtc mutexes in intel_modeset_gem_init() · 7ad228b1
      Ville Syrjälä 提交于
      When the pipe A force quirk is applied the code will attempt to grab
      a crtc mutex during intel_modeset_setup_hw_state(). If we're already
      holding all crtc mutexes this will obviously deadlock every time.
      
      So instead of using drm_modeset_lock_all() just grab the
      mode_config.mutex. This is enough to avoid the unlocked mutex warnings
      from certain lower level functions.
      
      The regression was introduced in:
      
       commit 02747664
       Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
       Date:   Mon Dec 2 11:08:06 2013 +0200
      
          drm/i915: Take modeset locks around intel_modeset_setup_hw_state()
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Cc: stable@vger.kernel.org
      [danvet: Add cc: stable since the offending commit has that, too.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      7ad228b1
  6. 09 1月, 2014 1 次提交
    • P
      drm/i915: fix wrong PLL debug messages. · 89eff4be
      Paulo Zanoni 提交于
      LPT does have PCH refclk, but it's different form the IBX/CPT/PPT one
      and doesn't use the same structs. It is wrong to have a message saying
      that "LPT does not has PCH refclk" (sic). While at it, signal that we
      only want this function on IBX/CPT/PPT by renaming it and adding a
      WARN.
      
      On HSW we also print "0 shared PLLs initialized", but we *do* have
      shared PLLs on HSW (LCPLL, WRPLL, SPLL) and we *do* initialize them.
      We just don't use "struct intel_shared_dpll". So remove the debug
      message.
      
      In the future we may want to rename all that "intel shared pll" code
      to "ibx shared pll", but I'll leave this to another patch.
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      89eff4be
  7. 08 1月, 2014 3 次提交
  8. 07 1月, 2014 1 次提交
  9. 06 1月, 2014 1 次提交
  10. 18 12月, 2013 1 次提交
  11. 17 12月, 2013 3 次提交
  12. 14 12月, 2013 1 次提交
    • P
      drm/i915: change CRTC assertion on LCPLL disable · 96b40268
      Paulo Zanoni 提交于
      Currently, PC8 is enabled at modeset_global_resources, which is called
      after intel_modeset_update_state. Due to this, there's a small race
      condition on the case where we start enabling PC8, then do a modeset
      while PC8 is still being enabled. The racing condition triggers a WARN
      because intel_modeset_update_state will mark the CRTC as enabled, then
      the thread that's still enabling PC8 might look at the data structure
      and think that PC8 is being enabled while a pipe is enabled. Despite
      the WARN, this is not really a bug since we'll wait for the
      PC8-enabling thread to finish when we call modeset_global_resources.
      
      The spec says the CRTC cannot be enabled when we disable LCPLL, so we
      had a check for crtc->base.enabled. If we change to crtc->active we
      will still prevent disabling LCPLL while the CRTC is enabled, and we
      will also prevent the WARN above.
      
      This is a replacement for the previous patch named
          "drm/i915: get/put PC8 when we get/put a CRTC"
      
      Testcase: igt/pm_pc8/modeset-lpsp-stress-no-wait
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      (cherry picked from commit 798183c5
      from -next due to Dave's report.)
      Reported-by: NDave Jones <davej@redhat.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      96b40268
  13. 12 12月, 2013 6 次提交
  14. 11 12月, 2013 3 次提交