1. 28 1月, 2014 2 次提交
  2. 26 1月, 2014 1 次提交
  3. 25 1月, 2014 10 次提交
  4. 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
  5. 20 1月, 2014 3 次提交
  6. 11 1月, 2014 7 次提交
  7. 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
  8. 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
  9. 08 1月, 2014 3 次提交
  10. 07 1月, 2014 1 次提交
  11. 06 1月, 2014 1 次提交
  12. 18 12月, 2013 1 次提交
  13. 17 12月, 2013 3 次提交
  14. 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
  15. 12 12月, 2013 2 次提交
    • P
      drm/i915: split intel_ddi_pll_mode_set in 2 pieces · 566b734a
      Paulo Zanoni 提交于
      The first piece, intel_ddi_pll_select, finds a PLL and assigns it to
      the CRTC, but doesn't write any register. It can also fail in case it
      doesn't find a PLL.
      
      The second piece, intel_ddi_pll_enable, uses the information stored by
      intel_ddi_pll_select to actually enable the PLL by writing to its
      register. This function can't fail. We also have some refcount sanity
      checks here.
      
      The idea is that one day we'll remove all the functions that touch
      registers from haswell_crtc_mode_set to haswell_crtc_enable, so we'll
      call intel_ddi_pll_select at haswell_crtc_mode_set and then call
      intel_ddi_pll_enable at haswell_crtc_enable. Since I'm already
      touching this code, let's take care of this particular split today.
      
      v2: - Clock on the debug message is in KHz
          - Add missing POSTING_READ
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NDamien Lespiau <damien.lespiau@intel.com>
      [danvet: Bikeshed comments.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      566b734a
    • V
      drm/i915: Decrease gen2 vco frequency minimum to 908 MHz · 9c333719
      Ville Syrjälä 提交于
      On my 855 machine the BIOS uses the following DPLL settings:
      DPLL 0x90016000
      FP0 = 0x61207
      FP1 = 0x21207
      
      With the 66MHz SSC refclock, that puts the BIOS generated VCO
      frequency at ~908 MHz, which is lower than the 930 MHz limit
      we have currently. This also results in the pixel clock coming
      out significantly higher than the requested 65 MHz when we try
      to recompute it.
      
      Reduce the the VCO limit to 908 MHz. Combined with the earlier
      SSC reference clock accuracy fix, this results in the pixel clock
      coming out as 65.08 MHz which is quite close to the target. For
      some reason the BIOS uses 64.881 MHz, which isn't quite as close.
      
      This makes kms_flip wf_vblank-ts-check pass for the first time
      on this machine \o/
      
      Cc: Bruno Prémont <bonbons@linux-vserver.org>
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Tested-by: NBruno Prémont <bonbons@linux-vserver.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      9c333719