diff --git a/drivers/gpu/drm/nouveau/nouveau_sysfs.c b/drivers/gpu/drm/nouveau/nouveau_sysfs.c
index 32a23895abd5f52fe3cd2bcff82f91757daf6be7..3c6962d15b26c2099bc4f2e1d840f5377b809227 100644
--- a/drivers/gpu/drm/nouveau/nouveau_sysfs.c
+++ b/drivers/gpu/drm/nouveau/nouveau_sysfs.c
@@ -28,6 +28,10 @@
 
 #include "nouveau_sysfs.h"
 
+MODULE_PARM_DESC(pstate, "enable sysfs pstate file, which will be moved in the future");
+static int nouveau_pstate;
+module_param_named(pstate, nouveau_pstate, int, 0400);
+
 static inline struct drm_device *
 drm_device(struct device *d)
 {
@@ -160,7 +164,7 @@ nouveau_sysfs_fini(struct drm_device *dev)
 	struct nouveau_drm *drm = nouveau_drm(dev);
 	struct nvif_device *device = &drm->device;
 
-	if (sysfs->ctrl.priv) {
+	if (sysfs && sysfs->ctrl.priv) {
 		device_remove_file(nv_device_base(nvkm_device(device)), &dev_attr_pstate);
 		nvif_object_fini(&sysfs->ctrl);
 	}
@@ -177,6 +181,9 @@ nouveau_sysfs_init(struct drm_device *dev)
 	struct nouveau_sysfs *sysfs;
 	int ret;
 
+	if (!nouveau_pstate)
+		return 0;
+
 	sysfs = drm->sysfs = kzalloc(sizeof(*sysfs), GFP_KERNEL);
 	if (!sysfs)
 		return -ENOMEM;