summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2017-10-26 11:29:56 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-11-02 08:09:59 -0400
commit23c7903eff6ee1ab184dfcc62c054de1557e5b1d (patch)
treea5122028e181e5c6009f9f8b66bfbf00f69a9290 /drivers/gpu/nvgpu/gk20a/channel_gk20a.h
parent5f8cfaa250f08499f587da0097f6accaa5eedf15 (diff)
gpu: nvgpu: move submit path to linux
Nvgpu submit path has a lot of dependency on Linux framework e.g. use of copy_from_user, use of structures defined in uapi/nvgpu headers, dma_buf_* calls for trace support etc Hence to keep common code independent of Linux code, move submit path to Linux directory Move below APIs to common/linux/channel.c trace_write_pushbuffer() trace_write_pushbuffer_range() gk20a_submit_prepare_syncs() gk20a_submit_append_priv_cmdbuf() gk20a_submit_append_gpfifo() gk20a_submit_channel_gpfifo() Move below APIs to common/linux/ce2.c gk20a_ce_execute_ops() Define gk20a_ce_execute_ops() in common/linux/ce2.c, and declare it in gk20a/ce2_gk20a.h since it is needed in common/mm code too Each OS needs to implement this API separately gk20a_channel_alloc_gpfifo() use sizeof(nvgpu_gpfifo) to get size of one gpfifo entry, but structure nvgpu_gpfifo is linux specific Define new nvgpu_get_gpfifo_entry_size() in linux specific code and use it in gk20a_channel_alloc_gpfifo() to get gpfifo entry size Each OS needs to implement this API separately Export some APIs from gk20a/ce2_gk20a.h and gk20a/channel_gk20a.h that are needed in linux code Jira NVGPU-259 Jira NVGPU-313 Change-Id: I360c6cb8ce4494b1e50c66af334a2a379f0d2dc4 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1586277 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.h29
1 files changed, 19 insertions, 10 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
index 4b1cb351..cdf75a9a 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
@@ -24,6 +24,9 @@
24#ifndef CHANNEL_GK20A_H 24#ifndef CHANNEL_GK20A_H
25#define CHANNEL_GK20A_H 25#define CHANNEL_GK20A_H
26 26
27/* TODO: To be removed when work_struct update_fn_work is moved out of common code */
28#include <linux/workqueue.h>
29
27#include <linux/stacktrace.h> 30#include <linux/stacktrace.h>
28#include <nvgpu/list.h> 31#include <nvgpu/list.h>
29 32
@@ -374,16 +377,6 @@ struct channel_gk20a *gk20a_open_new_channel_with_cb(struct gk20a *g,
374 int runlist_id, 377 int runlist_id,
375 bool is_privileged_channel); 378 bool is_privileged_channel);
376 379
377int gk20a_submit_channel_gpfifo(struct channel_gk20a *c,
378 struct nvgpu_gpfifo *gpfifo,
379 struct nvgpu_submit_gpfifo_args *args,
380 u32 num_entries,
381 u32 flags,
382 struct nvgpu_fence *fence,
383 struct gk20a_fence **fence_out,
384 bool force_need_sync_fence,
385 struct fifo_profile_gk20a *profile);
386
387int gk20a_channel_alloc_gpfifo(struct channel_gk20a *c, 380int gk20a_channel_alloc_gpfifo(struct channel_gk20a *c,
388 unsigned int num_entries, 381 unsigned int num_entries,
389 unsigned int num_inflight_jobs, 382 unsigned int num_inflight_jobs,
@@ -408,4 +401,20 @@ int gk20a_channel_set_runlist_interleave(struct channel_gk20a *ch,
408void gk20a_channel_event_id_post_event(struct channel_gk20a *ch, 401void gk20a_channel_event_id_post_event(struct channel_gk20a *ch,
409 u32 event_id); 402 u32 event_id);
410 403
404int channel_gk20a_alloc_job(struct channel_gk20a *c,
405 struct channel_gk20a_job **job_out);
406void channel_gk20a_free_job(struct channel_gk20a *c,
407 struct channel_gk20a_job *job);
408u32 nvgpu_get_gp_free_count(struct channel_gk20a *c);
409u32 nvgpu_gp_free_count(struct channel_gk20a *c);
410int gk20a_channel_add_job(struct channel_gk20a *c,
411 struct channel_gk20a_job *job,
412 bool skip_buffer_refcounting);
413void free_priv_cmdbuf(struct channel_gk20a *c,
414 struct priv_cmd_entry *e);
415void gk20a_channel_clean_up_jobs(struct channel_gk20a *c,
416 bool clean_all);
417
418u32 nvgpu_get_gpfifo_entry_size(void);
419
411#endif /* CHANNEL_GK20A_H */ 420#endif /* CHANNEL_GK20A_H */