diff options
author | seshendra Gadagottu <sgadagottu@nvidia.com> | 2016-07-27 20:06:36 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2016-10-11 12:16:03 -0400 |
commit | fda4ddfa79f3a78becfe44fd558974bd274c03a9 (patch) | |
tree | 55d7999d7af7040ed50121fa6fa70fddc11b0887 /drivers/gpu/nvgpu/gk20a/mm_gk20a.c | |
parent | bb5fd16c67287e53db5165a974ea15ec3be09fe9 (diff) |
gpu: nvgpu: userd allocation from sysmem
When bar1 memory is not supported then userd will be
allocated from sysmem.
Functions gp_get and gp_put are updated accordingly.
JIRA GV11B-1
Change-Id: Ia895712a110f6cca26474228141488f5f8ace756
Signed-off-by: seshendra Gadagottu <sgadagottu@nvidia.com>
Reviewed-on: http://git-master/r/1225384
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/mm_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c index a84d8ff0..570a3708 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c | |||
@@ -797,7 +797,10 @@ static void gk20a_remove_mm_support(struct mm_gk20a *mm) | |||
797 | 797 | ||
798 | if (g->ops.mm.remove_bar2_vm) | 798 | if (g->ops.mm.remove_bar2_vm) |
799 | g->ops.mm.remove_bar2_vm(g); | 799 | g->ops.mm.remove_bar2_vm(g); |
800 | gk20a_remove_vm(&mm->bar1.vm, &mm->bar1.inst_block); | 800 | |
801 | if (g->ops.mm.is_bar1_supported(g)) | ||
802 | gk20a_remove_vm(&mm->bar1.vm, &mm->bar1.inst_block); | ||
803 | |||
801 | gk20a_remove_vm(&mm->pmu.vm, &mm->pmu.inst_block); | 804 | gk20a_remove_vm(&mm->pmu.vm, &mm->pmu.inst_block); |
802 | gk20a_free_inst_block(gk20a_from_mm(mm), &mm->hwpm.inst_block); | 805 | gk20a_free_inst_block(gk20a_from_mm(mm), &mm->hwpm.inst_block); |
803 | gk20a_vm_remove_support_nofree(&mm->cde.vm); | 806 | gk20a_vm_remove_support_nofree(&mm->cde.vm); |
@@ -1001,10 +1004,11 @@ int gk20a_init_mm_setup_sw(struct gk20a *g) | |||
1001 | if (err) | 1004 | if (err) |
1002 | return err; | 1005 | return err; |
1003 | 1006 | ||
1004 | err = gk20a_init_bar1_vm(mm); | 1007 | if (g->ops.mm.is_bar1_supported(g)) { |
1005 | if (err) | 1008 | err = gk20a_init_bar1_vm(mm); |
1006 | return err; | 1009 | if (err) |
1007 | 1010 | return err; | |
1011 | } | ||
1008 | if (g->ops.mm.init_bar2_vm) { | 1012 | if (g->ops.mm.init_bar2_vm) { |
1009 | err = g->ops.mm.init_bar2_vm(g); | 1013 | err = g->ops.mm.init_bar2_vm(g); |
1010 | if (err) | 1014 | if (err) |
@@ -1055,7 +1059,8 @@ int gk20a_init_mm_setup_hw(struct gk20a *g) | |||
1055 | g->ops.mm.get_iova_addr(g, g->mm.sysmem_flush.sgt->sgl, 0) | 1059 | g->ops.mm.get_iova_addr(g, g->mm.sysmem_flush.sgt->sgl, 0) |
1056 | >> 8); | 1060 | >> 8); |
1057 | 1061 | ||
1058 | g->ops.mm.bar1_bind(g, &mm->bar1.inst_block); | 1062 | if (g->ops.mm.bar1_bind) |
1063 | g->ops.mm.bar1_bind(g, &mm->bar1.inst_block); | ||
1059 | 1064 | ||
1060 | if (g->ops.mm.init_bar2_mm_hw_setup) { | 1065 | if (g->ops.mm.init_bar2_mm_hw_setup) { |
1061 | err = g->ops.mm.init_bar2_mm_hw_setup(g); | 1066 | err = g->ops.mm.init_bar2_mm_hw_setup(g); |
@@ -5249,6 +5254,11 @@ clean_up: | |||
5249 | return err; | 5254 | return err; |
5250 | } | 5255 | } |
5251 | 5256 | ||
5257 | static bool gk20a_mm_is_bar1_supported(struct gk20a *g) | ||
5258 | { | ||
5259 | return true; | ||
5260 | } | ||
5261 | |||
5252 | #ifdef CONFIG_DEBUG_FS | 5262 | #ifdef CONFIG_DEBUG_FS |
5253 | void gk20a_mm_debugfs_init(struct device *dev) | 5263 | void gk20a_mm_debugfs_init(struct device *dev) |
5254 | { | 5264 | { |
@@ -5284,4 +5294,5 @@ void gk20a_init_mm(struct gpu_ops *gops) | |||
5284 | gops->mm.init_pdb = gk20a_mm_init_pdb; | 5294 | gops->mm.init_pdb = gk20a_mm_init_pdb; |
5285 | gops->mm.init_mm_setup_hw = gk20a_init_mm_setup_hw; | 5295 | gops->mm.init_mm_setup_hw = gk20a_init_mm_setup_hw; |
5286 | gops->mm.bar1_bind = gk20a_mm_bar1_bind; | 5296 | gops->mm.bar1_bind = gk20a_mm_bar1_bind; |
5297 | gops->mm.is_bar1_supported = gk20a_mm_is_bar1_supported; | ||
5287 | } | 5298 | } |