diff options
author | Terje Bergstrom <tbergstrom@nvidia.com> | 2016-03-31 14:13:42 -0400 |
---|---|---|
committer | Terje Bergstrom <tbergstrom@nvidia.com> | 2016-04-15 11:50:34 -0400 |
commit | 7d8e2193893454bc8e05543c956fab32b8eed54b (patch) | |
tree | afb73b81611136fd0411e17995532d6d22b0499f /drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |
parent | 6839341bf8ffafa115cfc0427bba694ee1d131f3 (diff) |
gpu: nvgpu: Use sysmem aperture for SoC memory
In Tegra GPU, SoC memory has to be accessed as vidmem. In discrete GPU, it
has to be accessed as sysmem.
Change-Id: I4efe71b54a9a32f0bf1f02ec4016ed74405a14c5
Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com>
Reviewed-on: http://git-master/r/1120468
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gr_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c index 51a61de3..734552a1 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |||
@@ -739,7 +739,9 @@ static int gr_gk20a_fecs_ctx_bind_channel(struct gk20a *g, | |||
739 | (struct fecs_method_op_gk20a) { | 739 | (struct fecs_method_op_gk20a) { |
740 | .method.addr = gr_fecs_method_push_adr_bind_pointer_v(), | 740 | .method.addr = gr_fecs_method_push_adr_bind_pointer_v(), |
741 | .method.data = (gr_fecs_current_ctx_ptr_f(inst_base_ptr) | | 741 | .method.data = (gr_fecs_current_ctx_ptr_f(inst_base_ptr) | |
742 | gr_fecs_current_ctx_target_vid_mem_f() | | 742 | (g->mm.vidmem_is_vidmem ? |
743 | gr_fecs_current_ctx_target_sys_mem_ncoh_f() : | ||
744 | gr_fecs_current_ctx_target_vid_mem_f()) | | ||
743 | gr_fecs_current_ctx_valid_f(1)), | 745 | gr_fecs_current_ctx_valid_f(1)), |
744 | .mailbox = { .id = 0, .data = 0, | 746 | .mailbox = { .id = 0, .data = 0, |
745 | .clr = 0x30, | 747 | .clr = 0x30, |
@@ -1421,7 +1423,9 @@ static int gr_gk20a_fecs_ctx_image_save(struct channel_gk20a *c, u32 save_type) | |||
1421 | (struct fecs_method_op_gk20a) { | 1423 | (struct fecs_method_op_gk20a) { |
1422 | .method.addr = save_type, | 1424 | .method.addr = save_type, |
1423 | .method.data = (gr_fecs_current_ctx_ptr_f(inst_base_ptr) | | 1425 | .method.data = (gr_fecs_current_ctx_ptr_f(inst_base_ptr) | |
1424 | gr_fecs_current_ctx_target_vid_mem_f() | | 1426 | (g->mm.vidmem_is_vidmem ? |
1427 | gr_fecs_current_ctx_target_sys_mem_ncoh_f() : | ||
1428 | gr_fecs_current_ctx_target_vid_mem_f()) | | ||
1425 | gr_fecs_current_ctx_valid_f(1)), | 1429 | gr_fecs_current_ctx_valid_f(1)), |
1426 | .mailbox = {.id = 0, .data = 0, .clr = 3, .ret = NULL, | 1430 | .mailbox = {.id = 0, .data = 0, .clr = 3, .ret = NULL, |
1427 | .ok = 1, .fail = 2, | 1431 | .ok = 1, .fail = 2, |
@@ -1885,7 +1889,9 @@ int gr_gk20a_load_golden_ctx_image(struct gk20a *g, | |||
1885 | (struct fecs_method_op_gk20a) { | 1889 | (struct fecs_method_op_gk20a) { |
1886 | .method.data = | 1890 | .method.data = |
1887 | (gr_fecs_current_ctx_ptr_f(inst_base_ptr) | | 1891 | (gr_fecs_current_ctx_ptr_f(inst_base_ptr) | |
1888 | gr_fecs_current_ctx_target_vid_mem_f() | | 1892 | (g->mm.vidmem_is_vidmem ? |
1893 | gr_fecs_current_ctx_target_sys_mem_ncoh_f() : | ||
1894 | gr_fecs_current_ctx_target_vid_mem_f()) | | ||
1889 | gr_fecs_current_ctx_valid_f(1)), | 1895 | gr_fecs_current_ctx_valid_f(1)), |
1890 | .method.addr = | 1896 | .method.addr = |
1891 | gr_fecs_method_push_adr_restore_golden_v(), | 1897 | gr_fecs_method_push_adr_restore_golden_v(), |
@@ -4291,7 +4297,9 @@ static int gk20a_init_gr_setup_hw(struct gk20a *g) | |||
4291 | addr >>= fb_mmu_debug_wr_addr_alignment_v(); | 4297 | addr >>= fb_mmu_debug_wr_addr_alignment_v(); |
4292 | 4298 | ||
4293 | gk20a_writel(g, fb_mmu_debug_wr_r(), | 4299 | gk20a_writel(g, fb_mmu_debug_wr_r(), |
4294 | fb_mmu_debug_wr_aperture_vid_mem_f() | | 4300 | (g->mm.vidmem_is_vidmem ? |
4301 | fb_mmu_debug_wr_aperture_sys_mem_ncoh_f() : | ||
4302 | fb_mmu_debug_wr_aperture_vid_mem_f()) | | ||
4295 | fb_mmu_debug_wr_vol_false_f() | | 4303 | fb_mmu_debug_wr_vol_false_f() | |
4296 | fb_mmu_debug_wr_addr_f(addr)); | 4304 | fb_mmu_debug_wr_addr_f(addr)); |
4297 | 4305 | ||
@@ -4299,7 +4307,9 @@ static int gk20a_init_gr_setup_hw(struct gk20a *g) | |||
4299 | addr >>= fb_mmu_debug_rd_addr_alignment_v(); | 4307 | addr >>= fb_mmu_debug_rd_addr_alignment_v(); |
4300 | 4308 | ||
4301 | gk20a_writel(g, fb_mmu_debug_rd_r(), | 4309 | gk20a_writel(g, fb_mmu_debug_rd_r(), |
4302 | fb_mmu_debug_rd_aperture_vid_mem_f() | | 4310 | (g->mm.vidmem_is_vidmem ? |
4311 | fb_mmu_debug_wr_aperture_sys_mem_ncoh_f() : | ||
4312 | fb_mmu_debug_rd_aperture_vid_mem_f()) | | ||
4303 | fb_mmu_debug_rd_vol_false_f() | | 4313 | fb_mmu_debug_rd_vol_false_f() | |
4304 | fb_mmu_debug_rd_addr_f(addr)); | 4314 | fb_mmu_debug_rd_addr_f(addr)); |
4305 | 4315 | ||
@@ -5967,7 +5977,9 @@ int gr_gk20a_fecs_set_reglist_bind_inst(struct gk20a *g, phys_addr_t addr) | |||
5967 | .mailbox.id = 4, | 5977 | .mailbox.id = 4, |
5968 | .mailbox.data = (gr_fecs_current_ctx_ptr_f(addr >> 12) | | 5978 | .mailbox.data = (gr_fecs_current_ctx_ptr_f(addr >> 12) | |
5969 | gr_fecs_current_ctx_valid_f(1) | | 5979 | gr_fecs_current_ctx_valid_f(1) | |
5970 | gr_fecs_current_ctx_target_vid_mem_f()), | 5980 | (g->mm.vidmem_is_vidmem ? |
5981 | gr_fecs_current_ctx_target_sys_mem_ncoh_f() : | ||
5982 | gr_fecs_current_ctx_target_vid_mem_f())), | ||
5971 | .mailbox.clr = ~0, | 5983 | .mailbox.clr = ~0, |
5972 | .method.data = 1, | 5984 | .method.data = 1, |
5973 | .method.addr = gr_fecs_method_push_adr_set_reglist_bind_instance_v(), | 5985 | .method.addr = gr_fecs_method_push_adr_set_reglist_bind_instance_v(), |