args->stride = 0;
        } else {
                if (args->tiling_mode == I915_TILING_X)
-                       args->swizzle_mode = to_i915(dev)->mm.bit_6_swizzle_x;
+                       args->swizzle_mode = to_i915(dev)->ggtt.bit_6_swizzle_x;
                else
-                       args->swizzle_mode = to_i915(dev)->mm.bit_6_swizzle_y;
+                       args->swizzle_mode = to_i915(dev)->ggtt.bit_6_swizzle_y;
 
                /* Hide bit 17 swizzling from the user.  This prevents old Mesa
                 * from aborting the application on sw fallbacks to bit 17,
 
        switch (args->tiling_mode) {
        case I915_TILING_X:
-               args->swizzle_mode = dev_priv->mm.bit_6_swizzle_x;
+               args->swizzle_mode = dev_priv->ggtt.bit_6_swizzle_x;
                break;
        case I915_TILING_Y:
-               args->swizzle_mode = dev_priv->mm.bit_6_swizzle_y;
+               args->swizzle_mode = dev_priv->ggtt.bit_6_swizzle_y;
                break;
        default:
        case I915_TILING_NONE:
 
                tile.tiling = tiling;
                switch (tiling) {
                case I915_TILING_X:
-                       tile.swizzle = i915->mm.bit_6_swizzle_x;
+                       tile.swizzle = i915->ggtt.bit_6_swizzle_x;
                        break;
                case I915_TILING_Y:
-                       tile.swizzle = i915->mm.bit_6_swizzle_y;
+                       tile.swizzle = i915->ggtt.bit_6_swizzle_y;
                        break;
                }
 
                        break;
 
                case I915_TILING_X:
-                       tile.swizzle = i915->mm.bit_6_swizzle_x;
+                       tile.swizzle = i915->ggtt.bit_6_swizzle_x;
                        break;
                case I915_TILING_Y:
-                       tile.swizzle = i915->mm.bit_6_swizzle_y;
+                       tile.swizzle = i915->ggtt.bit_6_swizzle_y;
                        break;
                }
 
 
        wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm);
 
        seq_printf(m, "bit6 swizzle for X-tiling = %s\n",
-                  swizzle_string(dev_priv->mm.bit_6_swizzle_x));
+                  swizzle_string(dev_priv->ggtt.bit_6_swizzle_x));
        seq_printf(m, "bit6 swizzle for Y-tiling = %s\n",
-                  swizzle_string(dev_priv->mm.bit_6_swizzle_y));
+                  swizzle_string(dev_priv->ggtt.bit_6_swizzle_y));
 
        if (IS_GEN_RANGE(dev_priv, 3, 4)) {
                seq_printf(m, "DDC = 0x%08x\n",
 
         */
        struct workqueue_struct *userptr_wq;
 
-       /** Bit 6 swizzling required for X tiling */
-       u32 bit_6_swizzle_x;
-       /** Bit 6 swizzling required for Y tiling */
-       u32 bit_6_swizzle_y;
-
        /* shrinker accounting, also useful for userland debugging */
        u64 shrink_memory;
        u32 shrink_count;
 /* i915_gem_tiling.c */
 static inline bool i915_gem_object_needs_bit17_swizzle(struct drm_i915_gem_object *obj)
 {
-       struct drm_i915_private *dev_priv = to_i915(obj->base.dev);
+       struct drm_i915_private *i915 = to_i915(obj->base.dev);
 
-       return dev_priv->mm.bit_6_swizzle_x == I915_BIT_6_SWIZZLE_9_10_17 &&
+       return i915->ggtt.bit_6_swizzle_x == I915_BIT_6_SWIZZLE_9_10_17 &&
                i915_gem_object_is_tiled(obj);
 }
 
 
 
 /**
  * detect_bit_6_swizzle - detect bit 6 swizzling pattern
- * @i915: i915 device private
+ * @ggtt: Global GGTT
  *
  * Detects bit 6 swizzling of address lookup between IGD access and CPU
  * access through main memory.
  */
-static void detect_bit_6_swizzle(struct drm_i915_private *i915)
+static void detect_bit_6_swizzle(struct i915_ggtt *ggtt)
 {
-       struct intel_uncore *uncore = &i915->uncore;
+       struct intel_uncore *uncore = ggtt->vm.gt->uncore;
+       struct drm_i915_private *i915 = ggtt->vm.i915;
        u32 swizzle_x = I915_BIT_6_SWIZZLE_UNKNOWN;
        u32 swizzle_y = I915_BIT_6_SWIZZLE_UNKNOWN;
 
                swizzle_y = I915_BIT_6_SWIZZLE_NONE;
        }
 
-       i915->mm.bit_6_swizzle_x = swizzle_x;
-       i915->mm.bit_6_swizzle_y = swizzle_y;
+       i915->ggtt.bit_6_swizzle_x = swizzle_x;
+       i915->ggtt.bit_6_swizzle_y = swizzle_y;
 }
 
 /*
        INIT_LIST_HEAD(&ggtt->userfault_list);
        intel_wakeref_auto_init(&ggtt->userfault_wakeref, uncore->rpm);
 
-       detect_bit_6_swizzle(i915);
+       detect_bit_6_swizzle(ggtt);
 
        if (INTEL_GEN(i915) >= 7 &&
            !(IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915)))
        struct intel_uncore *uncore = gt->uncore;
 
        if (INTEL_GEN(i915) < 5 ||
-           i915->mm.bit_6_swizzle_x == I915_BIT_6_SWIZZLE_NONE)
+           i915->ggtt.bit_6_swizzle_x == I915_BIT_6_SWIZZLE_NONE)
                return;
 
        intel_uncore_rmw(uncore, DISP_ARB_CTL, 0, DISP_TILE_SURFACE_SWIZZLING);
 
 
        int mtrr;
 
+       /** Bit 6 swizzling required for X tiling */
+       u32 bit_6_swizzle_x;
+       /** Bit 6 swizzling required for Y tiling */
+       u32 bit_6_swizzle_y;
+
        u32 pin_bias;
 
        unsigned int num_fences;