1. 23 7月, 2014 7 次提交
    • S
    • P
      drm/i915: remove plane/cursor/pipe assertions from intel_crtc_disable · c17c654d
      Paulo Zanoni 提交于
      Since we merged runtime PM support for DPMS, it is possible that these
      assertions will be called when the power wells are disabled but a mode
      is "set", resulting in "failed assertion" and "device suspended while
      reading register" WARNs.
      
      To reproduce the bug: disable all screens using mode unset, do a
      modeset on one screen, disable it using DPMS, then try to do a mode
      unset on it again to see the WARNs.
      
      v2: The first version of this patch changed the assertions to also
      check the power domains. Daniel suggested that it would be better to
      just remove the assertions: "The modeset state checker
      will already notice when we've failed to turn off the pipe. And we
      check cursors and plane state in the enable sequence, too. Since we
      use these asserts a lot to lock down the precise modeset sequence I
      actually prefer if they're a bit dumb and don't check the power
      wells."
      
      Testcase: igt/rpm_rpm/dpms-mode-unset-lpsp
      Testcase: igt/rpm_rpm/dpms-mode-unset-non-lpsp
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      c17c654d
    • J
      drm/i915: mark IRQs as disabled on unload · eb21b92b
      Jesse Barnes 提交于
      To avoid more spew with the new warnings.
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      eb21b92b
    • J
      drm/i915: add helper for checking whether IRQs are enabled · 9df7575f
      Jesse Barnes 提交于
      Now that we use the runtime IRQ enable/disable functions in our suspend
      path, we can simply check the pm._irqs_disabled flag everywhere.  So
      rename it to catch the users, and add an inline for it to make the
      checks clear everywhere.
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      9df7575f
    • P
      drm/i915: HSW_BLC_PWM2_CTL doesn't exist on BDW · c5107b87
      Paulo Zanoni 提交于
      So don't write it, otherwise we will trigger unclaimed register
      errors.
      
      Testcase: igt/pm_rpm/rte
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      c5107b87
    • D
      drm/i915: Fix up PSR frontbuffer tracking · 9ca15301
      Daniel Vetter 提交于
      I've tried to split this up, but all the changes are so tightly
      related that I didn't find a good way to do this without breaking
      bisecting. Essentially this completely changes how psr is glued into
      the overall driver, and there's not much you can do to soften such a
      paradigm change.
      
      - Use frontbuffer tracking bits stuff to separate disable and
        re-enable.
      
      - Don't re-check everything in the psr work. We have now accurate
        tracking for everything, so no need to check for sprites or tiling
        really. Allows us to ditch tons of locks.
      
      - That in turn allows us to properly cancel the work in the disable
        function - no more deadlocks.
      
      - Add a check for HSW sprites and force a flush. Apparently the
        hardware doesn't forward the flushing when updating the sprite base
        address. We can do the same trick everywhere else we have such
        issues, e.g. on baytrail with ... everything.
      
      - Don't re-enable psr with a delay in psr_exit. It really must be
        turned off forever if we detect a gtt write. At least with the
        current frontbuffer render tracking. Userspace can do a busy ioctl
        call or no-op pageflip to re-enable psr.
      
      - Drop redundant checks for crtc and crtc->active - now that they're
        only called from enable this is guaranteed.
      
      - Fix up the hsw port check. eDP can also happen on port D, but the
        issue is exactly that it doesn't work there. So an || check is
        wrong.
      
      - We still schedule the psr work with a delay. The frontbuffer
        flushing interface mandates that we upload the next full frame, so
        need to wait a bit. Once we have single-shot frame uploads we can do
        better here.
      
      v2: Don't enable psr initially, rely upon the fb flush of the initial
      plane setup for that. Gives us more unified code flow and makes the
      crtc enable sequence less a special case.
      
      v3: s/psr_exit/psr_invalidate/ for consistency
      
      v4: Fixup whitespace.
      
      v5: Correctly bail out of psr_invalidate/flush when
      dev_priv->psr.enabled is NULL. Spotted by Rodrigo.
      
      v6:
      - Only schedule work when there's work to do. Fixes WARNINGs reported
        by Rodrigo.
      - Comments Chris requested to clarify the code.
      
      v7: Fix conflict on rebase (Rodrigo)
      
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> (v6)
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      9ca15301
    • B
      drm/i915: Power gating display wells during i915_pm_suspend · b04c5bd6
      Borun Fu 提交于
      On VLV, after i915_pm_suspend display power wells are staying
      power ungated. So, after initiating mem sleep "echo mem > /sys/power/state"
      Display is staing D0 State. There might be better way/place to power gate
      these wells. Also, we need to make sure that if wells are power gated due to
      DPMS OFF sequence, they need not be turned off by i915_pm_suspend again.
      
      v2: Extracted helper for intel_crtc_disable and power gating CRTC power wells.
      [Daniel]
      
      Cc: Imre Deak <imre.deak@intel.com>
      Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Jani Nikula <jani.nikula@linux.intel.com>
      Change-Id: I34c80da66aa24c423a5576c68aa1f3a8d0f43848
      Signed-off-by: NBorun Fu <borun.fu@intel.com>
      Signed-off-by: NSagar Kamble <sagar.a.kamble@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      b04c5bd6
  2. 12 7月, 2014 2 次提交
  3. 11 7月, 2014 12 次提交
  4. 10 7月, 2014 4 次提交
  5. 09 7月, 2014 1 次提交
    • M
      drm/i915: Make use of intel_fb_obj() (v2) · 2ff8fde1
      Matt Roper 提交于
      This should hopefully simplify the display code slightly and also
      solves at least one mistake in intel_pipe_set_base() where
      to_intel_framebuffer(fb)->obj is referenced during local variable
      initialization, before 'if (!fb)' gets checked.
      
      Potential uses of this macro were identified via the following
      Coccinelle patch:
      
              @@
              expression E;
              @@
              * to_intel_framebuffer(E)->obj
      
              @@
              expression E;
              identifier I;
              @@
                I = to_intel_framebuffer(E);
                ...
              * I->obj
      
      v2: Rewrite some NULL tests in terms of the obj rather than the fb.
          Also add a WARN() if trying to pageflip with a disabled primary
          plane.  [Suggested by Chris Wilson]
      Signed-off-by: NMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      2ff8fde1
  6. 08 7月, 2014 4 次提交
  7. 07 7月, 2014 10 次提交