diff --git a/init/do_mounts.c b/init/do_mounts.c
index a78e44ee6adb8d12b22d83b351ed8bac50082cdd..e66b472cb8caa2798b1922b6bc0ae4049c15b1a2 100644
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -552,6 +552,16 @@ void __init mount_root(void)
 		return;
 	}
 #endif
+#ifdef CONFIG_VIRTIO_FS
+	if (root_fs_names && !strcmp(root_fs_names, "virtiofs")) {
+		if (!do_mount_root(root_device_name, "virtiofs",
+				   root_mountflags, root_mount_data))
+			return;
+
+		panic("VFS: Unable to mount root fs \"%s\" from virtiofs",
+		      root_device_name);
+	}
+#endif
 #ifdef CONFIG_BLOCK
 	{
 		int err = create_dev("/dev/root", ROOT_DEV);