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;
 
 
 
 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;
 
 
 #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
  ******************************************************************************/
 
 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 },
        {}
 };
 
 
 
 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 },
        {}
 };
 
 
 
 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 },
        {}
 };
 
 
 
 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 },
        {}
 };
 
 
 
 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 },
        {}
 };
 
 
 
 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 },
        {}
 };
 
 
 
 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 },
        {}
 };
 
 
 
 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 },
        {}
 };
 
 
 
 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 },
        {}
 };
 
 
 
 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 },
        {}
 };