summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
diff options
context:
space:
mode:
authorLakshmanan M <lm@nvidia.com>2016-06-29 06:36:39 -0400
committerVijayakumar Subbu <vsubbu@nvidia.com>2016-07-20 06:09:28 -0400
commit89aecd1202b49727e940069f2a6feb5c3cf4c927 (patch)
tree8a0d3a493b389167ce1d93e55f23e114ec2cbd38 /drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
parentf6ebdc5f2916706f7a61983567420e0985faeeb1 (diff)
gpu: nvgpu: Add nvgpu infra to allow kernel to create privileged CE channels
Added interface to allow kernel to create privileged CE channels for page migration and clearing support between sysmem and videmem. JIRA DNVGPU-53 Change-Id: I3e18d18403809c9e64fa45d40b6c4e3844992506 Signed-off-by: Lakshmanan M <lm@nvidia.com> Reviewed-on: http://git-master/r/1173085 GVS: Gerrit_Virtual_Submit Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/fifo_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/fifo_gk20a.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
index 5133f86a..3dd7cb02 100644
--- a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
@@ -165,6 +165,33 @@ u32 gk20a_fifo_get_all_ce_engine_reset_mask(struct gk20a *g)
165 return reset_mask; 165 return reset_mask;
166} 166}
167 167
168u32 gk20a_fifo_get_fast_ce_runlist_id(struct gk20a *g)
169{
170 u32 ce_runlist_id = gk20a_fifo_get_gr_runlist_id(g);
171 u32 engine_enum = ENGINE_INVAL_GK20A;
172 struct fifo_gk20a *f = NULL;
173 u32 engine_id_idx;
174 struct fifo_engine_info_gk20a *engine_info;
175 u32 active_engine_id = 0;
176
177 if (!g)
178 return ce_runlist_id;
179
180 f = &g->fifo;
181
182 for (engine_id_idx = 0; engine_id_idx < f->num_engines; ++engine_id_idx) {
183 active_engine_id = f->active_engines_list[engine_id_idx];
184 engine_info = &f->engine_info[active_engine_id];
185 engine_enum = engine_info->engine_enum;
186
187 /* selecet last available ASYNC_CE if available */
188 if (engine_enum == ENGINE_ASYNC_CE_GK20A)
189 ce_runlist_id = engine_info->runlist_id;
190 }
191
192 return ce_runlist_id;
193}
194
168u32 gk20a_fifo_get_gr_runlist_id(struct gk20a *g) 195u32 gk20a_fifo_get_gr_runlist_id(struct gk20a *g)
169{ 196{
170 u32 gr_engine_cnt = 0; 197 u32 gr_engine_cnt = 0;