summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/vgpu/gr_vgpu.c
diff options
context:
space:
mode:
authorDavid Nieto <dmartineznie@nvidia.com>2017-10-16 15:24:25 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-10-20 14:55:38 -0400
commit8c5ea40ccaad022401e45e61d5b6ff3354ffa413 (patch)
treeb67eb0bf86473cbebeb2fb84302fdd92d262c945 /drivers/gpu/nvgpu/vgpu/gr_vgpu.c
parente492eb5bdd8b4e6484291954f57d1b8303e22eb1 (diff)
gpu: nvgpu: handle smid table init failures
Handle the possibility of failing gr init due to smid table initialization failures bug 2004378 Change-Id: I904b918a0ea31c32292edb3ab8ac3b1459c38a28 Signed-off-by: David Nieto <dmartineznie@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1581661 Reviewed-by: Alex Waterman <alexw@nvidia.com> Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/vgpu/gr_vgpu.c')
-rw-r--r--drivers/gpu/nvgpu/vgpu/gr_vgpu.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/vgpu/gr_vgpu.c b/drivers/gpu/nvgpu/vgpu/gr_vgpu.c
index b913847b..2d6beda6 100644
--- a/drivers/gpu/nvgpu/vgpu/gr_vgpu.c
+++ b/drivers/gpu/nvgpu/vgpu/gr_vgpu.c
@@ -615,6 +615,7 @@ static int vgpu_gr_init_gr_config(struct gk20a *g, struct gr_gk20a *gr)
615{ 615{
616 struct vgpu_priv_data *priv = vgpu_get_priv_data(g); 616 struct vgpu_priv_data *priv = vgpu_get_priv_data(g);
617 u32 gpc_index; 617 u32 gpc_index;
618 int err = -ENOMEM;
618 619
619 gk20a_dbg_fn(""); 620 gk20a_dbg_fn("");
620 621
@@ -653,7 +654,9 @@ static int vgpu_gr_init_gr_config(struct gk20a *g, struct gr_gk20a *gr)
653 g->ops.gr.bundle_cb_defaults(g); 654 g->ops.gr.bundle_cb_defaults(g);
654 g->ops.gr.cb_size_default(g); 655 g->ops.gr.cb_size_default(g);
655 g->ops.gr.calc_global_ctx_buffer_size(g); 656 g->ops.gr.calc_global_ctx_buffer_size(g);
656 g->ops.gr.init_fs_state(g); 657 err = g->ops.gr.init_fs_state(g);
658 if (err)
659 goto cleanup;
657 return 0; 660 return 0;
658cleanup: 661cleanup:
659 nvgpu_err(g, "out of memory"); 662 nvgpu_err(g, "out of memory");
@@ -664,7 +667,7 @@ cleanup:
664 nvgpu_kfree(g, gr->gpc_tpc_mask); 667 nvgpu_kfree(g, gr->gpc_tpc_mask);
665 gr->gpc_tpc_mask = NULL; 668 gr->gpc_tpc_mask = NULL;
666 669
667 return -ENOMEM; 670 return err;
668} 671}
669 672
670int vgpu_gr_bind_ctxsw_zcull(struct gk20a *g, struct gr_gk20a *gr, 673int vgpu_gr_bind_ctxsw_zcull(struct gk20a *g, struct gr_gk20a *gr,