summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv11b
diff options
context:
space:
mode:
authorseshendra Gadagottu <sgadagottu@nvidia.com>2017-01-20 19:18:47 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2017-01-27 16:54:40 -0500
commitd00b2000b5bb2f39e3610b8321e0872e2b06bd0a (patch)
tree5ca0ae42384ce598033f5a915603d46f5b01113a /drivers/gpu/nvgpu/gv11b
parent8797934a2663df68c1ee0e896c173266135559f3 (diff)
gpu: nvgpu: gv11b: update zcull and pm pointers
Update zcull and perfmon buffer pointers in context header. For gv11b maximum 49 bits gpu va possible. But, zcull and perfmon buffer pointers uses maximum 41 bit va address (258 bytes aligned). To accommodate this, high pointer registers needs to be updated in context header. JIRA GV11B-48 Change-Id: Ibe62b6bfedd32c4f3721e4d19d96cce58ef0f366 Signed-off-by: seshendra Gadagottu <sgadagottu@nvidia.com> Reviewed-on: http://git-master/r/1291852 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b')
-rw-r--r--drivers/gpu/nvgpu/gv11b/gr_gv11b.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
index 31c1a420..daadef68 100644
--- a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
@@ -1941,6 +1941,34 @@ static void gv11b_restore_context_header(struct gk20a *g,
1941 gk20a_mem_wr(g, ctxheader, 1941 gk20a_mem_wr(g, ctxheader,
1942 ctxsw_prog_main_image_num_save_ops_o(), 0); 1942 ctxsw_prog_main_image_num_save_ops_o(), 0);
1943} 1943}
1944static void gr_gv11b_write_zcull_ptr(struct gk20a *g,
1945 struct mem_desc *mem, u64 gpu_va)
1946{
1947 u32 va_lo, va_hi;
1948
1949 gpu_va = gpu_va >> 8;
1950 va_lo = u64_lo32(gpu_va);
1951 va_hi = u64_hi32(gpu_va);
1952 gk20a_mem_wr(g, mem,
1953 ctxsw_prog_main_image_zcull_ptr_o(), va_lo);
1954 gk20a_mem_wr(g, mem,
1955 ctxsw_prog_main_image_zcull_ptr_hi_o(), va_hi);
1956}
1957
1958
1959static void gr_gv11b_write_pm_ptr(struct gk20a *g,
1960 struct mem_desc *mem, u64 gpu_va)
1961{
1962 u32 va_lo, va_hi;
1963
1964 gpu_va = gpu_va >> 8;
1965 va_lo = u64_lo32(gpu_va);
1966 va_hi = u64_hi32(gpu_va);
1967 gk20a_mem_wr(g, mem,
1968 ctxsw_prog_main_image_pm_ptr_o(), va_lo);
1969 gk20a_mem_wr(g, mem,
1970 ctxsw_prog_main_image_pm_ptr_hi_o(), va_hi);
1971}
1944 1972
1945void gv11b_init_gr(struct gpu_ops *gops) 1973void gv11b_init_gr(struct gpu_ops *gops)
1946{ 1974{
@@ -1995,5 +2023,7 @@ void gv11b_init_gr(struct gpu_ops *gops)
1995 gr_gv11b_program_sm_id_numbering; 2023 gr_gv11b_program_sm_id_numbering;
1996 gops->gr.commit_inst = gr_gv11b_commit_inst; 2024 gops->gr.commit_inst = gr_gv11b_commit_inst;
1997 gops->gr.restore_context_header = gv11b_restore_context_header; 2025 gops->gr.restore_context_header = gv11b_restore_context_header;
2026 gops->gr.write_zcull_ptr = gr_gv11b_write_zcull_ptr;
2027 gops->gr.write_pm_ptr = gr_gv11b_write_pm_ptr;
1998 2028
1999} 2029}