diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b/gr_gv11b.c')
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/gr_gv11b.c | 26 |
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 | ||
1920 | static 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 | |||
1922 | void gv11b_init_gr(struct gpu_ops *gops) | 1943 | void 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 | } |