diff options
Diffstat (limited to 'drivers/gpu/nvgpu/common/mm')
-rw-r--r-- | drivers/gpu/nvgpu/common/mm/vm.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/drivers/gpu/nvgpu/common/mm/vm.c b/drivers/gpu/nvgpu/common/mm/vm.c index c3f6b79d..ebe8e381 100644 --- a/drivers/gpu/nvgpu/common/mm/vm.c +++ b/drivers/gpu/nvgpu/common/mm/vm.c | |||
@@ -874,12 +874,17 @@ struct nvgpu_mapped_buf *nvgpu_vm_map(struct vm_gk20a *vm, | |||
874 | */ | 874 | */ |
875 | if (comptags.needs_clear) { | 875 | if (comptags.needs_clear) { |
876 | if (g->ops.ltc.cbc_ctrl) { | 876 | if (g->ops.ltc.cbc_ctrl) { |
877 | g->ops.ltc.cbc_ctrl( | 877 | if (gk20a_comptags_start_clear(os_buf)) { |
878 | g, gk20a_cbc_op_clear, | 878 | err = g->ops.ltc.cbc_ctrl( |
879 | comptags.offset, | 879 | g, gk20a_cbc_op_clear, |
880 | (comptags.offset + | 880 | comptags.offset, |
881 | comptags.lines - 1)); | 881 | (comptags.offset + |
882 | gk20a_mark_comptags_cleared(os_buf); | 882 | comptags.lines - 1)); |
883 | gk20a_comptags_finish_clear( | ||
884 | os_buf, err == 0); | ||
885 | if (err) | ||
886 | goto clean_up; | ||
887 | } | ||
883 | } else { | 888 | } else { |
884 | /* | 889 | /* |
885 | * Cleared as part of gmmu map | 890 | * Cleared as part of gmmu map |
@@ -920,6 +925,9 @@ struct nvgpu_mapped_buf *nvgpu_vm_map(struct vm_gk20a *vm, | |||
920 | goto clean_up; | 925 | goto clean_up; |
921 | } | 926 | } |
922 | 927 | ||
928 | if (clear_ctags) | ||
929 | clear_ctags = gk20a_comptags_start_clear(os_buf); | ||
930 | |||
923 | map_addr = g->ops.mm.gmmu_map(vm, | 931 | map_addr = g->ops.mm.gmmu_map(vm, |
924 | map_addr, | 932 | map_addr, |
925 | sgt, | 933 | sgt, |
@@ -935,14 +943,15 @@ struct nvgpu_mapped_buf *nvgpu_vm_map(struct vm_gk20a *vm, | |||
935 | false, | 943 | false, |
936 | batch, | 944 | batch, |
937 | aperture); | 945 | aperture); |
946 | |||
947 | if (clear_ctags) | ||
948 | gk20a_comptags_finish_clear(os_buf, map_addr != 0); | ||
949 | |||
938 | if (!map_addr) { | 950 | if (!map_addr) { |
939 | err = -ENOMEM; | 951 | err = -ENOMEM; |
940 | goto clean_up; | 952 | goto clean_up; |
941 | } | 953 | } |
942 | 954 | ||
943 | if (clear_ctags) | ||
944 | gk20a_mark_comptags_cleared(os_buf); | ||
945 | |||
946 | nvgpu_init_list_node(&mapped_buffer->buffer_list); | 955 | nvgpu_init_list_node(&mapped_buffer->buffer_list); |
947 | nvgpu_ref_init(&mapped_buffer->ref); | 956 | nvgpu_ref_init(&mapped_buffer->ref); |
948 | mapped_buffer->addr = map_addr; | 957 | mapped_buffer->addr = map_addr; |