mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-24 10:34:43 +03:00
gpu: nvgpu: separate IOCTL to set preemption mode
Add separate IOCTL NVGPU_IOCTL_CHANNEL_SET_PREEMPTION_MODE to allow setting preemption modes from UMD Define preemption modes in nvgpu.h and use them everywhere Remove mode definitions from mm_gk20a.h Also, we support setting only one preemption mode in a channel But it is possible to have multiple preemption modes (one from graphics and one from compute) set simultaneously Hence, update struct gr_ctx_desc to include two separate preemption modes (graphics_preempt_mode and compute_preempt_mode) API NVGPU_IOCTL_CHANNEL_SET_PREEMPTION_MODE also supports setting two separate preemption modes i.e. one for graphics and one for compute Make necessary changes in code to support two preemption modes Bug 1646259 Change-Id: Ia1dea19e609ba8cc0de2f39ab6c0c4cd6b0a752c Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/1131805 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
This commit is contained in:
committed by
Terje Bergstrom
parent
f14152c081
commit
d868b65441
@@ -192,9 +192,11 @@ DEFINE_EVENT(gk20a_channel_getput, gk20a_channel_put_nofree,
|
||||
|
||||
DECLARE_EVENT_CLASS(gk20a_channel_sched_params,
|
||||
TP_PROTO(int chid, int tsgid, pid_t pid, u32 timeslice,
|
||||
u32 timeout, const char *interleave, const char *preempt_mode),
|
||||
u32 timeout, const char *interleave,
|
||||
const char *graphics_preempt_mode,
|
||||
const char *compute_preempt_mode),
|
||||
TP_ARGS(chid, tsgid, pid, timeslice, timeout,
|
||||
interleave, preempt_mode),
|
||||
interleave, graphics_preempt_mode, compute_preempt_mode),
|
||||
TP_STRUCT__entry(
|
||||
__field(int, chid)
|
||||
__field(int, tsgid)
|
||||
@@ -202,7 +204,8 @@ DECLARE_EVENT_CLASS(gk20a_channel_sched_params,
|
||||
__field(u32, timeslice)
|
||||
__field(u32, timeout)
|
||||
__field(const char *, interleave) /* no need to copy */
|
||||
__field(const char *, preempt_mode) /* no need to copy */
|
||||
__field(const char *, graphics_preempt_mode) /* no need to copy */
|
||||
__field(const char *, compute_preempt_mode) /* no need to copy */
|
||||
),
|
||||
TP_fast_assign(
|
||||
__entry->chid = chid;
|
||||
@@ -211,47 +214,59 @@ DECLARE_EVENT_CLASS(gk20a_channel_sched_params,
|
||||
__entry->timeslice = timeslice;
|
||||
__entry->timeout = timeout;
|
||||
__entry->interleave = interleave;
|
||||
__entry->preempt_mode = preempt_mode;
|
||||
__entry->graphics_preempt_mode = graphics_preempt_mode;
|
||||
__entry->compute_preempt_mode = compute_preempt_mode;
|
||||
),
|
||||
TP_printk("chid=%d tsgid=%d pid=%d timeslice=%u timeout=%u interleave=%s preempt=%s",
|
||||
TP_printk("chid=%d tsgid=%d pid=%d timeslice=%u timeout=%u interleave=%s graphics_preempt=%s compute_preempt=%s",
|
||||
__entry->chid, __entry->tsgid, __entry->pid,
|
||||
__entry->timeslice, __entry->timeout,
|
||||
__entry->interleave, __entry->preempt_mode)
|
||||
__entry->interleave, __entry->graphics_preempt_mode,
|
||||
__entry->compute_preempt_mode)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(gk20a_channel_sched_params, gk20a_channel_sched_defaults,
|
||||
TP_PROTO(int chid, int tsgid, pid_t pid, u32 timeslice,
|
||||
u32 timeout, const char *interleave, const char *preempt_mode),
|
||||
u32 timeout, const char *interleave,
|
||||
const char *graphics_preempt_mode,
|
||||
const char *compute_preempt_mode),
|
||||
TP_ARGS(chid, tsgid, pid, timeslice, timeout,
|
||||
interleave, preempt_mode)
|
||||
interleave, graphics_preempt_mode, compute_preempt_mode)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(gk20a_channel_sched_params, gk20a_channel_set_priority,
|
||||
TP_PROTO(int chid, int tsgid, pid_t pid, u32 timeslice,
|
||||
u32 timeout, const char *interleave, const char *preempt_mode),
|
||||
u32 timeout, const char *interleave,
|
||||
const char *graphics_preempt_mode,
|
||||
const char *compute_preempt_mode),
|
||||
TP_ARGS(chid, tsgid, pid, timeslice, timeout,
|
||||
interleave, preempt_mode)
|
||||
interleave, graphics_preempt_mode, compute_preempt_mode)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(gk20a_channel_sched_params, gk20a_channel_set_runlist_interleave,
|
||||
TP_PROTO(int chid, int tsgid, pid_t pid, u32 timeslice,
|
||||
u32 timeout, const char *interleave, const char *preempt_mode),
|
||||
u32 timeout, const char *interleave,
|
||||
const char *graphics_preempt_mode,
|
||||
const char *compute_preempt_mode),
|
||||
TP_ARGS(chid, tsgid, pid, timeslice, timeout,
|
||||
interleave, preempt_mode)
|
||||
interleave, graphics_preempt_mode, compute_preempt_mode)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(gk20a_channel_sched_params, gk20a_channel_set_timeslice,
|
||||
TP_PROTO(int chid, int tsgid, pid_t pid, u32 timeslice,
|
||||
u32 timeout, const char *interleave, const char *preempt_mode),
|
||||
u32 timeout, const char *interleave,
|
||||
const char *graphics_preempt_mode,
|
||||
const char *compute_preempt_mode),
|
||||
TP_ARGS(chid, tsgid, pid, timeslice, timeout,
|
||||
interleave, preempt_mode)
|
||||
interleave, graphics_preempt_mode, compute_preempt_mode)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(gk20a_channel_sched_params, gk20a_channel_set_timeout,
|
||||
TP_PROTO(int chid, int tsgid, pid_t pid, u32 timeslice,
|
||||
u32 timeout, const char *interleave, const char *preempt_mode),
|
||||
u32 timeout, const char *interleave,
|
||||
const char *graphics_preempt_mode,
|
||||
const char *compute_preempt_mode),
|
||||
TP_ARGS(chid, tsgid, pid, timeslice, timeout,
|
||||
interleave, preempt_mode)
|
||||
interleave, graphics_preempt_mode, compute_preempt_mode)
|
||||
);
|
||||
|
||||
TRACE_EVENT(gk20a_push_cmdbuf,
|
||||
|
||||
Reference in New Issue
Block a user