diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b')
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/fifo_gv11b.c | 8 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/fifo_gv11b.h | 1 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/gv11b.c | 1 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/hal_gv11b.c | 1 |
4 files changed, 10 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c index 30e03092..f00e806f 100644 --- a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c | |||
@@ -664,6 +664,13 @@ static u32 gv11b_fifo_get_runlists_mask(struct gk20a *g, u32 act_eng_bitmask, | |||
664 | return runlists_mask; | 664 | return runlists_mask; |
665 | } | 665 | } |
666 | 666 | ||
667 | int gv11b_fifo_reschedule_runlist(struct channel_gk20a *ch, bool preempt_next) | ||
668 | { | ||
669 | /* gv11b allows multiple outstanding preempts, | ||
670 | so always preempt next for best reschedule effect */ | ||
671 | return nvgpu_fifo_reschedule_runlist(ch, true, false); | ||
672 | } | ||
673 | |||
667 | static void gv11b_fifo_issue_runlist_preempt(struct gk20a *g, | 674 | static void gv11b_fifo_issue_runlist_preempt(struct gk20a *g, |
668 | u32 runlists_mask) | 675 | u32 runlists_mask) |
669 | { | 676 | { |
@@ -842,7 +849,6 @@ int gv11b_fifo_preempt_tsg(struct gk20a *g, u32 tsgid) | |||
842 | return ret; | 849 | return ret; |
843 | } | 850 | } |
844 | 851 | ||
845 | |||
846 | static int gv11b_fifo_preempt_runlists(struct gk20a *g, u32 runlists_mask) | 852 | static int gv11b_fifo_preempt_runlists(struct gk20a *g, u32 runlists_mask) |
847 | { | 853 | { |
848 | int ret = 0; | 854 | int ret = 0; |
diff --git a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.h b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.h index 3f58f927..1ae3c93e 100644 --- a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.h +++ b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.h | |||
@@ -76,6 +76,7 @@ void gv11b_dump_channel_status_ramfc(struct gk20a *g, | |||
76 | void gv11b_dump_eng_status(struct gk20a *g, | 76 | void gv11b_dump_eng_status(struct gk20a *g, |
77 | struct gk20a_debug_output *o); | 77 | struct gk20a_debug_output *o); |
78 | u32 gv11b_fifo_intr_0_error_mask(struct gk20a *g); | 78 | u32 gv11b_fifo_intr_0_error_mask(struct gk20a *g); |
79 | int gv11b_fifo_reschedule_runlist(struct channel_gk20a *ch, bool preempt_next); | ||
79 | int gv11b_fifo_is_preempt_pending(struct gk20a *g, u32 id, | 80 | int gv11b_fifo_is_preempt_pending(struct gk20a *g, u32 id, |
80 | unsigned int id_type, unsigned int timeout_rc_type); | 81 | unsigned int id_type, unsigned int timeout_rc_type); |
81 | int gv11b_fifo_preempt_channel(struct gk20a *g, u32 chid); | 82 | int gv11b_fifo_preempt_channel(struct gk20a *g, u32 chid); |
diff --git a/drivers/gpu/nvgpu/gv11b/gv11b.c b/drivers/gpu/nvgpu/gv11b/gv11b.c index c1ad7944..09fe9a45 100644 --- a/drivers/gpu/nvgpu/gv11b/gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/gv11b.c | |||
@@ -154,6 +154,7 @@ int gv11b_init_gpu_characteristics(struct gk20a *g) | |||
154 | __nvgpu_set_enabled(g, NVGPU_SUPPORT_TSG_SUBCONTEXTS, true); | 154 | __nvgpu_set_enabled(g, NVGPU_SUPPORT_TSG_SUBCONTEXTS, true); |
155 | __nvgpu_set_enabled(g, NVGPU_SUPPORT_IO_COHERENCE, true); | 155 | __nvgpu_set_enabled(g, NVGPU_SUPPORT_IO_COHERENCE, true); |
156 | __nvgpu_set_enabled(g, NVGPU_SUPPORT_SCG, true); | 156 | __nvgpu_set_enabled(g, NVGPU_SUPPORT_SCG, true); |
157 | __nvgpu_set_enabled(g, NVGPU_SUPPORT_RESCHEDULE_RUNLIST, true); | ||
157 | __nvgpu_set_enabled(g, NVGPU_SUPPORT_SYNCPOINT_ADDRESS, true); | 158 | __nvgpu_set_enabled(g, NVGPU_SUPPORT_SYNCPOINT_ADDRESS, true); |
158 | __nvgpu_set_enabled(g, NVGPU_SUPPORT_USER_SYNCPOINT, true); | 159 | __nvgpu_set_enabled(g, NVGPU_SUPPORT_USER_SYNCPOINT, true); |
159 | 160 | ||
diff --git a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c index 290a9452..ff779075 100644 --- a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c | |||
@@ -503,6 +503,7 @@ static const struct gpu_ops gv11b_ops = { | |||
503 | .tsg_verify_channel_status = gk20a_fifo_tsg_unbind_channel_verify_status, | 503 | .tsg_verify_channel_status = gk20a_fifo_tsg_unbind_channel_verify_status, |
504 | .tsg_verify_status_ctx_reload = gm20b_fifo_tsg_verify_status_ctx_reload, | 504 | .tsg_verify_status_ctx_reload = gm20b_fifo_tsg_verify_status_ctx_reload, |
505 | .tsg_verify_status_faulted = gv11b_fifo_tsg_verify_status_faulted, | 505 | .tsg_verify_status_faulted = gv11b_fifo_tsg_verify_status_faulted, |
506 | .reschedule_runlist = gv11b_fifo_reschedule_runlist, | ||
506 | .update_runlist = gk20a_fifo_update_runlist, | 507 | .update_runlist = gk20a_fifo_update_runlist, |
507 | .trigger_mmu_fault = NULL, | 508 | .trigger_mmu_fault = NULL, |
508 | .get_mmu_fault_info = NULL, | 509 | .get_mmu_fault_info = NULL, |