gpu: nvgpu: add hal to enable/disable pipe mode override

Add hal g->ops.gr.init.pipe_mode_override in hal.gr.init unit to
enable/disable pipe mode override

Use new hal in gk20a_init_sw_bundle()

Jira NVGPU-2961

Change-Id: Ib78c3c3662b06a2e25bc19abcdced4d303878ae4
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2083630
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Deepak Nibade
2019-03-16 21:43:56 +05:30
committed by mobile promotions
parent d1127afb6d
commit d0c4eecb31
9 changed files with 22 additions and 6 deletions

View File

@@ -780,8 +780,7 @@ int gk20a_init_sw_bundle(struct gk20a *g)
unsigned int i;
/* enable pipe mode override */
gk20a_writel(g, gr_pipe_bundle_config_r(),
gr_pipe_bundle_config_override_pipe_mode_enabled_f());
g->ops.gr.init.pipe_mode_override(g, true);
/* load bundle init */
for (i = 0U; i < sw_bundle_init->count; i++) {
@@ -823,8 +822,7 @@ int gk20a_init_sw_bundle(struct gk20a *g)
}
/* disable pipe mode override */
gk20a_writel(g, gr_pipe_bundle_config_r(),
gr_pipe_bundle_config_override_pipe_mode_disabled_f());
g->ops.gr.init.pipe_mode_override(g, false);
err = g->ops.gr.init.wait_idle(g);
@@ -832,8 +830,7 @@ int gk20a_init_sw_bundle(struct gk20a *g)
error:
/* in case of error skip waiting for GR idle - just restore state */
gk20a_writel(g, gr_pipe_bundle_config_r(),
gr_pipe_bundle_config_override_pipe_mode_disabled_f());
g->ops.gr.init.pipe_mode_override(g, false);
return err;
}

View File

@@ -468,6 +468,7 @@ static const struct gpu_ops gm20b_ops = {
gm20b_gr_init_commit_global_attrib_cb,
.commit_global_cb_manager =
gm20b_gr_init_commit_global_cb_manager,
.pipe_mode_override = gm20b_gr_init_pipe_mode_override,
},
.intr = {
.enable_hww_exceptions =

View File

@@ -546,6 +546,7 @@ static const struct gpu_ops gp10b_ops = {
gp10b_gr_init_commit_global_attrib_cb,
.commit_global_cb_manager =
gp10b_gr_init_commit_global_cb_manager,
.pipe_mode_override = gm20b_gr_init_pipe_mode_override,
},
.intr = {
.enable_hww_exceptions =

View File

@@ -689,6 +689,7 @@ static const struct gpu_ops gv100_ops = {
gv11b_gr_init_commit_global_attrib_cb,
.commit_global_cb_manager =
gp10b_gr_init_commit_global_cb_manager,
.pipe_mode_override = gm20b_gr_init_pipe_mode_override,
},
.intr = {
.enable_hww_exceptions =

View File

@@ -648,6 +648,7 @@ static const struct gpu_ops gv11b_ops = {
gv11b_gr_init_commit_global_attrib_cb,
.commit_global_cb_manager =
gp10b_gr_init_commit_global_cb_manager,
.pipe_mode_override = gm20b_gr_init_pipe_mode_override,
},
.intr = {
.enable_hww_exceptions =

View File

@@ -711,6 +711,17 @@ void gm20b_gr_init_fe_go_idle_timeout(struct gk20a *g, bool enable)
}
}
void gm20b_gr_init_pipe_mode_override(struct gk20a *g, bool enable)
{
if (enable) {
nvgpu_writel(g, gr_pipe_bundle_config_r(),
gr_pipe_bundle_config_override_pipe_mode_enabled_f());
} else {
nvgpu_writel(g, gr_pipe_bundle_config_r(),
gr_pipe_bundle_config_override_pipe_mode_disabled_f());
}
}
void gm20b_gr_init_load_method_init(struct gk20a *g,
struct netlist_av_list *sw_method_init)
{

View File

@@ -59,6 +59,7 @@ int gm20b_gr_init_wait_fe_idle(struct gk20a *g);
int gm20b_gr_init_fe_pwr_mode_force_on(struct gk20a *g, bool force_on);
void gm20b_gr_init_override_context_reset(struct gk20a *g);
void gm20b_gr_init_fe_go_idle_timeout(struct gk20a *g, bool enable);
void gm20b_gr_init_pipe_mode_override(struct gk20a *g, bool enable);
void gm20b_gr_init_load_method_init(struct gk20a *g,
struct netlist_av_list *sw_method_init);
void gm20b_gr_init_commit_global_timeslice(struct gk20a *g);

View File

@@ -733,6 +733,8 @@ struct gpu_ops {
void (*commit_global_cb_manager)(struct gk20a *g,
struct nvgpu_gr_config *config,
struct nvgpu_gr_ctx *gr_ctx, bool patch);
void (*pipe_mode_override)(struct gk20a *g,
bool enable);
} init;
struct {

View File

@@ -722,6 +722,7 @@ static const struct gpu_ops tu104_ops = {
gv11b_gr_init_commit_global_attrib_cb,
.commit_global_cb_manager =
gp10b_gr_init_commit_global_cb_manager,
.pipe_mode_override = gm20b_gr_init_pipe_mode_override,
},
.intr = {
.enable_hww_exceptions =