diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gm20b')
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/gr_gm20b.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c index 6a79b1ac..050c2bee 100644 --- a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c | |||
@@ -592,7 +592,14 @@ int gr_gm20b_ctx_state_floorsweep(struct gk20a *g) | |||
592 | for (pes_index = 0; pes_index < gr->pe_count_per_gpc; | 592 | for (pes_index = 0; pes_index < gr->pe_count_per_gpc; |
593 | pes_index++) | 593 | pes_index++) |
594 | pes_tpc_mask |= gr->pes_tpc_mask[pes_index][gpc_index]; | 594 | pes_tpc_mask |= gr->pes_tpc_mask[pes_index][gpc_index]; |
595 | gk20a_writel(g, gr_fe_tpc_fs_r(), pes_tpc_mask); | 595 | if (g->tpc_fs_mask_user && g->ops.gr.get_gpc_tpc_mask(g, 0) == |
596 | (0x1 << gr->max_tpc_count) - 1) { | ||
597 | u32 val = g->tpc_fs_mask_user; | ||
598 | val &= (0x1 << gr->max_tpc_count) - 1; | ||
599 | gk20a_writel(g, gr_fe_tpc_fs_r(), val); | ||
600 | } else { | ||
601 | gk20a_writel(g, gr_fe_tpc_fs_r(), pes_tpc_mask); | ||
602 | } | ||
596 | 603 | ||
597 | for (tpc_index = 0; tpc_index < gr->tpc_count; tpc_index++) { | 604 | for (tpc_index = 0; tpc_index < gr->tpc_count; tpc_index++) { |
598 | if (tpc_index == 0) { | 605 | if (tpc_index == 0) { |