From 6fe9bdeb9af81d42d6f5d8edcc98487d3fb155ea Mon Sep 17 00:00:00 2001 From: Seema Khowala Date: Mon, 25 Sep 2017 15:39:09 -0700 Subject: gpu: nvgpu: gv11b: track init veid bundle Add debug prints to track veid bundle init and also return err for subctx init failure. Bug 1983643 Change-Id: I9e6a32e76b1c7deba3a47157ba253976d88b2324 Signed-off-by: Seema Khowala Reviewed-on: https://git-master.nvidia.com/r/1568070 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/gv11b/gr_gv11b.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'drivers/gpu/nvgpu/gv11b/gr_gv11b.c') diff --git a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c index da632aac..da683af6 100644 --- a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c @@ -2023,7 +2023,7 @@ int gr_gv11b_setup_rop_mapping(struct gk20a *g, struct gr_gk20a *gr) return 0; } -static void gv11b_write_bundle_veid_state(struct gk20a *g, u32 index) +static int gv11b_write_bundle_veid_state(struct gk20a *g, u32 index) { struct av_list_gk20a *sw_veid_bundle_init = &g->gr.ctx_vars.sw_veid_bundle_init; @@ -2033,7 +2033,7 @@ static void gv11b_write_bundle_veid_state(struct gk20a *g, u32 index) num_subctx = g->fifo.t19x.max_subctx_count; for (j = 0; j < num_subctx; j++) { - + nvgpu_log_fn(g, "write bundle_address_r for subctx: %d", j); gk20a_writel(g, gr_pipe_bundle_address_r(), sw_veid_bundle_init->l[index].addr | gr_pipe_bundle_address_veid_f(j)); @@ -2041,6 +2041,7 @@ static void gv11b_write_bundle_veid_state(struct gk20a *g, u32 index) err = gr_gk20a_wait_fe_idle(g, gk20a_get_gr_idle_timeout(g), GR_IDLE_CHECK_DEFAULT); } + return err; } int gr_gv11b_init_sw_veid_bundle(struct gk20a *g) @@ -2051,30 +2052,34 @@ int gr_gv11b_init_sw_veid_bundle(struct gk20a *g) u32 last_bundle_data = 0; u32 err = 0; - gk20a_dbg_fn(""); for (i = 0; i < sw_veid_bundle_init->count; i++) { + nvgpu_log_fn(g, "veid bundle count: %d", i); if (i == 0 || last_bundle_data != sw_veid_bundle_init->l[i].value) { gk20a_writel(g, gr_pipe_bundle_data_r(), sw_veid_bundle_init->l[i].value); last_bundle_data = sw_veid_bundle_init->l[i].value; + nvgpu_log_fn(g, "last_bundle_data : 0x%08x", + last_bundle_data); } if (gr_pipe_bundle_address_value_v( sw_veid_bundle_init->l[i].addr) == GR_GO_IDLE_BUNDLE) { + nvgpu_log_fn(g, "go idle bundle"); gk20a_writel(g, gr_pipe_bundle_address_r(), sw_veid_bundle_init->l[i].addr); err |= gr_gk20a_wait_idle(g, gk20a_get_gr_idle_timeout(g), GR_IDLE_CHECK_DEFAULT); } else - gv11b_write_bundle_veid_state(g, i); + err = gv11b_write_bundle_veid_state(g, i); - if (err) + if (err) { + nvgpu_err(g, "failed to init sw veid bundle"); break; + } } - gk20a_dbg_fn("done"); return err; } -- cgit v1.2.2