From 8fb33d92b03b9ee2db421c69252822d09477cce5 Mon Sep 17 00:00:00 2001 From: Richard Zhao Date: Thu, 14 Jan 2016 17:40:48 -0800 Subject: gpu: nvgpu: vgpu: add channel_set_priority support - add gops.fifo.channel_set_priority and move current code as native callback. - implement the callback for vgpu Bug 1701079 Change-Id: If1cd13ea4478d11d578da2f682598e0c4522bcaf Signed-off-by: Richard Zhao Reviewed-on: http://git-master/r/932829 Reviewed-by: Aingara Paramakuru GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom --- drivers/gpu/nvgpu/gk20a/channel_gk20a.c | 6 +++--- drivers/gpu/nvgpu/gk20a/channel_gk20a.h | 1 + drivers/gpu/nvgpu/gk20a/gk20a.h | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) (limited to 'drivers/gpu/nvgpu/gk20a') diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c index 45501d4f..5e5bbcb0 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c @@ -2539,8 +2539,7 @@ unsigned int gk20a_channel_poll(struct file *filep, poll_table *wait) return mask; } -static int gk20a_channel_set_priority(struct channel_gk20a *ch, - u32 priority) +int gk20a_channel_set_priority(struct channel_gk20a *ch, u32 priority) { u32 timeslice_timeout; bool interleave = false; @@ -2723,6 +2722,7 @@ void gk20a_init_channel(struct gpu_ops *gops) gops->fifo.alloc_inst = channel_gk20a_alloc_inst; gops->fifo.free_inst = channel_gk20a_free_inst; gops->fifo.setup_ramfc = channel_gk20a_setup_ramfc; + gops->fifo.channel_set_priority = gk20a_channel_set_priority; } long gk20a_channel_ioctl(struct file *filp, @@ -2897,7 +2897,7 @@ long gk20a_channel_ioctl(struct file *filp, __func__, cmd); break; } - err = gk20a_channel_set_priority(ch, + err = ch->g->ops.fifo.channel_set_priority(ch, ((struct nvgpu_set_priority_args *)buf)->priority); gk20a_idle(dev); break; diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h index 24a2fe11..0f796ffe 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h @@ -268,5 +268,6 @@ void gk20a_channel_timeout_restart_all_channels(struct gk20a *g); int gk20a_channel_get_timescale_from_timeslice(struct gk20a *g, int timeslice_period, int *__timeslice_timeout, int *__timeslice_scale); +int gk20a_channel_set_priority(struct channel_gk20a *ch, u32 priority); #endif /* CHANNEL_GK20A_H */ diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index 2b4c3237..a58a1eed 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h @@ -260,6 +260,7 @@ struct gpu_ops { int (*wait_engine_idle)(struct gk20a *g); u32 (*get_num_fifos)(struct gk20a *g); u32 (*get_pbdma_signature)(struct gk20a *g); + int (*channel_set_priority)(struct channel_gk20a *ch, u32 priority); } fifo; struct pmu_v { /*used for change of enum zbc update cmd id from ver 0 to ver1*/ -- cgit v1.2.2