]> Pileus Git - ~andy/linux/commitdiff
Merge tag 'drm-intel-fixes-2014-02-14' of ssh://git.freedesktop.org/git/drm-intel...
authorDave Airlie <airlied@redhat.com>
Tue, 18 Feb 2014 06:21:49 +0000 (16:21 +1000)
committerDave Airlie <airlied@redhat.com>
Tue, 18 Feb 2014 06:21:49 +0000 (16:21 +1000)
3 fixes plus 1 prep patch, all four cc: stable. Jani will take over from
here and the plan is that he'll do 3.14-fixes for the entire release just
to work things out a bit.

* tag 'drm-intel-fixes-2014-02-14' of ssh://git.freedesktop.org/git/drm-intel:
  drm/i915/dp: add native aux defer retry limit
  drm/i915/dp: increase native aux defer retry timeout
  drm/i915: Prevent MI_DISPLAY_FLIP straddling two cachelines on IVB
  drm/i915: Add intel_ring_cachline_align()

1  2 
drivers/gpu/drm/i915/intel_display.c

index 9fa24347963a38d360e365cfa20bf7cefed8beaa,88ad172143c6c25cd8d7115d911ca82670be6119..4c1672809493c795714bc3eddaa1238c258451ed
@@@ -8586,6 -8586,20 +8586,20 @@@ static int intel_gen7_queue_flip(struc
        if (ring->id == RCS)
                len += 6;
  
+       /*
+        * BSpec MI_DISPLAY_FLIP for IVB:
+        * "The full packet must be contained within the same cache line."
+        *
+        * Currently the LRI+SRM+MI_DISPLAY_FLIP all fit within the same
+        * cacheline, if we ever start emitting more commands before
+        * the MI_DISPLAY_FLIP we may need to first emit everything else,
+        * then do the cacheline alignment, and finally emit the
+        * MI_DISPLAY_FLIP.
+        */
+       ret = intel_ring_cacheline_align(ring);
+       if (ret)
+               goto err_unpin;
        ret = intel_ring_begin(ring, len);
        if (ret)
                goto err_unpin;
@@@ -8744,6 -8758,28 +8758,6 @@@ static struct drm_crtc_helper_funcs int
        .load_lut = intel_crtc_load_lut,
  };
  
 -static bool intel_encoder_crtc_ok(struct drm_encoder *encoder,
 -                                struct drm_crtc *crtc)
 -{
 -      struct drm_device *dev;
 -      struct drm_crtc *tmp;
 -      int crtc_mask = 1;
 -
 -      WARN(!crtc, "checking null crtc?\n");
 -
 -      dev = crtc->dev;
 -
 -      list_for_each_entry(tmp, &dev->mode_config.crtc_list, head) {
 -              if (tmp == crtc)
 -                      break;
 -              crtc_mask <<= 1;
 -      }
 -
 -      if (encoder->possible_crtcs & crtc_mask)
 -              return true;
 -      return false;
 -}
 -
  /**
   * intel_modeset_update_staged_output_state
   *
@@@ -9918,8 -9954,8 +9932,8 @@@ intel_modeset_stage_output_state(struc
                }
  
                /* Make sure the new CRTC will work with the encoder */
 -              if (!intel_encoder_crtc_ok(&connector->new_encoder->base,
 -                                         new_crtc)) {
 +              if (!drm_encoder_crtc_ok(&connector->new_encoder->base,
 +                                       new_crtc)) {
                        return -EINVAL;
                }
                connector->encoder->new_crtc = to_intel_crtc(new_crtc);