diff options
author | Lakshmanan M <lm@nvidia.com> | 2016-06-29 06:36:39 -0400 |
---|---|---|
committer | Vijayakumar Subbu <vsubbu@nvidia.com> | 2016-07-20 06:09:28 -0400 |
commit | 89aecd1202b49727e940069f2a6feb5c3cf4c927 (patch) | |
tree | 8a0d3a493b389167ce1d93e55f23e114ec2cbd38 /drivers/gpu/nvgpu/gk20a/fifo_gk20a.c | |
parent | f6ebdc5f2916706f7a61983567420e0985faeeb1 (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.c | 27 |
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 | ||
168 | u32 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 | |||
168 | u32 gk20a_fifo_get_gr_runlist_id(struct gk20a *g) | 195 | u32 gk20a_fifo_get_gr_runlist_id(struct gk20a *g) |
169 | { | 196 | { |
170 | u32 gr_engine_cnt = 0; | 197 | u32 gr_engine_cnt = 0; |