summaryrefslogtreecommitdiffstats
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
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>
-rw-r--r--drivers/gpu/nvgpu/gv11b/gr_gv11b.c30
-rw-r--r--drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_ctxsw_prog_gv11b.h6
2 files changed, 35 insertions, 1 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}
diff --git a/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_ctxsw_prog_gv11b.h b/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_ctxsw_prog_gv11b.h
index 228bf5f2..a0f40de0 100644
--- a/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_ctxsw_prog_gv11b.h
+++ b/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_ctxsw_prog_gv11b.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved. 2 * Copyright (c) 2016-2017, NVIDIA CORPORATION. All rights reserved.
3 * 3 *
4 * This program is free software; you can redistribute it and/or modify it 4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms and conditions of the GNU General Public License, 5 * under the terms and conditions of the GNU General Public License,
@@ -186,6 +186,10 @@ static inline u32 ctxsw_prog_main_image_zcull_ptr_hi_v_f(u32 v)
186{ 186{
187 return (v & 0x1ffff) << 0; 187 return (v & 0x1ffff) << 0;
188} 188}
189static inline u32 ctxsw_prog_main_image_pm_ptr_hi_o(void)
190{
191 return 0x00000094;
192}
189static inline u32 ctxsw_prog_main_image_full_preemption_ptr_hi_o(void) 193static inline u32 ctxsw_prog_main_image_full_preemption_ptr_hi_o(void)
190{ 194{
191 return 0x00000064; 195 return 0x00000064;