summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
diff options
context:
space:
mode:
authorSeema Khowala <seemaj@nvidia.com>2017-09-25 18:39:09 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-10-10 11:10:37 -0400
commit6fe9bdeb9af81d42d6f5d8edcc98487d3fb155ea (patch)
tree4b0bf2e8d308b86df1ad2839249b7dee00f11a65 /drivers/gpu/nvgpu/gv11b/gr_gv11b.c
parent19d602da31f81d9dc89a42b2bc84ce14a300773b (diff)
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 <seemaj@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1568070 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b/gr_gv11b.c')
-rw-r--r--drivers/gpu/nvgpu/gv11b/gr_gv11b.c17
1 files changed, 11 insertions, 6 deletions
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)
2023 return 0; 2023 return 0;
2024} 2024}
2025 2025
2026static void gv11b_write_bundle_veid_state(struct gk20a *g, u32 index) 2026static int gv11b_write_bundle_veid_state(struct gk20a *g, u32 index)
2027{ 2027{
2028 struct av_list_gk20a *sw_veid_bundle_init = 2028 struct av_list_gk20a *sw_veid_bundle_init =
2029 &g->gr.ctx_vars.sw_veid_bundle_init; 2029 &g->gr.ctx_vars.sw_veid_bundle_init;
@@ -2033,7 +2033,7 @@ static void gv11b_write_bundle_veid_state(struct gk20a *g, u32 index)
2033 num_subctx = g->fifo.t19x.max_subctx_count; 2033 num_subctx = g->fifo.t19x.max_subctx_count;
2034 2034
2035 for (j = 0; j < num_subctx; j++) { 2035 for (j = 0; j < num_subctx; j++) {
2036 2036 nvgpu_log_fn(g, "write bundle_address_r for subctx: %d", j);
2037 gk20a_writel(g, gr_pipe_bundle_address_r(), 2037 gk20a_writel(g, gr_pipe_bundle_address_r(),
2038 sw_veid_bundle_init->l[index].addr | 2038 sw_veid_bundle_init->l[index].addr |
2039 gr_pipe_bundle_address_veid_f(j)); 2039 gr_pipe_bundle_address_veid_f(j));
@@ -2041,6 +2041,7 @@ static void gv11b_write_bundle_veid_state(struct gk20a *g, u32 index)
2041 err = gr_gk20a_wait_fe_idle(g, gk20a_get_gr_idle_timeout(g), 2041 err = gr_gk20a_wait_fe_idle(g, gk20a_get_gr_idle_timeout(g),
2042 GR_IDLE_CHECK_DEFAULT); 2042 GR_IDLE_CHECK_DEFAULT);
2043 } 2043 }
2044 return err;
2044} 2045}
2045 2046
2046int gr_gv11b_init_sw_veid_bundle(struct gk20a *g) 2047int gr_gv11b_init_sw_veid_bundle(struct gk20a *g)
@@ -2051,30 +2052,34 @@ int gr_gv11b_init_sw_veid_bundle(struct gk20a *g)
2051 u32 last_bundle_data = 0; 2052 u32 last_bundle_data = 0;
2052 u32 err = 0; 2053 u32 err = 0;
2053 2054
2054 gk20a_dbg_fn("");
2055 for (i = 0; i < sw_veid_bundle_init->count; i++) { 2055 for (i = 0; i < sw_veid_bundle_init->count; i++) {
2056 nvgpu_log_fn(g, "veid bundle count: %d", i);
2056 2057
2057 if (i == 0 || last_bundle_data != 2058 if (i == 0 || last_bundle_data !=
2058 sw_veid_bundle_init->l[i].value) { 2059 sw_veid_bundle_init->l[i].value) {
2059 gk20a_writel(g, gr_pipe_bundle_data_r(), 2060 gk20a_writel(g, gr_pipe_bundle_data_r(),
2060 sw_veid_bundle_init->l[i].value); 2061 sw_veid_bundle_init->l[i].value);
2061 last_bundle_data = sw_veid_bundle_init->l[i].value; 2062 last_bundle_data = sw_veid_bundle_init->l[i].value;
2063 nvgpu_log_fn(g, "last_bundle_data : 0x%08x",
2064 last_bundle_data);
2062 } 2065 }
2063 2066
2064 if (gr_pipe_bundle_address_value_v( 2067 if (gr_pipe_bundle_address_value_v(
2065 sw_veid_bundle_init->l[i].addr) == GR_GO_IDLE_BUNDLE) { 2068 sw_veid_bundle_init->l[i].addr) == GR_GO_IDLE_BUNDLE) {
2069 nvgpu_log_fn(g, "go idle bundle");
2066 gk20a_writel(g, gr_pipe_bundle_address_r(), 2070 gk20a_writel(g, gr_pipe_bundle_address_r(),
2067 sw_veid_bundle_init->l[i].addr); 2071 sw_veid_bundle_init->l[i].addr);
2068 err |= gr_gk20a_wait_idle(g, 2072 err |= gr_gk20a_wait_idle(g,
2069 gk20a_get_gr_idle_timeout(g), 2073 gk20a_get_gr_idle_timeout(g),
2070 GR_IDLE_CHECK_DEFAULT); 2074 GR_IDLE_CHECK_DEFAULT);
2071 } else 2075 } else
2072 gv11b_write_bundle_veid_state(g, i); 2076 err = gv11b_write_bundle_veid_state(g, i);
2073 2077
2074 if (err) 2078 if (err) {
2079 nvgpu_err(g, "failed to init sw veid bundle");
2075 break; 2080 break;
2081 }
2076 } 2082 }
2077 gk20a_dbg_fn("done");
2078 return err; 2083 return err;
2079} 2084}
2080 2085