summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b/gr_gv11b.c')
-rw-r--r--drivers/gpu/nvgpu/gv11b/gr_gv11b.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
index 10b1aebb..dfb46701 100644
--- a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
@@ -1853,8 +1853,6 @@ static int gr_gv11b_commit_inst(struct channel_gk20a *c, u64 gpu_va)
1853 /* point this address to engine_wfi_ptr */ 1853 /* point this address to engine_wfi_ptr */
1854 gk20a_mem_wr32(c->g, &c->inst_block, ram_in_engine_wfi_target_w(), 1854 gk20a_mem_wr32(c->g, &c->inst_block, ram_in_engine_wfi_target_w(),
1855 ram_in_engine_cs_wfi_v() | 1855 ram_in_engine_cs_wfi_v() |
1856 ram_in_engine_wfi_target_f(
1857 ram_in_engine_wfi_target_sys_mem_ncoh_v()) |
1858 ram_in_engine_wfi_mode_f(ram_in_engine_wfi_mode_virtual_v()) | 1856 ram_in_engine_wfi_mode_f(ram_in_engine_wfi_mode_virtual_v()) |
1859 ram_in_engine_wfi_ptr_lo_f(addr_lo)); 1857 ram_in_engine_wfi_ptr_lo_f(addr_lo));
1860 1858
@@ -1919,6 +1917,29 @@ static int gr_gv11b_commit_global_timeslice(struct gk20a *g,
1919 return 0; 1917 return 0;
1920} 1918}
1921 1919
1920static void gv11b_restore_context_header(struct gk20a *g,
1921 struct mem_desc *ctxheader)
1922{
1923 u32 va_lo, va_hi;
1924 struct gr_gk20a *gr = &g->gr;
1925
1926 va_hi = gk20a_mem_rd(g, ctxheader,
1927 ctxsw_prog_main_image_context_buffer_ptr_hi_o());
1928 va_lo = gk20a_mem_rd(g, ctxheader,
1929 ctxsw_prog_main_image_context_buffer_ptr_o());
1930 gk20a_mem_wr_n(g, ctxheader, 0,
1931 gr->ctx_vars.local_golden_image,
1932 gr->ctx_vars.golden_image_size);
1933 gk20a_mem_wr(g, ctxheader,
1934 ctxsw_prog_main_image_context_buffer_ptr_hi_o(), va_hi);
1935 gk20a_mem_wr(g, ctxheader,
1936 ctxsw_prog_main_image_context_buffer_ptr_o(), va_lo);
1937 gk20a_mem_wr(g, ctxheader,
1938 ctxsw_prog_main_image_num_restore_ops_o(), 0);
1939 gk20a_mem_wr(g, ctxheader,
1940 ctxsw_prog_main_image_num_save_ops_o(), 0);
1941}
1942
1922void gv11b_init_gr(struct gpu_ops *gops) 1943void gv11b_init_gr(struct gpu_ops *gops)
1923{ 1944{
1924 gp10b_init_gr(gops); 1945 gp10b_init_gr(gops);
@@ -1971,5 +1992,6 @@ void gv11b_init_gr(struct gpu_ops *gops)
1971 gops->gr.program_sm_id_numbering = 1992 gops->gr.program_sm_id_numbering =
1972 gr_gv11b_program_sm_id_numbering; 1993 gr_gv11b_program_sm_id_numbering;
1973 gops->gr.commit_inst = gr_gv11b_commit_inst; 1994 gops->gr.commit_inst = gr_gv11b_commit_inst;
1995 gops->gr.restore_context_header = gv11b_restore_context_header;
1974 1996
1975} 1997}