diff options
author | Sunny He <suhe@nvidia.com> | 2017-08-11 17:41:33 -0400 |
---|---|---|
committer | Shu Zhong <shuz@nvidia.com> | 2017-08-11 17:57:15 -0400 |
commit | f8399cfa553b6fb6d82c7fa762c372f03bf59d5f (patch) | |
tree | 3966af83cf9abdf687667afe120cc6648a9ed360 /drivers/gpu/nvgpu/gm20b | |
parent | 8d63cd3995d4a650b478ad69d7e29ed2b1b2d927 (diff) |
Revert "gpu: nvgpu: Reorg mm HAL initialization"
Conflicts with gv100 changes
This reverts commit 8d63cd3995d4a650b478ad69d7e29ed2b1b2d927.
Change-Id: Ie2f88d281b2b87a9a794d79164a61c4d883626b7
Signed-off-by: Sunny He <suhe@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1537668
Reviewed-by: Shu Zhong <shuz@nvidia.com>
Tested-by: Shu Zhong <shuz@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gm20b')
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/hal_gm20b.c | 26 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/mm_gm20b.c | 33 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/mm_gm20b.h | 12 |
3 files changed, 33 insertions, 38 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/hal_gm20b.c b/drivers/gpu/nvgpu/gm20b/hal_gm20b.c index 1fb5b2bc..a540de64 100644 --- a/drivers/gpu/nvgpu/gm20b/hal_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/hal_gm20b.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include "gk20a/fb_gk20a.h" | 19 | #include "gk20a/fb_gk20a.h" |
20 | #include "gk20a/fifo_gk20a.h" | 20 | #include "gk20a/fifo_gk20a.h" |
21 | #include "gk20a/therm_gk20a.h" | 21 | #include "gk20a/therm_gk20a.h" |
22 | #include "gk20a/mm_gk20a.h" | ||
23 | #include "gk20a/css_gr_gk20a.h" | 22 | #include "gk20a/css_gr_gk20a.h" |
24 | #include "gk20a/mc_gk20a.h" | 23 | #include "gk20a/mc_gk20a.h" |
25 | #include "gk20a/bus_gk20a.h" | 24 | #include "gk20a/bus_gk20a.h" |
@@ -43,8 +42,6 @@ | |||
43 | #include "bus_gm20b.h" | 42 | #include "bus_gm20b.h" |
44 | #include "hal_gm20b.h" | 43 | #include "hal_gm20b.h" |
45 | 44 | ||
46 | #include "common/linux/platform_gk20a_tegra.h" | ||
47 | |||
48 | #include <nvgpu/debug.h> | 45 | #include <nvgpu/debug.h> |
49 | #include <nvgpu/bug.h> | 46 | #include <nvgpu/bug.h> |
50 | #include <nvgpu/enabled.h> | 47 | #include <nvgpu/enabled.h> |
@@ -290,27 +287,6 @@ static const struct gpu_ops gm20b_ops = { | |||
290 | .get_netlist_name = gr_gm20b_get_netlist_name, | 287 | .get_netlist_name = gr_gm20b_get_netlist_name, |
291 | .is_fw_defined = gr_gm20b_is_firmware_defined, | 288 | .is_fw_defined = gr_gm20b_is_firmware_defined, |
292 | }, | 289 | }, |
293 | .mm = { | ||
294 | .support_sparse = gm20b_mm_support_sparse, | ||
295 | .gmmu_map = gk20a_locked_gmmu_map, | ||
296 | .gmmu_unmap = gk20a_locked_gmmu_unmap, | ||
297 | .vm_bind_channel = gk20a_vm_bind_channel, | ||
298 | .fb_flush = gk20a_mm_fb_flush, | ||
299 | .l2_invalidate = gk20a_mm_l2_invalidate, | ||
300 | .l2_flush = gk20a_mm_l2_flush, | ||
301 | .cbc_clean = gk20a_mm_cbc_clean, | ||
302 | .set_big_page_size = gm20b_mm_set_big_page_size, | ||
303 | .get_big_page_sizes = gm20b_mm_get_big_page_sizes, | ||
304 | .get_default_big_page_size = gm20b_mm_get_default_big_page_size, | ||
305 | .gpu_phys_addr = gm20b_gpu_phys_addr, | ||
306 | .get_physical_addr_bits = gk20a_mm_get_physical_addr_bits, | ||
307 | .get_mmu_levels = gk20a_mm_get_mmu_levels, | ||
308 | .init_pdb = gk20a_mm_init_pdb, | ||
309 | .init_mm_setup_hw = gk20a_init_mm_setup_hw, | ||
310 | .is_bar1_supported = gm20b_mm_is_bar1_supported, | ||
311 | .init_inst_block = gk20a_init_inst_block, | ||
312 | .mmu_fault_pending = gk20a_fifo_mmu_fault_pending, | ||
313 | }, | ||
314 | .therm = { | 290 | .therm = { |
315 | .init_therm_setup_hw = gm20b_init_therm_setup_hw, | 291 | .init_therm_setup_hw = gm20b_init_therm_setup_hw, |
316 | .elcg_init_idle_filters = gk20a_elcg_init_idle_filters, | 292 | .elcg_init_idle_filters = gk20a_elcg_init_idle_filters, |
@@ -422,7 +398,6 @@ int gm20b_init_hal(struct gk20a *g) | |||
422 | gops->clock_gating = gm20b_ops.clock_gating; | 398 | gops->clock_gating = gm20b_ops.clock_gating; |
423 | gops->fifo = gm20b_ops.fifo; | 399 | gops->fifo = gm20b_ops.fifo; |
424 | gops->gr_ctx = gm20b_ops.gr_ctx; | 400 | gops->gr_ctx = gm20b_ops.gr_ctx; |
425 | gops->mm = gm20b_ops.mm; | ||
426 | gops->therm = gm20b_ops.therm; | 401 | gops->therm = gm20b_ops.therm; |
427 | /* | 402 | /* |
428 | * clk must be assigned member by member | 403 | * clk must be assigned member by member |
@@ -487,6 +462,7 @@ int gm20b_init_hal(struct gk20a *g) | |||
487 | #endif | 462 | #endif |
488 | g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT; | 463 | g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT; |
489 | gm20b_init_gr(g); | 464 | gm20b_init_gr(g); |
465 | gm20b_init_mm(gops); | ||
490 | gm20b_init_pmu_ops(g); | 466 | gm20b_init_pmu_ops(g); |
491 | 467 | ||
492 | gm20b_init_uncompressed_kind_map(); | 468 | gm20b_init_uncompressed_kind_map(); |
diff --git a/drivers/gpu/nvgpu/gm20b/mm_gm20b.c b/drivers/gpu/nvgpu/gm20b/mm_gm20b.c index 05752f03..bbcd6314 100644 --- a/drivers/gpu/nvgpu/gm20b/mm_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/mm_gm20b.c | |||
@@ -20,7 +20,7 @@ | |||
20 | #include <nvgpu/hw/gm20b/hw_gmmu_gm20b.h> | 20 | #include <nvgpu/hw/gm20b/hw_gmmu_gm20b.h> |
21 | #include <nvgpu/hw/gm20b/hw_ram_gm20b.h> | 21 | #include <nvgpu/hw/gm20b/hw_ram_gm20b.h> |
22 | 22 | ||
23 | void gm20b_mm_set_big_page_size(struct gk20a *g, | 23 | static void gm20b_mm_set_big_page_size(struct gk20a *g, |
24 | struct nvgpu_mem *mem, int size) | 24 | struct nvgpu_mem *mem, int size) |
25 | { | 25 | { |
26 | u32 val; | 26 | u32 val; |
@@ -40,22 +40,22 @@ void gm20b_mm_set_big_page_size(struct gk20a *g, | |||
40 | gk20a_dbg_fn("done"); | 40 | gk20a_dbg_fn("done"); |
41 | } | 41 | } |
42 | 42 | ||
43 | u32 gm20b_mm_get_big_page_sizes(void) | 43 | static u32 gm20b_mm_get_big_page_sizes(void) |
44 | { | 44 | { |
45 | return SZ_64K | SZ_128K; | 45 | return SZ_64K | SZ_128K; |
46 | } | 46 | } |
47 | 47 | ||
48 | u32 gm20b_mm_get_default_big_page_size(void) | 48 | static u32 gm20b_mm_get_default_big_page_size(void) |
49 | { | 49 | { |
50 | return SZ_128K; | 50 | return SZ_128K; |
51 | } | 51 | } |
52 | 52 | ||
53 | bool gm20b_mm_support_sparse(struct gk20a *g) | 53 | static bool gm20b_mm_support_sparse(struct gk20a *g) |
54 | { | 54 | { |
55 | return true; | 55 | return true; |
56 | } | 56 | } |
57 | 57 | ||
58 | bool gm20b_mm_is_bar1_supported(struct gk20a *g) | 58 | static bool gm20b_mm_is_bar1_supported(struct gk20a *g) |
59 | { | 59 | { |
60 | return true; | 60 | return true; |
61 | } | 61 | } |
@@ -65,3 +65,26 @@ u64 gm20b_gpu_phys_addr(struct gk20a *g, | |||
65 | { | 65 | { |
66 | return phys; | 66 | return phys; |
67 | } | 67 | } |
68 | |||
69 | void gm20b_init_mm(struct gpu_ops *gops) | ||
70 | { | ||
71 | gops->mm.support_sparse = gm20b_mm_support_sparse; | ||
72 | gops->mm.gmmu_map = gk20a_locked_gmmu_map; | ||
73 | gops->mm.gmmu_unmap = gk20a_locked_gmmu_unmap; | ||
74 | gops->mm.vm_bind_channel = gk20a_vm_bind_channel; | ||
75 | gops->mm.fb_flush = gk20a_mm_fb_flush; | ||
76 | gops->mm.l2_invalidate = gk20a_mm_l2_invalidate; | ||
77 | gops->mm.l2_flush = gk20a_mm_l2_flush; | ||
78 | gops->mm.cbc_clean = gk20a_mm_cbc_clean; | ||
79 | gops->mm.set_big_page_size = gm20b_mm_set_big_page_size; | ||
80 | gops->mm.get_big_page_sizes = gm20b_mm_get_big_page_sizes; | ||
81 | gops->mm.get_default_big_page_size = gm20b_mm_get_default_big_page_size; | ||
82 | gops->mm.gpu_phys_addr = gm20b_gpu_phys_addr; | ||
83 | gops->mm.get_physical_addr_bits = gk20a_mm_get_physical_addr_bits; | ||
84 | gops->mm.get_mmu_levels = gk20a_mm_get_mmu_levels; | ||
85 | gops->mm.init_pdb = gk20a_mm_init_pdb; | ||
86 | gops->mm.init_mm_setup_hw = gk20a_init_mm_setup_hw; | ||
87 | gops->mm.is_bar1_supported = gm20b_mm_is_bar1_supported; | ||
88 | gops->mm.init_inst_block = gk20a_init_inst_block; | ||
89 | gops->mm.mmu_fault_pending = gk20a_fifo_mmu_fault_pending; | ||
90 | } | ||
diff --git a/drivers/gpu/nvgpu/gm20b/mm_gm20b.h b/drivers/gpu/nvgpu/gm20b/mm_gm20b.h index b1bb38a3..2bb29ea8 100644 --- a/drivers/gpu/nvgpu/gm20b/mm_gm20b.h +++ b/drivers/gpu/nvgpu/gm20b/mm_gm20b.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * GM20B GMMU | 2 | * GM20B GMMU |
3 | * | 3 | * |
4 | * Copyright (c) 2014-2017, NVIDIA CORPORATION. All rights reserved. | 4 | * Copyright (c) 2014, NVIDIA CORPORATION. All rights reserved. |
5 | * | 5 | * |
6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
@@ -20,13 +20,9 @@ struct gk20a; | |||
20 | #define PDE_ADDR_START(x, y) ((x) & ~((0x1UL << (y)) - 1)) | 20 | #define PDE_ADDR_START(x, y) ((x) & ~((0x1UL << (y)) - 1)) |
21 | #define PDE_ADDR_END(x, y) ((x) | ((0x1UL << (y)) - 1)) | 21 | #define PDE_ADDR_END(x, y) ((x) | ((0x1UL << (y)) - 1)) |
22 | 22 | ||
23 | void gm20b_mm_set_big_page_size(struct gk20a *g, | ||
24 | struct nvgpu_mem *mem, int size); | ||
25 | u32 gm20b_mm_get_big_page_sizes(void); | ||
26 | u32 gm20b_mm_get_default_big_page_size(void); | ||
27 | bool gm20b_mm_support_sparse(struct gk20a *g); | ||
28 | bool gm20b_mm_is_bar1_supported(struct gk20a *g); | ||
29 | int gm20b_mm_mmu_vpr_info_fetch(struct gk20a *g); | ||
30 | u64 gm20b_gpu_phys_addr(struct gk20a *g, | 23 | u64 gm20b_gpu_phys_addr(struct gk20a *g, |
31 | struct nvgpu_gmmu_attrs *attrs, u64 phys); | 24 | struct nvgpu_gmmu_attrs *attrs, u64 phys); |
25 | |||
26 | void gm20b_init_mm(struct gpu_ops *gops); | ||
27 | int gm20b_mm_mmu_vpr_info_fetch(struct gk20a *g); | ||
32 | #endif | 28 | #endif |