summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/fifo_gk20a.h
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2017-09-13 08:41:52 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-09-15 15:48:20 -0400
commit460951ed092aad787bacd0ebb0646b799d3463a1 (patch)
treeb7fae8084b76106d77a8af6efea470e595175f17 /drivers/gpu/nvgpu/gk20a/fifo_gk20a.h
parent7d6d0405311337456f50d6fa032963c18d2c9f9f (diff)
gpu: nvgpu: fix TSG enable sequence
Due to a h/w bug in Maxwell and Pascal we first need to enable all channels with NEXT and CTX_RELOAD set in a TSG, and then rest of the channels should be enabled Add this sequence to gk20a_tsg_enable() Add new APIs to enable/disable scheduling of TSG runlist gk20a_fifo_enable_tsg_sched() gk20a_fifo_disble_tsg_sched() Add new APIs to check if channel has NEXT or CTX_RELOAD set gk20a_fifo_channel_status_is_next() gk20a_fifo_channel_status_is_ctx_reload() Bug 1739362 Change-Id: I4891cbd7f22ebc1e0bf32c52801002cdc259dbe1 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1560636 Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Seshendra Gadagottu <sgadagottu@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/fifo_gk20a.h')
-rw-r--r--drivers/gpu/nvgpu/gk20a/fifo_gk20a.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.h b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.h
index d5b686f0..70c70931 100644
--- a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.h
@@ -248,6 +248,9 @@ int gk20a_fifo_disable_engine_activity(struct gk20a *g,
248 bool wait_for_idle); 248 bool wait_for_idle);
249int gk20a_fifo_disable_all_engine_activity(struct gk20a *g, 249int gk20a_fifo_disable_all_engine_activity(struct gk20a *g,
250 bool wait_for_idle); 250 bool wait_for_idle);
251void gk20a_fifo_enable_tsg_sched(struct gk20a *g, struct tsg_gk20a *tsg);
252void gk20a_fifo_disable_tsg_sched(struct gk20a *g, struct tsg_gk20a *tsg);
253
251u32 gk20a_fifo_engines_on_ch(struct gk20a *g, u32 chid); 254u32 gk20a_fifo_engines_on_ch(struct gk20a *g, u32 chid);
252 255
253int gk20a_fifo_reschedule_runlist(struct gk20a *g, u32 runlist_id); 256int gk20a_fifo_reschedule_runlist(struct gk20a *g, u32 runlist_id);
@@ -362,6 +365,9 @@ const char *gk20a_decode_pbdma_chan_eng_ctx_status(u32 index);
362void gk20a_fifo_enable_channel(struct channel_gk20a *ch); 365void gk20a_fifo_enable_channel(struct channel_gk20a *ch);
363void gk20a_fifo_disable_channel(struct channel_gk20a *ch); 366void gk20a_fifo_disable_channel(struct channel_gk20a *ch);
364 367
368bool gk20a_fifo_channel_status_is_next(struct gk20a *g, u32 chid);
369bool gk20a_fifo_channel_status_is_ctx_reload(struct gk20a *g, u32 chid);
370
365struct channel_gk20a *gk20a_refch_from_inst_ptr(struct gk20a *g, u64 inst_ptr); 371struct channel_gk20a *gk20a_refch_from_inst_ptr(struct gk20a *g, u64 inst_ptr);
366void gk20a_fifo_channel_unbind(struct channel_gk20a *ch_gk20a); 372void gk20a_fifo_channel_unbind(struct channel_gk20a *ch_gk20a);
367 373