diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2014-06-18 09:02:03 -0400 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2015-03-18 15:10:17 -0400 |
commit | ee66559a0b3b82b3dc9be684261ddd0954731ff5 (patch) | |
tree | 34156c1d4f3393a5a5fe945185b8548ae2427a07 /drivers/gpu/nvgpu/gk20a/tsg_gk20a.h | |
parent | b6466fbe07d28fcc1a2ea93715a1f88b48dd8550 (diff) |
gpu: nvgpu: add TSG support for engine context
All channels in a TSG need to share same engine context
i.e. pointer in RAMFC of all channels in a TSG must point
to same NV_RAMIN_GR_WFI_TARGET
To get this, add a pointer to gr_ctx inside TSG struct so
that TSG can maintain its own unique gr_ctx
Also, change the type of gr_ctx in a channel to pointer
variable so that if channel is part of TSG it can point
to TSG's gr_ctx otherwise it will point to its own gr_ctx
In gk20a_alloc_obj_ctx(), allocate gr_ctx as below :
1) If channel is not part of any TSG
- allocate its own gr_ctx buffer if it is already not allocated
2) If channel is part of TSG
- Check if TSG has already allocated gr_ctx (as part of TSG)
- If yes, channel's gr_ctx will point to that of TSG's
- If not, then it means channels is first to be bounded to
this TSG
- And in this case we will allocate new gr_ctx on TSG first
and then make channel's gr_ctx to point to this gr_ctx
Also, gr_ctx will be released as below ;
1) If channels is not part of TSG, then it will be released
when channels is closed
2) Otherwise, it will be released when TSG itself is closed
Bug 1470692
Change-Id: Id347217d5b462e0e972cd3d79d17795b37034a50
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: http://git-master/r/417065
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/tsg_gk20a.h')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/tsg_gk20a.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/tsg_gk20a.h b/drivers/gpu/nvgpu/gk20a/tsg_gk20a.h index 2530a4bd..63113b60 100644 --- a/drivers/gpu/nvgpu/gk20a/tsg_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/tsg_gk20a.h | |||
@@ -39,6 +39,10 @@ struct tsg_gk20a { | |||
39 | struct list_head ch_runnable_list; | 39 | struct list_head ch_runnable_list; |
40 | int num_runnable_channels; | 40 | int num_runnable_channels; |
41 | struct mutex ch_list_lock; | 41 | struct mutex ch_list_lock; |
42 | |||
43 | struct gr_ctx_desc *tsg_gr_ctx; | ||
44 | |||
45 | struct vm_gk20a *vm; | ||
42 | }; | 46 | }; |
43 | 47 | ||
44 | #endif /* __TSG_GK20A_H_ */ | 48 | #endif /* __TSG_GK20A_H_ */ |