diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b/fifo_gv11b.c')
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/fifo_gv11b.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c index d1bd7111..56012dd7 100644 --- a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c | |||
@@ -808,14 +808,16 @@ int gv11b_fifo_is_preempt_pending(struct gk20a *g, u32 id, | |||
808 | runlist_served_pbdmas = f->runlist_info[runlist_id].pbdma_bitmask; | 808 | runlist_served_pbdmas = f->runlist_info[runlist_id].pbdma_bitmask; |
809 | runlist_served_engines = f->runlist_info[runlist_id].eng_bitmask; | 809 | runlist_served_engines = f->runlist_info[runlist_id].eng_bitmask; |
810 | 810 | ||
811 | for_each_set_bit(pbdma_id, &runlist_served_pbdmas, f->num_pbdma) | 811 | for_each_set_bit(pbdma_id, &runlist_served_pbdmas, f->num_pbdma) { |
812 | ret |= gv11b_fifo_poll_pbdma_chan_status(g, tsgid, pbdma_id); | 812 | ret |= gv11b_fifo_poll_pbdma_chan_status(g, tsgid, pbdma_id); |
813 | } | ||
813 | 814 | ||
814 | f->runlist_info[runlist_id].reset_eng_bitmask = 0; | 815 | f->runlist_info[runlist_id].reset_eng_bitmask = 0; |
815 | 816 | ||
816 | for_each_set_bit(act_eng_id, &runlist_served_engines, f->max_engines) | 817 | for_each_set_bit(act_eng_id, &runlist_served_engines, f->max_engines) { |
817 | ret |= gv11b_fifo_poll_eng_ctx_status(g, tsgid, act_eng_id, | 818 | ret |= gv11b_fifo_poll_eng_ctx_status(g, tsgid, act_eng_id, |
818 | &f->runlist_info[runlist_id].reset_eng_bitmask); | 819 | &f->runlist_info[runlist_id].reset_eng_bitmask); |
820 | } | ||
819 | return ret; | 821 | return ret; |
820 | } | 822 | } |
821 | 823 | ||
@@ -1028,9 +1030,10 @@ void gv11b_fifo_teardown_ch_tsg(struct gk20a *g, u32 act_eng_bitmask, | |||
1028 | u32 num_runlists = 0; | 1030 | u32 num_runlists = 0; |
1029 | 1031 | ||
1030 | nvgpu_log_fn(g, "acquire runlist_lock for all runlists"); | 1032 | nvgpu_log_fn(g, "acquire runlist_lock for all runlists"); |
1031 | for (rlid = 0; rlid < g->fifo.max_runlists; rlid++) | 1033 | for (rlid = 0; rlid < g->fifo.max_runlists; rlid++) { |
1032 | nvgpu_mutex_acquire(&f->runlist_info[rlid]. | 1034 | nvgpu_mutex_acquire(&f->runlist_info[rlid]. |
1033 | runlist_lock); | 1035 | runlist_lock); |
1036 | } | ||
1034 | 1037 | ||
1035 | /* get runlist id and tsg */ | 1038 | /* get runlist id and tsg */ |
1036 | if (id_type == ID_TYPE_TSG) { | 1039 | if (id_type == ID_TYPE_TSG) { |
@@ -1206,9 +1209,10 @@ void gv11b_fifo_teardown_ch_tsg(struct gk20a *g, u32 act_eng_bitmask, | |||
1206 | nvgpu_mutex_release(&f->runlist_info[runlist_id].runlist_lock); | 1209 | nvgpu_mutex_release(&f->runlist_info[runlist_id].runlist_lock); |
1207 | } else { | 1210 | } else { |
1208 | nvgpu_log_fn(g, "release runlist_lock for all runlists"); | 1211 | nvgpu_log_fn(g, "release runlist_lock for all runlists"); |
1209 | for (rlid = 0; rlid < g->fifo.max_runlists; rlid++) | 1212 | for (rlid = 0; rlid < g->fifo.max_runlists; rlid++) { |
1210 | nvgpu_mutex_release(&f->runlist_info[rlid]. | 1213 | nvgpu_mutex_release(&f->runlist_info[rlid]. |
1211 | runlist_lock); | 1214 | runlist_lock); |
1215 | } | ||
1212 | } | 1216 | } |
1213 | } | 1217 | } |
1214 | 1218 | ||
@@ -1756,9 +1760,10 @@ void gv11b_fifo_init_eng_method_buffers(struct gk20a *g, | |||
1756 | break; | 1760 | break; |
1757 | } | 1761 | } |
1758 | if (err) { | 1762 | if (err) { |
1759 | for (i = (runque - 1); i >= 0; i--) | 1763 | for (i = (runque - 1); i >= 0; i--) { |
1760 | nvgpu_dma_unmap_free(vm, | 1764 | nvgpu_dma_unmap_free(vm, |
1761 | &tsg->eng_method_buffers[i]); | 1765 | &tsg->eng_method_buffers[i]); |
1766 | } | ||
1762 | 1767 | ||
1763 | nvgpu_kfree(g, tsg->eng_method_buffers); | 1768 | nvgpu_kfree(g, tsg->eng_method_buffers); |
1764 | tsg->eng_method_buffers = NULL; | 1769 | tsg->eng_method_buffers = NULL; |
@@ -1778,8 +1783,9 @@ void gv11b_fifo_deinit_eng_method_buffers(struct gk20a *g, | |||
1778 | if (tsg->eng_method_buffers == NULL) | 1783 | if (tsg->eng_method_buffers == NULL) |
1779 | return; | 1784 | return; |
1780 | 1785 | ||
1781 | for (runque = 0; runque < g->fifo.num_pbdma; runque++) | 1786 | for (runque = 0; runque < g->fifo.num_pbdma; runque++) { |
1782 | nvgpu_dma_unmap_free(vm, &tsg->eng_method_buffers[runque]); | 1787 | nvgpu_dma_unmap_free(vm, &tsg->eng_method_buffers[runque]); |
1788 | } | ||
1783 | 1789 | ||
1784 | nvgpu_kfree(g, tsg->eng_method_buffers); | 1790 | nvgpu_kfree(g, tsg->eng_method_buffers); |
1785 | tsg->eng_method_buffers = NULL; | 1791 | tsg->eng_method_buffers = NULL; |