diff options
Diffstat (limited to 'drivers/gpu/nvgpu')
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/gr_gv11b.c | 17 |
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 | ||
2026 | static void gv11b_write_bundle_veid_state(struct gk20a *g, u32 index) | 2026 | static 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 | ||
2046 | int gr_gv11b_init_sw_veid_bundle(struct gk20a *g) | 2047 | int 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 | ||