/*
                 * See if the plane fb we found above will fit on this
-                * pipe.  Note we need to use the selected fb's bpp rather
-                * than the current pipe's, since they could be different.
+                * pipe.  Note we need to use the selected fb's pitch and bpp
+                * rather than the current pipe's, since they differ.
                 */
-               cur_size = intel_crtc->config.adjusted_mode.crtc_hdisplay *
-                       intel_crtc->config.adjusted_mode.crtc_vdisplay;
-               DRM_DEBUG_KMS("pipe %c area: %d\n", pipe_name(intel_crtc->pipe),
+               cur_size = intel_crtc->config.adjusted_mode.crtc_hdisplay;
+               cur_size = cur_size * fb->base.bits_per_pixel / 8;
+               if (fb->base.pitches[0] < cur_size) {
+                       DRM_DEBUG_KMS("fb not wide enough for plane %c (%d vs %d)\n",
+                                     pipe_name(intel_crtc->pipe),
+                                     cur_size, fb->base.pitches[0]);
+                       plane_config = NULL;
+                       fb = NULL;
+                       break;
+               }
+
+               cur_size = intel_crtc->config.adjusted_mode.crtc_vdisplay;
+               cur_size = ALIGN(cur_size, plane_config->tiled ? (IS_GEN2(dev) ? 16 : 8) : 1);
+               cur_size *= fb->base.pitches[0];
+               DRM_DEBUG_KMS("pipe %c area: %dx%d, bpp: %d, size: %d\n",
+                             pipe_name(intel_crtc->pipe),
+                             intel_crtc->config.adjusted_mode.crtc_hdisplay,
+                             intel_crtc->config.adjusted_mode.crtc_vdisplay,
+                             fb->base.bits_per_pixel,
                              cur_size);
-               cur_size *= fb->base.bits_per_pixel / 8;
-               DRM_DEBUG_KMS("total size %d (bpp %d)\n", cur_size,
-                             fb->base.bits_per_pixel / 8);
 
                if (cur_size > max_size) {
                        DRM_DEBUG_KMS("fb not big enough for plane %c (%d vs %d)\n",