summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSourab Gupta <sourabg@nvidia.com>2017-12-27 03:54:11 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2018-03-29 21:53:53 -0400
commit5c27ac91fdde693c6f57100dc7fc6be75cc6982a (patch)
tree58a3383ed8fbbcbee3e85f37a460625e6ea97d66
parentaa7ee8dac0cb29ee3244c7eef77eac8e7fc34dba (diff)
gpu: nvgpu: make fifo/ch functions called by RM Server global
The patch declares globally few channel/fifo HAL functions required for QNX code compilation (as they are being referred elsewhere in QNX code). This is required as a part of bringing in the nvgpu Channel/FIFO HAL into QNX. Jira VQRM-3058 Change-Id: Ia176535b64de981d2f7ddb20f62015a0da74fd2a Signed-off-by: Sourab Gupta <sourabg@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1662411 GVS: Gerrit_Virtual_Submit Tested-by: Richard Zhao <rizhao@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.c2
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.h3
-rw-r--r--drivers/gpu/nvgpu/gk20a/fifo_gk20a.c8
-rw-r--r--drivers/gpu/nvgpu/gk20a/fifo_gk20a.h11
4 files changed, 19 insertions, 5 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
index 8b144864..bd4e2ff8 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
@@ -256,7 +256,7 @@ void gk20a_disable_channel(struct channel_gk20a *ch)
256 channel_gk20a_update_runlist(ch, false); 256 channel_gk20a_update_runlist(ch, false);
257} 257}
258 258
259static void gk20a_wait_until_counter_is_N( 259void gk20a_wait_until_counter_is_N(
260 struct channel_gk20a *ch, nvgpu_atomic_t *counter, int wait_value, 260 struct channel_gk20a *ch, nvgpu_atomic_t *counter, int wait_value,
261 struct nvgpu_cond *c, const char *caller, const char *counter_name) 261 struct nvgpu_cond *c, const char *caller, const char *counter_name)
262{ 262{
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
index 473248ec..f2cb2ab8 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
@@ -340,6 +340,9 @@ int gk20a_channel_get_timescale_from_timeslice(struct gk20a *g,
340 unsigned int timeslice_period, 340 unsigned int timeslice_period,
341 unsigned int *__timeslice_timeout, unsigned int *__timeslice_scale); 341 unsigned int *__timeslice_timeout, unsigned int *__timeslice_scale);
342 342
343void gk20a_wait_until_counter_is_N(
344 struct channel_gk20a *ch, nvgpu_atomic_t *counter, int wait_value,
345 struct nvgpu_cond *c, const char *caller, const char *counter_name);
343int channel_gk20a_alloc_job(struct channel_gk20a *c, 346int channel_gk20a_alloc_job(struct channel_gk20a *c,
344 struct channel_gk20a_job **job_out); 347 struct channel_gk20a_job **job_out);
345void channel_gk20a_free_job(struct channel_gk20a *c, 348void channel_gk20a_free_job(struct channel_gk20a *c,
diff --git a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
index 5bd4dc57..6a7afad7 100644
--- a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
@@ -862,7 +862,7 @@ int gk20a_init_fifo_reset_enable_hw(struct gk20a *g)
862 return 0; 862 return 0;
863} 863}
864 864
865static int gk20a_init_fifo_setup_sw(struct gk20a *g) 865int gk20a_init_fifo_setup_sw(struct gk20a *g)
866{ 866{
867 struct fifo_gk20a *f = &g->fifo; 867 struct fifo_gk20a *f = &g->fifo;
868 unsigned int chid, i; 868 unsigned int chid, i;
@@ -2093,7 +2093,7 @@ u32 gk20a_fifo_get_failing_engine_data(struct gk20a *g,
2093 return active_engine_id; 2093 return active_engine_id;
2094} 2094}
2095 2095
2096static bool gk20a_fifo_check_ch_ctxsw_timeout(struct channel_gk20a *ch, 2096bool gk20a_fifo_check_ch_ctxsw_timeout(struct channel_gk20a *ch,
2097 bool *verbose, u32 *ms) 2097 bool *verbose, u32 *ms)
2098{ 2098{
2099 bool recover = false; 2099 bool recover = false;
@@ -2971,7 +2971,7 @@ static void gk20a_fifo_runlist_reset_engines(struct gk20a *g, u32 runlist_id)
2971 gk20a_fifo_recover(g, engines, ~(u32)0, false, false, true); 2971 gk20a_fifo_recover(g, engines, ~(u32)0, false, false, true);
2972} 2972}
2973 2973
2974static int gk20a_fifo_runlist_wait_pending(struct gk20a *g, u32 runlist_id) 2974int gk20a_fifo_runlist_wait_pending(struct gk20a *g, u32 runlist_id)
2975{ 2975{
2976 struct nvgpu_timeout timeout; 2976 struct nvgpu_timeout timeout;
2977 unsigned long delay = GR_IDLE_CHECK_DEFAULT; 2977 unsigned long delay = GR_IDLE_CHECK_DEFAULT;
@@ -3032,7 +3032,7 @@ void gk20a_get_ch_runlist_entry(struct channel_gk20a *ch, u32 *runlist)
3032} 3032}
3033 3033
3034/* recursively construct a runlist with interleaved bare channels and TSGs */ 3034/* recursively construct a runlist with interleaved bare channels and TSGs */
3035static u32 *gk20a_runlist_construct_locked(struct fifo_gk20a *f, 3035u32 *gk20a_runlist_construct_locked(struct fifo_gk20a *f,
3036 struct fifo_runlist_info_gk20a *runlist, 3036 struct fifo_runlist_info_gk20a *runlist,
3037 u32 cur_level, 3037 u32 cur_level,
3038 u32 *runlist_entry, 3038 u32 *runlist_entry,
diff --git a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.h b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.h
index 8a3bd4b9..e2febbf8 100644
--- a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.h
@@ -378,6 +378,15 @@ int gk20a_fifo_setup_userd(struct channel_gk20a *c);
378u32 gk20a_fifo_pbdma_acquire_val(u64 timeout); 378u32 gk20a_fifo_pbdma_acquire_val(u64 timeout);
379 379
380 380
381u32 *gk20a_runlist_construct_locked(struct fifo_gk20a *f,
382 struct fifo_runlist_info_gk20a *runlist,
383 u32 cur_level,
384 u32 *runlist_entry,
385 bool interleave_enabled,
386 bool prev_empty,
387 u32 *entries_left);
388int gk20a_fifo_runlist_wait_pending(struct gk20a *g, u32 runlist_id);
389int gk20a_init_fifo_setup_sw(struct gk20a *g);
381void gk20a_fifo_handle_runlist_event(struct gk20a *g); 390void gk20a_fifo_handle_runlist_event(struct gk20a *g);
382bool gk20a_fifo_should_defer_engine_reset(struct gk20a *g, u32 engine_id, 391bool gk20a_fifo_should_defer_engine_reset(struct gk20a *g, u32 engine_id,
383 u32 engine_subid, bool fake_fault); 392 u32 engine_subid, bool fake_fault);
@@ -386,6 +395,8 @@ void gk20a_fifo_teardown_ch_tsg(struct gk20a *g, u32 __engine_ids,
386 u32 hw_id, unsigned int id_type, unsigned int rc_type, 395 u32 hw_id, unsigned int id_type, unsigned int rc_type,
387 struct mmu_fault_info *mmfault); 396 struct mmu_fault_info *mmfault);
388 397
398bool gk20a_fifo_check_ch_ctxsw_timeout(struct channel_gk20a *ch,
399 bool *verbose, u32 *ms);
389bool gk20a_fifo_check_tsg_ctxsw_timeout(struct tsg_gk20a *tsg, 400bool gk20a_fifo_check_tsg_ctxsw_timeout(struct tsg_gk20a *tsg,
390 bool *verbose, u32 *ms); 401 bool *verbose, u32 *ms);
391bool gk20a_fifo_handle_sched_error(struct gk20a *g); 402bool gk20a_fifo_handle_sched_error(struct gk20a *g);