}
        if (!retcode) {
                mutex_lock(&dev->struct_mutex);
-               if (minor->type == DRM_MINOR_LEGACY) {
-                       if (dev->dev_mapping == NULL)
-                               dev->dev_mapping = inode->i_mapping;
-                       else if (dev->dev_mapping != inode->i_mapping)
-                               retcode = -ENODEV;
-               }
+               if (dev->dev_mapping == NULL)
+                       dev->dev_mapping = &inode->i_data;
+               /* ihold ensures nobody can remove inode with our i_data */
+               ihold(container_of(dev->dev_mapping, struct inode, i_data));
+               inode->i_mapping = dev->dev_mapping;
+               filp->f_mapping = dev->dev_mapping;
                mutex_unlock(&dev->struct_mutex);
        }
 
                }
        }
 
+       BUG_ON(dev->dev_mapping == NULL);
+       iput(container_of(dev->dev_mapping, struct inode, i_data));
+
        /* drop the reference held my the file priv */
        drm_master_put(&file_priv->master);
        file_priv->is_master = 0;
 
        struct nouveau_bo *nvbo = NULL;
        int ret = 0;
 
-       if (unlikely(dev_priv->ttm.bdev.dev_mapping == NULL))
-               dev_priv->ttm.bdev.dev_mapping = dev_priv->dev->dev_mapping;
+       dev_priv->ttm.bdev.dev_mapping = dev->dev_mapping;
 
        if (!dev_priv->engine.vram.flags_valid(dev, req->info.tile_flags)) {
                NV_ERROR(dev, "bad page flags: 0x%08x\n", req->info.tile_flags);
 
 
        size = ALIGN(size, PAGE_SIZE);
 
-       if (unlikely(rdev->mman.bdev.dev_mapping == NULL)) {
-               rdev->mman.bdev.dev_mapping = rdev->ddev->dev_mapping;
-       }
+       rdev->mman.bdev.dev_mapping = rdev->ddev->dev_mapping;
        if (kernel) {
                type = ttm_bo_type_kernel;
        } else if (sg) {
 
        }
        DRM_INFO("radeon: %uM of GTT memory ready.\n",
                 (unsigned)(rdev->mc.gtt_size / (1024 * 1024)));
-       if (unlikely(rdev->mman.bdev.dev_mapping == NULL)) {
-               rdev->mman.bdev.dev_mapping = rdev->ddev->dev_mapping;
-       }
+       rdev->mman.bdev.dev_mapping = rdev->ddev->dev_mapping;
 
        r = radeon_ttm_debugfs_init(rdev);
        if (r) {
 
                goto out_no_tfile;
 
        file_priv->driver_priv = vmw_fp;
-
-       if (unlikely(dev_priv->bdev.dev_mapping == NULL))
-               dev_priv->bdev.dev_mapping =
-                       file_priv->filp->f_path.dentry->d_inode->i_mapping;
+       dev_priv->bdev.dev_mapping = dev->dev_mapping;
 
        return 0;