summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
diff options
context:
space:
mode:
authorLauri Peltonen <lpeltonen@nvidia.com>2014-06-11 05:56:31 -0400
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:10:10 -0400
commitf575bc667649ff1a09aac8ecbe626fde8ea5f2f4 (patch)
treeaf8ef5bd572772e54a97ebfbdb7e693670468c59 /drivers/gpu/nvgpu/gk20a/channel_gk20a.h
parentae22cda010d26419476939fa46abf9345c412eff (diff)
gpu: nvgpu: Support semaphore sync when aborting jobs
When aborting jobs on channel error situations, we manually set the channel syncpoint's min == max in gk20a_disable_channel_no_update. Nvhost will notice this manual syncpoint increment, and will call back to gk20a_channel_update, which will clean up the job. With semaphore synchronization, we don't have anybody calling back to gk20a_channel_update, so we need to call it ourselves. Release job semaphores (the equivalent of set_min_eq_max) on gk20a_disable_channel_no_update, and if any semaphores were released, call gk20a_channel_update afterwards. Because we are actually calling gk20a_channel_update in some situations, gk20a_disable_channel_no_update is no longer an appropriate name for the function. Rename it to gk20a_channel_abort. Bug 1450122 Change-Id: I1267b099a5778041cbc8e91b7184844812145b93 Signed-off-by: Lauri Peltonen <lpeltonen@nvidia.com> Reviewed-on: http://git-master/r/422161 GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/channel_gk20a.h')
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
index 84983cc6..60437e66 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
@@ -153,7 +153,7 @@ bool gk20a_channel_update_and_check_timeout(struct channel_gk20a *ch,
153void gk20a_disable_channel(struct channel_gk20a *ch, 153void gk20a_disable_channel(struct channel_gk20a *ch,
154 bool wait_for_finish, 154 bool wait_for_finish,
155 unsigned long finish_timeout); 155 unsigned long finish_timeout);
156void gk20a_disable_channel_no_update(struct channel_gk20a *ch); 156void gk20a_channel_abort(struct channel_gk20a *ch);
157int gk20a_channel_finish(struct channel_gk20a *ch, unsigned long timeout); 157int gk20a_channel_finish(struct channel_gk20a *ch, unsigned long timeout);
158void gk20a_set_error_notifier(struct channel_gk20a *ch, __u32 error); 158void gk20a_set_error_notifier(struct channel_gk20a *ch, __u32 error);
159void gk20a_channel_semaphore_wakeup(struct gk20a *g); 159void gk20a_channel_semaphore_wakeup(struct gk20a *g);