summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv100/hal_gv100.c
diff options
context:
space:
mode:
authorSunny He <suhe@nvidia.com>2017-07-26 17:23:01 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-08-14 18:55:25 -0400
commit8ab6445df5b24c200ac4e346684119a85008e0e3 (patch)
tree557c0e126488532942c784bdfcdfe1e9bc6d2688 /drivers/gpu/nvgpu/gv100/hal_gv100.c
parent4bb0896912440d126ae47da350b448f37dabc63d (diff)
gpu: nvgpu: Reorg mm HAL initialization
Reorganize HAL initialization to remove inheritance and construct the gpu_ops struct at compile time. This patch only covers the mm sub-module of the gpu_ops struct. Perform HAL function assignments in hal_gxxxx.c through the population of a chip-specific copy of gpu_ops. Jira NVGPU-74 Change-Id: I5fd295c6473d5b4a6178c0c6be8fcf8f4c33f2e3 Signed-off-by: Sunny He <suhe@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1537754 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gv100/hal_gv100.c')
-rw-r--r--drivers/gpu/nvgpu/gv100/hal_gv100.c33
1 files changed, 31 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gv100/hal_gv100.c b/drivers/gpu/nvgpu/gv100/hal_gv100.c
index a2a131da..74bc48fb 100644
--- a/drivers/gpu/nvgpu/gv100/hal_gv100.c
+++ b/drivers/gpu/nvgpu/gv100/hal_gv100.c
@@ -31,11 +31,13 @@
31#include "gk20a/flcn_gk20a.h" 31#include "gk20a/flcn_gk20a.h"
32#include "gk20a/regops_gk20a.h" 32#include "gk20a/regops_gk20a.h"
33#include "gk20a/fb_gk20a.h" 33#include "gk20a/fb_gk20a.h"
34#include "gk20a/mm_gk20a.h"
34 35
35#include "gm20b/ltc_gm20b.h" 36#include "gm20b/ltc_gm20b.h"
36#include "gm20b/gr_gm20b.h" 37#include "gm20b/gr_gm20b.h"
37#include "gm20b/fifo_gm20b.h" 38#include "gm20b/fifo_gm20b.h"
38#include "gm20b/fb_gm20b.h" 39#include "gm20b/fb_gm20b.h"
40#include "gm20b/mm_gm20b.h"
39 41
40#include "gp10b/fb_gp10b.h" 42#include "gp10b/fb_gp10b.h"
41 43
@@ -55,6 +57,7 @@
55#include "gp10b/priv_ring_gp10b.h" 57#include "gp10b/priv_ring_gp10b.h"
56#include "gp10b/fifo_gp10b.h" 58#include "gp10b/fifo_gp10b.h"
57#include "gp10b/fecs_trace_gp10b.h" 59#include "gp10b/fecs_trace_gp10b.h"
60#include "gp10b/mm_gp10b.h"
58 61
59#include "gv11b/hal_gv11b.h" 62#include "gv11b/hal_gv11b.h"
60#include "gv11b/gr_gv11b.h" 63#include "gv11b/gr_gv11b.h"
@@ -63,7 +66,7 @@
63#include "gv11b/gv11b.h" 66#include "gv11b/gv11b.h"
64#include "gv11b/ce_gv11b.h" 67#include "gv11b/ce_gv11b.h"
65#include "gv100/gr_ctx_gv100.h" 68#include "gv100/gr_ctx_gv100.h"
66#include "gv100/mm_gv100.h" 69#include "gv11b/mm_gv11b.h"
67#include "gv11b/pmu_gv11b.h" 70#include "gv11b/pmu_gv11b.h"
68#include "gv11b/fb_gv11b.h" 71#include "gv11b/fb_gv11b.h"
69#include "gv11b/fifo_gv11b.h" 72#include "gv11b/fifo_gv11b.h"
@@ -74,6 +77,7 @@
74#include "gv100.h" 77#include "gv100.h"
75#include "hal_gv100.h" 78#include "hal_gv100.h"
76#include "gv100/fb_gv100.h" 79#include "gv100/fb_gv100.h"
80#include "gv100/mm_gv100.h"
77 81
78#include <nvgpu/debug.h> 82#include <nvgpu/debug.h>
79#include <nvgpu/enabled.h> 83#include <nvgpu/enabled.h>
@@ -310,6 +314,32 @@ static const struct gpu_ops gv100_ops = {
310 .max_entries = gk20a_gr_max_entries, 314 .max_entries = gk20a_gr_max_entries,
311 }, 315 },
312#endif /* CONFIG_GK20A_CTXSW_TRACE */ 316#endif /* CONFIG_GK20A_CTXSW_TRACE */
317 .mm = {
318 .support_sparse = gm20b_mm_support_sparse,
319 .gmmu_map = gk20a_locked_gmmu_map,
320 .gmmu_unmap = gk20a_locked_gmmu_unmap,
321 .vm_bind_channel = gk20a_vm_bind_channel,
322 .fb_flush = gk20a_mm_fb_flush,
323 .l2_invalidate = gk20a_mm_l2_invalidate,
324 .l2_flush = gv11b_mm_l2_flush,
325 .cbc_clean = gk20a_mm_cbc_clean,
326 .set_big_page_size = gm20b_mm_set_big_page_size,
327 .get_big_page_sizes = gm20b_mm_get_big_page_sizes,
328 .get_default_big_page_size = gp10b_mm_get_default_big_page_size,
329 .gpu_phys_addr = gv11b_gpu_phys_addr,
330 .get_physical_addr_bits = NULL,
331 .get_mmu_levels = gp10b_mm_get_mmu_levels,
332 .get_vidmem_size = gv100_mm_get_vidmem_size,
333 .init_pdb = gp10b_mm_init_pdb,
334 .init_mm_setup_hw = gv11b_init_mm_setup_hw,
335 .is_bar1_supported = gv11b_mm_is_bar1_supported,
336 .init_inst_block = gv11b_init_inst_block,
337 .mmu_fault_pending = gv11b_mm_mmu_fault_pending,
338 .init_bar2_vm = gb10b_init_bar2_vm,
339 .init_bar2_mm_hw_setup = gv11b_init_bar2_mm_hw_setup,
340 .remove_bar2_vm = gv11b_mm_remove_bar2_vm,
341 .fault_info_mem_destroy = gv11b_mm_fault_info_mem_destroy,
342 },
313 .pramin = { 343 .pramin = {
314 .enter = gk20a_pramin_enter, 344 .enter = gk20a_pramin_enter,
315 .exit = gk20a_pramin_exit, 345 .exit = gk20a_pramin_exit,
@@ -446,7 +476,6 @@ int gv100_init_hal(struct gk20a *g)
446 g->bootstrap_owner = LSF_FALCON_ID_SEC2; 476 g->bootstrap_owner = LSF_FALCON_ID_SEC2;
447 477
448 gv11b_init_gr(g); 478 gv11b_init_gr(g);
449 gv100_init_mm(gops);
450 gp106_init_pmu_ops(g); 479 gp106_init_pmu_ops(g);
451 480
452 gv11b_init_uncompressed_kind_map(); 481 gv11b_init_uncompressed_kind_map();