static int init_shmem(struct intel_memory_region *mem)
 {
-       int err;
-
-       err = i915_gemfs_init(mem->i915);
-       if (err) {
-               DRM_NOTE("Unable to create a private tmpfs mount, hugepage support will be disabled(%d).\n",
-                        err);
-       }
-
+       i915_gemfs_init(mem->i915);
        intel_memory_region_set_name(mem, "system");
 
-       return 0; /* Don't error, we can simply fallback to the kernel mnt */
+       return 0; /* We have fallback to the kernel mnt if gemfs init failed. */
 }
 
 static int release_shmem(struct intel_memory_region *mem)
 
 #include "i915_gemfs.h"
 #include "i915_utils.h"
 
-int i915_gemfs_init(struct drm_i915_private *i915)
+void i915_gemfs_init(struct drm_i915_private *i915)
 {
        char huge_opt[] = "huge=within_size"; /* r/w */
        struct file_system_type *type;
        struct vfsmount *gemfs;
-       char *opts;
-
-       type = get_fs_type("tmpfs");
-       if (!type)
-               return -ENODEV;
 
        /*
         * By creating our own shmemfs mountpoint, we can pass in
         * regressions such a slow reads issue on Broadwell and Skylake.
         */
 
-       opts = NULL;
-       if (GRAPHICS_VER(i915) >= 11 || i915_vtd_active(i915)) {
-               if (IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE)) {
-                       opts = huge_opt;
-                       drm_info(&i915->drm,
-                                "Transparent Hugepage mode '%s'\n",
-                                opts);
-               } else {
-                       drm_notice(&i915->drm,
-                                  "Transparent Hugepage support is recommended for optimal performance%s\n",
-                                  GRAPHICS_VER(i915) >= 11 ?
-                                  " on this platform!" :
-                                  " when IOMMU is enabled!");
-               }
-       }
+       if (GRAPHICS_VER(i915) < 11 && !i915_vtd_active(i915))
+               return;
+
+       if (!IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE))
+               goto err;
 
-       gemfs = vfs_kern_mount(type, SB_KERNMOUNT, type->name, opts);
+       type = get_fs_type("tmpfs");
+       if (!type)
+               goto err;
+
+       gemfs = vfs_kern_mount(type, SB_KERNMOUNT, type->name, huge_opt);
        if (IS_ERR(gemfs))
-               return PTR_ERR(gemfs);
+               goto err;
 
        i915->mm.gemfs = gemfs;
-
-       return 0;
+       drm_info(&i915->drm, "Using Transparent Hugepages\n");
+       return;
+
+err:
+       drm_notice(&i915->drm,
+                  "Transparent Hugepage support is recommended for optimal performance%s\n",
+                  GRAPHICS_VER(i915) >= 11 ? " on this platform!" :
+                                             " when IOMMU is enabled!");
 }
 
 void i915_gemfs_fini(struct drm_i915_private *i915)