1. 08 11月, 2014 1 次提交
  2. 24 10月, 2014 4 次提交
  3. 16 10月, 2014 1 次提交
  4. 08 10月, 2014 1 次提交
  5. 03 10月, 2014 3 次提交
  6. 01 10月, 2014 1 次提交
  7. 29 9月, 2014 1 次提交
  8. 24 9月, 2014 3 次提交
  9. 19 9月, 2014 6 次提交
  10. 11 9月, 2014 1 次提交
  11. 05 9月, 2014 1 次提交
    • C
      drm/i915: Check for a stalled page flip after each vblank · d6bbafa1
      Chris Wilson 提交于
      Long ago, back in the racy haydays of 915gm interrupt handling, page
      flips would occasionally go astray and leave the hardware stuck, and the
      display not updating. This annoyed people who relied on their systems
      being able to display continuously updating information 24/7, and so
      some code to detect when the driver missed the page flip completion
      signal was added. Until recently, it was presumed that the interrupt
      handling was now flawless, but once again Simon Farnsworth has found a
      system whose display will stall. Reinstate the pageflip stall detection,
      which works by checking to see if the hardware has been updated to the
      new framebuffer address following each vblank. If the hardware is
      scanning out from the new framebuffer, but we still think the flip is
      pending, then we kick our driver into submision.
      
      This is a continuation of the effort started with
      commit 4e5359cd
      Author: Simon Farnsworth <simon.farnsworth@onelan.co.uk>
      Date:   Wed Sep 1 17:47:52 2010 +0100
      
          drm/i915: Avoid pageflipping freeze when we miss the flip prepare interrupt
      
      This now includes a belt-and-braces approach to make sure the driver
      (or the hardware) doesn't miss an interrupt and cause us to stop
      updating the display should the unthinkable happen and the pageflip fail - i.e.
      that the user is able to continue submitting flips.
      
      v2: Cleanup, refactor, and rename
      v3: Only start counting vblanks after the flip command has been seen by
          the hardware.
      v4: Record the seqno after we touch the ring, or else there may be no
          seqno allocated yet.
      v5: Rebase on mmio-flip.
      v6: Rebase, rebase.
      Reported-by: NSimon Farnsworth <simon@farnz.org.uk>
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=75502Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> [v4]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      d6bbafa1
  12. 03 9月, 2014 5 次提交
  13. 18 8月, 2014 1 次提交
    • I
      drm/i915: fix HPD IRQ reenable work cancelation · 6323751d
      Imre Deak 提交于
      Atm, the HPD IRQ reenable timer can get rearmed right after it's
      canceled. Also to access the HPD IRQ mask registers we need to wake up
      the HW.
      
      Solve both issues by converting the reenable timer to a delayed work and
      grabbing a runtime PM reference in the work. By this we can also forgo
      canceling the timer during runtime suspend, since the only important
      thing there is that the HW is awake when we write the registers and
      that's ensured by the RPM ref. So do the cancelation only during driver
      unload time; this is also a requirement for an upcoming patch where we
      want to cancel all HPD related works only during system suspend and
      driver unload time, but not during runtime suspend.
      
      Note that there is still a race between the HPD IRQ reenable work and
      drm_irq_uninstall() during driver unload, where the work can reenable
      the HPD IRQs disabled by drm_irq_uninstall(). This isn't a problem since
      the HPD IRQs will still be effectively masked by the first level
      interrupt mask.
      
      v2-3:
      - unchanged
      v4:
      - use proper API for changing the expiration time for an already pending
        delayed work (Jani)
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> (v2)
      Cc: stable@vger.kernel.org (3.16+)
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      6323751d
  14. 15 8月, 2014 1 次提交
    • T
      drm/i915/bdw: Handle context switch events · e981e7b1
      Thomas Daniel 提交于
      Handle all context status events in the context status buffer on every
      context switch interrupt. We only remove work from the execlist queue
      after a context status buffer reports that it has completed and we only
      attempt to schedule new contexts on interrupt when a previously submitted
      context completes (unless no contexts are queued, which means the GPU is
      free).
      
      We canot call intel_runtime_pm_get() in an interrupt (or with a spinlock
      grabbed, FWIW), because it might sleep, which is not a nice thing to do.
      Instead, do the runtime_pm get/put together with the create/destroy request,
      and handle the forcewake get/put directly.
      Signed-off-by: NThomas Daniel <thomas.daniel@intel.com>
      
      v2: Unreferencing the context when we are freeing the request might free
      the backing bo, which requires the struct_mutex to be grabbed, so defer
      unreferencing and freeing to a bottom half.
      
      v3:
      - Ack the interrupt inmediately, before trying to handle it (fix for
      missing interrupts by Bob Beckett <robert.beckett@intel.com>).
      - Update the Context Status Buffer Read Pointer, just in case (spotted
      by Damien Lespiau).
      
      v4: New namespace and multiple rebase changes.
      
      v5: Squash with "drm/i915/bdw: Do not call intel_runtime_pm_get() in an
      interrupt", as suggested by Daniel.
      Signed-off-by: NOscar Mateo <oscar.mateo@intel.com>
      Reviewed-by: NDamien Lespiau <damien.lespiau@intel.com>
      [danvet: Checkpatch ...]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      e981e7b1
  15. 12 8月, 2014 2 次提交
  16. 09 8月, 2014 1 次提交
  17. 08 8月, 2014 3 次提交
    • D
      drm/i915: Introduce a for_each_intel_encoder() macro · b2784e15
      Damien Lespiau 提交于
      Following the established idom, let's provide a macro to iterate through
      the encoders.
      
      spatch helps, once more, for the substitution:
      
        @@
        iterator name list_for_each_entry;
        iterator name for_each_intel_encoder;
        struct intel_encoder * encoder;
        struct drm_device * dev;
        @@
        -list_for_each_entry(encoder, &dev->mode_config.encoder_list, base.head) {
        +for_each_intel_encoder(dev, encoder) {
          ...
        }
      
      I also modified a few call sites by hand where a pointer to mode_config
      was directly used (to avoid overflowing 80 chars).
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      [danvet: Wrap paramters correctly in the macro and remove spurious
      space checkpatch noticed.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      b2784e15
    • P
      d rm/i915: freeze display before the interrupts and GT · 06ffc778
      Paulo Zanoni 提交于
      Since we started using intel_runtime_pm_disable_interrupts() at normal
      (non-runtime) suspend/resume, we had to remove a WARN from
      ironlake_disable_display_irq to avoid a case where we were doing the
      correct thing and the WARN was not really needed. The problem is that
      the WARN was useful in other cases, and its removal can hide some bugs
      that we would catch automatically.
      
      To be able to add back the WARN, we have to call intel_crtc_control()
      before interrupts are disabled, which is what this patch currently
      does.
      
      Also notice that Ville's patch from the Watermarks series "drm/i915:
      Leave interrupts enabled while disabling crtcs during suspend" also
      did a change that's equivalent to the one we're doing on this patch,
      with the exception that its original patch, when applied to the
      current tree, procduces a WARN.
      
      Related commits:
      
      commit daa390e5ee45cc051d6bf37b296901f2f92b002d
      Author: Jesse Barnes <jbarnes@virtuousgeek.org>
          drm/i915: don't warn if IRQs are disabled when shutting down display IRQs
      
      commit e11aa362
      Author: Jesse Barnes <jbarnes@virtuousgeek.org>
          drm/i915: use runtime irq suspend/resume in freeze/thaw
      
      Note that the function part of this patch has already been done in
      
      commit 0e32b39c
      Author: Dave Airlie <airlied@redhat.com>
      Date:   Fri May 2 14:02:48 2014 +1000
      
          drm/i915: add DP 1.2 MST support (v0.7)
      
      with the fixup
      
      commit 09b64267
      Author: Dave Airlie <airlied@redhat.com>
      Date:   Wed Jul 23 14:25:24 2014 +1000
      
          drm/i915: don't suspend gt until after we disable irqs and display (v2)
      
      so all that's left from Paulo's patch is reinstating the WARNING.
      
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      [danvet: Explain conflict resolution with Dave's DP MST patches with a
      note in the commit message.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      06ffc778
    • V
      drm/i915: Kill intel_crtc->vbl_wait · 210871b6
      Ville Syrjälä 提交于
      Share the waitqueue that drm_irq uses when performing the vblank evade
      trick for atomic pipe updates.
      
      v2: Keep intel_pipe_handle_vblank() (Chris)
      Suggested-by: NDaniel Vetter <daniel@ffwll.ch>
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      210871b6
  18. 07 8月, 2014 2 次提交
  19. 23 7月, 2014 2 次提交