diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c index 8b022b9b..3a166e06 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |||
@@ -1857,7 +1857,13 @@ int gr_gk20a_update_hwpm_ctxsw_mode(struct gk20a *g, | |||
1857 | nvgpu_mem_wr(g, gr_mem, ctxsw_prog_main_image_pm_o(), data); | 1857 | nvgpu_mem_wr(g, gr_mem, ctxsw_prog_main_image_pm_o(), data); |
1858 | 1858 | ||
1859 | if (ctxheader->gpu_va) { | 1859 | if (ctxheader->gpu_va) { |
1860 | g->ops.gr.write_pm_ptr(g, ctxheader, virt_addr); | 1860 | struct channel_gk20a *ch; |
1861 | |||
1862 | nvgpu_rwsem_down_read(&tsg->ch_list_lock); | ||
1863 | nvgpu_list_for_each_entry(ch, &tsg->ch_list, channel_gk20a, ch_entry) { | ||
1864 | g->ops.gr.write_pm_ptr(g, &ch->ctx_header, virt_addr); | ||
1865 | } | ||
1866 | nvgpu_rwsem_up_read(&tsg->ch_list_lock); | ||
1861 | } else { | 1867 | } else { |
1862 | g->ops.gr.write_pm_ptr(g, gr_mem, virt_addr); | 1868 | g->ops.gr.write_pm_ptr(g, gr_mem, virt_addr); |
1863 | } | 1869 | } |