]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
drm/nouveau/gr/gm200-: explicitly handle nofw
authorBen Skeggs <bskeggs@redhat.com>
Tue, 16 Jun 2020 01:30:04 +0000 (11:30 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Fri, 24 Jul 2020 08:50:49 +0000 (18:50 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 files changed:
drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.h
drivers/gpu/drm/nouveau/nvkm/engine/gr/gm200.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/gm20b.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/gp100.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/gp102.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/gp104.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/gp107.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/gp108.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/gp10b.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/gv100.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/tu102.c

index 9ac0f9449b5e5341909953ccebddd69398030053..749f73fc45a84224e932639fb72518e6a80639ae 100644 (file)
@@ -2103,7 +2103,7 @@ gf100_gr_new_(const struct gf100_gr_fwif *fwif,
 
        fwif = nvkm_firmware_load(&gr->base.engine.subdev, fwif, "Gr", gr);
        if (IS_ERR(fwif))
-               return -ENODEV;
+               return PTR_ERR(fwif);
 
        gr->func = fwif->func;
 
index 88bcb57c2e0755cc2970ba8541ac1f9ffdabdf54..dfd5dd74f0d59d35ce4de4dc4d3fa550dd223ea5 100644 (file)
@@ -404,6 +404,7 @@ int gf100_gr_nofw(struct gf100_gr *, int, const struct gf100_gr_fwif *);
 
 int gk20a_gr_load_sw(struct gf100_gr *, const char *path, int ver);
 
+int gm200_gr_nofw(struct gf100_gr *, int, const struct gf100_gr_fwif *);
 int gm200_gr_load(struct gf100_gr *, int, const struct gf100_gr_fwif *);
 extern const struct nvkm_acr_lsf_func gm200_gr_gpccs_acr;
 extern const struct nvkm_acr_lsf_func gm200_gr_fecs_acr;
index 3d67cfb08395714e5b8843b2e93c1663968bb6b4..81513704751895594e3c40a918ef518bac40ef7b 100644 (file)
 
 #include <nvif/class.h>
 
+int
+gm200_gr_nofw(struct gf100_gr *gr, int ver, const struct gf100_gr_fwif *fwif)
+{
+       nvkm_warn(&gr->base.engine.subdev, "firmware unavailable\n");
+       return -ENODEV;
+}
+
 /*******************************************************************************
  * PGRAPH engine/subdev functions
  ******************************************************************************/
@@ -275,7 +282,8 @@ MODULE_FIRMWARE("nvidia/gm206/gr/sw_method_init.bin");
 
 static const struct gf100_gr_fwif
 gm200_gr_fwif[] = {
-       { 0, gm200_gr_load, &gm200_gr, &gm200_gr_fecs_acr, &gm200_gr_gpccs_acr },
+       {  0, gm200_gr_load, &gm200_gr, &gm200_gr_fecs_acr, &gm200_gr_gpccs_acr },
+       { -1, gm200_gr_nofw },
        {}
 };
 
index 09d8c5d5b000c9937c4d82850556e1544ab2e54d..1aab691fa71c9a25193e431b057c712ff08d08d3 100644 (file)
@@ -175,7 +175,8 @@ MODULE_FIRMWARE("nvidia/gm20b/gr/sw_method_init.bin");
 
 static const struct gf100_gr_fwif
 gm20b_gr_fwif[] = {
-       { 0, gm20b_gr_load, &gm20b_gr, &gm20b_gr_fecs_acr },
+       {  0, gm20b_gr_load, &gm20b_gr, &gm20b_gr_fecs_acr },
+       { -1, gm200_gr_nofw },
        {}
 };
 
index 33c8634ae56741c6542786dd276787ba81aaac44..ddba7ce937c7769833d406926cae82c451c53495 100644 (file)
@@ -150,7 +150,8 @@ MODULE_FIRMWARE("nvidia/gp100/gr/sw_method_init.bin");
 
 static const struct gf100_gr_fwif
 gp100_gr_fwif[] = {
-       { 0, gm200_gr_load, &gp100_gr, &gm200_gr_fecs_acr, &gm200_gr_gpccs_acr },
+       {  0, gm200_gr_load, &gp100_gr, &gm200_gr_fecs_acr, &gm200_gr_gpccs_acr },
+       { -1, gm200_gr_nofw },
        {}
 };
 
index 7baf67f743f4dd7c75b632d3715cf78fed460a87..c083f3757ff74e5fda9c4a64520687a0da0a2b46 100644 (file)
@@ -146,7 +146,8 @@ MODULE_FIRMWARE("nvidia/gp102/gr/sw_method_init.bin");
 
 static const struct gf100_gr_fwif
 gp102_gr_fwif[] = {
-       { 0, gm200_gr_load, &gp102_gr, &gm200_gr_fecs_acr, &gm200_gr_gpccs_acr },
+       {  0, gm200_gr_load, &gp102_gr, &gm200_gr_fecs_acr, &gm200_gr_gpccs_acr },
+       { -1, gm200_gr_nofw },
        {}
 };
 
index d9b8ef875f8d9066362f960ce9402ee3ce5d09a6..f6a31e9a8cc8be828055c43d7039f16118a2acab 100644 (file)
@@ -87,7 +87,8 @@ MODULE_FIRMWARE("nvidia/gp106/gr/sw_method_init.bin");
 
 static const struct gf100_gr_fwif
 gp104_gr_fwif[] = {
-       { 0, gm200_gr_load, &gp104_gr, &gm200_gr_fecs_acr, &gm200_gr_gpccs_acr },
+       {  0, gm200_gr_load, &gp104_gr, &gm200_gr_fecs_acr, &gm200_gr_gpccs_acr },
+       { -1, gm200_gr_nofw },
        {}
 };
 
index 2b1ad5522184d6771a3c01b199a0b758887ca68f..2c80c6a75b56f22e31b834b592badae16de32c3f 100644 (file)
@@ -76,7 +76,8 @@ MODULE_FIRMWARE("nvidia/gp107/gr/sw_method_init.bin");
 
 static const struct gf100_gr_fwif
 gp107_gr_fwif[] = {
-       { 0, gm200_gr_load, &gp107_gr, &gm200_gr_fecs_acr, &gm200_gr_gpccs_acr },
+       {  0, gm200_gr_load, &gp107_gr, &gm200_gr_fecs_acr, &gm200_gr_gpccs_acr },
+       { -1, gm200_gr_nofw },
        {}
 };
 
index 113e4c1ba9e88b0137e3b709d14788cfa141b5f6..2be8f416dd6f8c09a7d8af0eb2a47c445847e38b 100644 (file)
@@ -86,7 +86,8 @@ MODULE_FIRMWARE("nvidia/gp108/gr/sw_method_init.bin");
 
 static const struct gf100_gr_fwif
 gp108_gr_fwif[] = {
-       { 0, gm200_gr_load, &gp107_gr, &gp108_gr_fecs_acr, &gp108_gr_gpccs_acr },
+       {  0, gm200_gr_load, &gp107_gr, &gp108_gr_fecs_acr, &gp108_gr_gpccs_acr },
+       { -1, gm200_gr_nofw },
        {}
 };
 
index eaf913eb5aa3e6e81986c94257b6322addf77f9f..6edc4bc7ed44cce28a7b616d77a432419af085b5 100644 (file)
@@ -88,7 +88,8 @@ MODULE_FIRMWARE("nvidia/gp10b/gr/sw_method_init.bin");
 
 static const struct gf100_gr_fwif
 gp10b_gr_fwif[] = {
-       { 0, gm200_gr_load, &gp10b_gr, &gm20b_gr_fecs_acr, &gp10b_gr_gpccs_acr },
+       {  0, gm200_gr_load, &gp10b_gr, &gm20b_gr_fecs_acr, &gp10b_gr_gpccs_acr },
+       { -1, gm200_gr_nofw },
        {}
 };
 
index 70639d88b8e6b419c1b2c8ec62b12a47ba7fa693..2189a8f4e644b8c88b19b434a603683103095ed0 100644 (file)
@@ -135,7 +135,8 @@ MODULE_FIRMWARE("nvidia/gv100/gr/sw_method_init.bin");
 
 static const struct gf100_gr_fwif
 gv100_gr_fwif[] = {
-       { 0, gm200_gr_load, &gv100_gr, &gp108_gr_fecs_acr, &gp108_gr_gpccs_acr },
+       {  0, gm200_gr_load, &gv100_gr, &gp108_gr_fecs_acr, &gp108_gr_gpccs_acr },
+       { -1, gm200_gr_nofw },
        {}
 };
 
index a9efa4d78be92a808f41e9a9b9329ec0d99cb5f6..6039f9948aa2d8f8770a801d42aaea9bd8d8dc0a 100644 (file)
@@ -192,7 +192,8 @@ MODULE_FIRMWARE("nvidia/tu116/gr/sw_method_init.bin");
 
 static const struct gf100_gr_fwif
 tu102_gr_fwif[] = {
-       { 0, gm200_gr_load, &tu102_gr, &gp108_gr_fecs_acr, &gp108_gr_gpccs_acr },
+       {  0, gm200_gr_load, &tu102_gr, &gp108_gr_fecs_acr, &gp108_gr_gpccs_acr },
+       { -1, gm200_gr_nofw },
        {}
 };