if (size_aligned * 2 > dev_priv->stolen_usable_size)
                return false;
 
+       switch (fb->modifier) {
+       case DRM_FORMAT_MOD_LINEAR:
+       case I915_FORMAT_MOD_X_TILED:
+       case I915_FORMAT_MOD_Y_TILED:
+               break;
+       default:
+               DRM_DEBUG_DRIVER("Unsupported modifier for initial FB: 0x%llx\n",
+                                fb->modifier);
+               return false;
+       }
+
        mutex_lock(&dev->struct_mutex);
        obj = i915_gem_object_create_stolen_for_preallocated(dev_priv,
                                                             base_aligned,
        if (!obj)
                return false;
 
-       if (plane_config->tiling == I915_TILING_X)
-               obj->tiling_and_stride = fb->pitches[0] | I915_TILING_X;
+       switch (plane_config->tiling) {
+       case I915_TILING_NONE:
+               break;
+       case I915_TILING_X:
+       case I915_TILING_Y:
+               obj->tiling_and_stride = fb->pitches[0] | plane_config->tiling;
+               break;
+       default:
+               MISSING_CASE(plane_config->tiling);
+               return false;
+       }
 
        mode_cmd.pixel_format = fb->format->format;
        mode_cmd.width = fb->width;
                fb->modifier = I915_FORMAT_MOD_X_TILED;
                break;
        case PLANE_CTL_TILED_Y:
+               plane_config->tiling = I915_TILING_Y;
                if (val & PLANE_CTL_RENDER_DECOMPRESSION_ENABLE)
                        fb->modifier = I915_FORMAT_MOD_Y_TILED_CCS;
                else