diff options
author | Sachit Kadle <skadle@nvidia.com> | 2016-08-22 21:06:30 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2016-10-20 11:14:04 -0400 |
commit | 63e8592e06939e20c7b9e56b430353ebbee31ad6 (patch) | |
tree | b91247eebf886f4e987d38eb4069aceace284ecf /drivers/gpu/nvgpu/gk20a/channel_gk20a.h | |
parent | 3c2656c8c6ebf7cef7376d3a28451249643121c4 (diff) |
gpu: nvgpu: use inplace allocation in sync framework
This change is the first of a series of changes to
support the usage of pre-allocated job tracking resources
in the submit path. With this change, we still maintain a
dynamically-allocated joblist, but make the necessary changes
in the channel_sync & fence framework to use in-place
allocations. Specifically, we:
1) Update channel sync framework routines to take in
pre-allocated priv_cmd_entry(s) & gk20a_fence(s) rather
than dynamically allocating themselves
2) Move allocation of priv_cmd_entry(s) & gk20a_fence(s)
to gk20a_submit_prepare_syncs
3) Modify fence framework to have seperate allocation
and init APIs. We expose allocation as a seperate API, so
the client can allocate the object before passing it into
the channel sync framework.
4) Fix clean_up logic in channel sync framework
Bug 1795076
Change-Id: I96db457683cd207fd029c31c45f548f98055e844
Signed-off-by: Sachit Kadle <skadle@nvidia.com>
Reviewed-on: http://git-master/r/1206725
(cherry picked from commit 9d196fd10db6c2f934c2a53b1fc0500eb4626624)
Reviewed-on: http://git-master/r/1223933
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/channel_gk20a.h')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/channel_gk20a.h | 2 |
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 f6571b6f..0d8746b8 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h | |||
@@ -218,7 +218,7 @@ void gk20a_channel_abort_clean_up(struct channel_gk20a *ch); | |||
218 | void gk20a_set_error_notifier(struct channel_gk20a *ch, __u32 error); | 218 | void gk20a_set_error_notifier(struct channel_gk20a *ch, __u32 error); |
219 | void gk20a_channel_semaphore_wakeup(struct gk20a *g, bool post_events); | 219 | void gk20a_channel_semaphore_wakeup(struct gk20a *g, bool post_events); |
220 | int gk20a_channel_alloc_priv_cmdbuf(struct channel_gk20a *c, u32 size, | 220 | int gk20a_channel_alloc_priv_cmdbuf(struct channel_gk20a *c, u32 size, |
221 | struct priv_cmd_entry **entry); | 221 | struct priv_cmd_entry *entry); |
222 | int gk20a_free_priv_cmdbuf(struct channel_gk20a *c, struct priv_cmd_entry *e); | 222 | int gk20a_free_priv_cmdbuf(struct channel_gk20a *c, struct priv_cmd_entry *e); |
223 | 223 | ||
224 | int gk20a_enable_channel_tsg(struct gk20a *g, struct channel_gk20a *ch); | 224 | int gk20a_enable_channel_tsg(struct gk20a *g, struct channel_gk20a *ch); |