From: Ben Skeggs <[email protected]>

- (temporarily) disable if GSP-RM detected, will be added later
- make init() optional

Signed-off-by: Ben Skeggs <[email protected]>
---
 drivers/gpu/drm/nouveau/nvkm/engine/gr/base.c  | 6 +++++-
 drivers/gpu/drm/nouveau/nvkm/engine/gr/ga102.c | 4 ++++
 drivers/gpu/drm/nouveau/nvkm/engine/gr/tu102.c | 5 +++++
 3 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/base.c 
b/drivers/gpu/drm/nouveau/nvkm/engine/gr/base.c
index 0096ad401b15..f5e68f09df76 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/base.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/base.c
@@ -160,7 +160,11 @@ static int
 nvkm_gr_init(struct nvkm_engine *engine)
 {
        struct nvkm_gr *gr = nvkm_gr(engine);
-       return gr->func->init(gr);
+
+       if (gr->func->init)
+               return gr->func->init(gr);
+
+       return 0;
 }
 
 static int
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/ga102.c 
b/drivers/gpu/drm/nouveau/nvkm/engine/gr/ga102.c
index 00cd70abad67..2b51f1d0c281 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/ga102.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/ga102.c
@@ -23,6 +23,7 @@
 #include "ctxgf100.h"
 
 #include <core/firmware.h>
+#include <subdev/gsp.h>
 #include <subdev/acr.h>
 #include <subdev/timer.h>
 #include <subdev/vfn.h>
@@ -350,5 +351,8 @@ ga102_gr_fwif[] = {
 int
 ga102_gr_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst, 
struct nvkm_gr **pgr)
 {
+       if (nvkm_gsp_rm(device->gsp))
+               return -ENODEV;
+
        return gf100_gr_new_(ga102_gr_fwif, device, type, inst, pgr);
 }
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/tu102.c 
b/drivers/gpu/drm/nouveau/nvkm/engine/gr/tu102.c
index a7775aa18541..bda8054c6b59 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/tu102.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/tu102.c
@@ -22,6 +22,8 @@
 #include "gf100.h"
 #include "ctxgf100.h"
 
+#include <subdev/gsp.h>
+
 #include <nvif/class.h>
 
 void
@@ -216,5 +218,8 @@ tu102_gr_fwif[] = {
 int
 tu102_gr_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst, 
struct nvkm_gr **pgr)
 {
+       if (nvkm_gsp_rm(device->gsp))
+               return -ENODEV;
+
        return gf100_gr_new_(tu102_gr_fwif, device, type, inst, pgr);
 }
-- 
2.41.0

Reply via email to