summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv100
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2018-08-16 18:00:07 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2018-09-10 18:23:08 -0400
commit83efad7adb44647d37d98a57cbb6df48e356917d (patch)
treeeebbe2f831484d2e6ea90d027f0dc16d69f42114 /drivers/gpu/nvgpu/gv100
parenta02e1c1f0b012b743d4c1ba9c853057b4359107e (diff)
gpu: nvgpu: Move FB size query to FB
Vidmem size query was in mm_xxx.c. It involves reading a register from FB, so move the query to FB HAL. JIRA NVGPU-1063 Change-Id: I30dfd2c4fdcdd6c841f85aaab7431d52473759bd Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1801425 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gv100')
-rw-r--r--drivers/gpu/nvgpu/gv100/hal_gv100.c2
-rw-r--r--drivers/gpu/nvgpu/gv100/mm_gv100.c16
-rw-r--r--drivers/gpu/nvgpu/gv100/mm_gv100.h1
3 files changed, 1 insertions, 18 deletions
diff --git a/drivers/gpu/nvgpu/gv100/hal_gv100.c b/drivers/gpu/nvgpu/gv100/hal_gv100.c
index 589f6adf..4af237b0 100644
--- a/drivers/gpu/nvgpu/gv100/hal_gv100.c
+++ b/drivers/gpu/nvgpu/gv100/hal_gv100.c
@@ -510,6 +510,7 @@ static const struct gpu_ops gv100_ops = {
510 .is_fault_buf_enabled = gv11b_fb_is_fault_buf_enabled, 510 .is_fault_buf_enabled = gv11b_fb_is_fault_buf_enabled,
511 .fault_buf_set_state_hw = gv11b_fb_fault_buf_set_state_hw, 511 .fault_buf_set_state_hw = gv11b_fb_fault_buf_set_state_hw,
512 .fault_buf_configure_hw = gv11b_fb_fault_buf_configure_hw, 512 .fault_buf_configure_hw = gv11b_fb_fault_buf_configure_hw,
513 .get_vidmem_size = gv100_fb_get_vidmem_size,
513 }, 514 },
514 .clock_gating = { 515 .clock_gating = {
515 .slcg_bus_load_gating_prod = 516 .slcg_bus_load_gating_prod =
@@ -685,7 +686,6 @@ static const struct gpu_ops gv100_ops = {
685 .get_default_big_page_size = gp10b_mm_get_default_big_page_size, 686 .get_default_big_page_size = gp10b_mm_get_default_big_page_size,
686 .gpu_phys_addr = gv11b_gpu_phys_addr, 687 .gpu_phys_addr = gv11b_gpu_phys_addr,
687 .get_mmu_levels = gp10b_mm_get_mmu_levels, 688 .get_mmu_levels = gp10b_mm_get_mmu_levels,
688 .get_vidmem_size = gv100_mm_get_vidmem_size,
689 .init_pdb = gp10b_mm_init_pdb, 689 .init_pdb = gp10b_mm_init_pdb,
690 .init_mm_setup_hw = gv11b_init_mm_setup_hw, 690 .init_mm_setup_hw = gv11b_init_mm_setup_hw,
691 .is_bar1_supported = gv11b_mm_is_bar1_supported, 691 .is_bar1_supported = gv11b_mm_is_bar1_supported,
diff --git a/drivers/gpu/nvgpu/gv100/mm_gv100.c b/drivers/gpu/nvgpu/gv100/mm_gv100.c
index 38b876bf..77a0ac4d 100644
--- a/drivers/gpu/nvgpu/gv100/mm_gv100.c
+++ b/drivers/gpu/nvgpu/gv100/mm_gv100.c
@@ -28,22 +28,6 @@
28#include "gk20a/gk20a.h" 28#include "gk20a/gk20a.h"
29#include "gv100/mm_gv100.h" 29#include "gv100/mm_gv100.h"
30 30
31#include <nvgpu/hw/gv100/hw_fb_gv100.h>
32
33size_t gv100_mm_get_vidmem_size(struct gk20a *g)
34{
35 u32 range = gk20a_readl(g, fb_mmu_local_memory_range_r());
36 u32 mag = fb_mmu_local_memory_range_lower_mag_v(range);
37 u32 scale = fb_mmu_local_memory_range_lower_scale_v(range);
38 u32 ecc = fb_mmu_local_memory_range_ecc_mode_v(range);
39 size_t bytes = ((size_t)mag << scale) * SZ_1M;
40
41 if (ecc)
42 bytes = bytes / 16 * 15;
43
44 return bytes;
45}
46
47u32 gv100_mm_get_flush_retries(struct gk20a *g, enum nvgpu_flush_op op) 31u32 gv100_mm_get_flush_retries(struct gk20a *g, enum nvgpu_flush_op op)
48{ 32{
49 switch (op) { 33 switch (op) {
diff --git a/drivers/gpu/nvgpu/gv100/mm_gv100.h b/drivers/gpu/nvgpu/gv100/mm_gv100.h
index ea896503..535e868c 100644
--- a/drivers/gpu/nvgpu/gv100/mm_gv100.h
+++ b/drivers/gpu/nvgpu/gv100/mm_gv100.h
@@ -27,7 +27,6 @@
27 27
28struct gk20a; 28struct gk20a;
29 29
30size_t gv100_mm_get_vidmem_size(struct gk20a *g);
31u32 gv100_mm_get_flush_retries(struct gk20a *g, enum nvgpu_flush_op op); 30u32 gv100_mm_get_flush_retries(struct gk20a *g, enum nvgpu_flush_op op);
32 31
33#endif 32#endif