1. 17 Mar, 2015 4 commits
    • Daniel Vetter's avatar
      drm/i915: Remove irq-related FIXME in reset code · 9393943b
      Daniel Vetter authored
      
      With the two-step reset counter increments which braket the actual
      reset code and the subsequent wake-up we're guaranteeing that all the
      lockless waiters _will_ be woken up. And since we unconditionally bail
      out of waits with -EAGAIN (or -EIO) in that case there is not risk of
      lost interrupt enabling bits when the lockless wait code races against
      a gpu reset.
      
      Let's remove this FIXME as resolved then.
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      9393943b
    • Yannick Guerrini's avatar
      drm/i915: Fix trivial typos in comments and warning message · fd0753cf
      Yannick Guerrini authored
      
      Change 'mutliple' to 'multiple'
      Change 'mutlipler' to 'multiplier'
      Change 'Haswel' to 'Haswell'
      Signed-off-by: default avatarYannick Guerrini <yguerrini@tomshardware.fr>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      fd0753cf
    • Matt Roper's avatar
      drm/i915: Use plane->state->fb in watermark code (v2) · 59bea882
      Matt Roper authored
      
      plane->fb is a legacy pointer that not always be up-to-date (or updated
      early enough).  Make sure the watermark code uses plane->state->fb so
      that we're always doing our calculations based on the correct
      framebuffers.
      
      This patch was generated by Coccinelle with the following semantic
      patch:
      
              @@
              struct drm_plane *P;
              @@
              - P->fb
              + P->state->fb
      
      v2: Rebase
      Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      59bea882
    • Matt Roper's avatar
      drm/i915: Kill intel_crtc->cursor_{width, height} (v2) · 3dd512fb
      Matt Roper authored
      The cursor size fields in intel_crtc just duplicate the data from
      cursor->state.crtc_{w,h} so we don't need them any more.  Worse, their
      use in the watermark code actually introduces a subtle bug since they
      don't get updated to mirror the state values until the plane commit
      stage, which is *after* we've already used them to calculate new
      watermark values.  This happens because we had to move watermark updates
      slightly earlier (outside vblank evasion) in commit
      
              commit 32b7eeec
              Author: Matt Roper <matthew.d.roper@intel.com>
              Date:   Wed Dec 24 07:59:06 2014 -0800
      
                  drm/i915: Refactor work that can sleep out of commit (v7)
      
      Dropping the intel_crtc fields and just using the state values (which
      are properly updated by the time watermark updates happen) should solve
      the problem.
      
      Aside from the actual removal of the struct fields (which are formatted
      in a way that I couldn't figure out how to match in Coccinelle), the
      rest of this patch was generated via the following semantic patch:
      
              // Drop assignment
              @@
              struct intel_crtc *C;
              struct drm_plane_state S;
              @@
              (
              - C->cursor_width = S.crtc_w;
              |
              - C->cursor_height = S.crtc_h;
              )
      
              // Replace usage
              @@
              struct intel_crtc *C;
              expression E;
              @@
              (
              - C->cursor_width
              + C->base.cursor->state->crtc_w
              |
              - C->cursor_height
              + C->base.cursor->state->crtc_h
              |
              - to_intel_crtc(E)->cursor_width
              + E->cursor->state->crtc_w
              |
              - to_intel_crtc(E)->cursor_height
              + E->cursor->state->crtc_h
              )
      
      v2: Rebase
      
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Joe Konno <joe.konno@linux.intel.com>
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89346
      
      Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      3dd512fb
  2. 10 Mar, 2015 10 commits
  3. 09 Mar, 2015 1 commit
  4. 07 Mar, 2015 17 commits
  5. 06 Mar, 2015 2 commits
    • Mathias Nyman's avatar
      xhci: Workaround for PME stuck issues in Intel xhci · b8cb91e0
      Mathias Nyman authored
      
      The xhci in Intel Sunrisepoint and Cherryview platforms need a driver
      workaround for a Stuck PME that might either block PME events in suspend,
      or create spurious PME events preventing runtime suspend.
      
      Workaround is to clear a internal PME flag, BIT(28) in a vendor specific
      PMCTRL register at offset 0x80a4, in both suspend resume callbacks
      
      Without this, xhci connected usb devices might never be able to wake up the
      system from suspend, or prevent device from going to suspend (xhci d3)
      
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b8cb91e0
    • Aleksander Morgado's avatar
      xhci: fix reporting of 0-sized URBs in control endpoint · 45ba2154
      Aleksander Morgado authored
      
      When a control transfer has a short data stage, the xHCI controller generates
      two transfer events: a COMP_SHORT_TX event that specifies the untransferred
      amount, and a COMP_SUCCESS event. But when the data stage is not short, only the
      COMP_SUCCESS event occurs. Therefore, xhci-hcd must set urb->actual_length to
      urb->transfer_buffer_length while processing the COMP_SUCCESS event, unless
      urb->actual_length was set already by a previous COMP_SHORT_TX event.
      
      The driver checks this by seeing whether urb->actual_length == 0, but this alone
      is the wrong test, as it is entirely possible for a short transfer to have an
      urb->actual_length = 0.
      
      This patch changes the xhci driver to rely on a new td->urb_length_set flag,
      which is set to true when a COMP_SHORT_TX event is received and the URB length
      updated at that stage.
      
      This fixes a bug which affected the HSO plugin, which relies on URBs with
      urb->actual_length == 0 to halt re-submitting the RX URB in the control
      endpoint.
      
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAleksander Morgado <aleksander@aleksander.es>
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      45ba2154
  6. 05 Mar, 2015 6 commits