From 2fbf6e7afb316d698d0062828876eeed1a1b43b2 Mon Sep 17 00:00:00 2001 From: Terje Bergstrom Date: Tue, 1 Apr 2014 08:28:44 +0300 Subject: gpu: nvgpu: Allow suppressing WFI on submit Allow suppressing WFI when submitting work and requesting a fence back. Bug 1491545 Change-Id: Ic3d061bb4f116cf7ea68dbd6a1b2ace9f11d0ab5 Signed-off-by: Terje Bergstrom Reviewed-on: http://git-master/r/390457 --- drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c') diff --git a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c index 10a1001e..f91dd52d 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c @@ -279,6 +279,7 @@ int gk20a_channel_syncpt_incr(struct gk20a_channel_sync *s, int gk20a_channel_syncpt_incr_user_syncpt(struct gk20a_channel_sync *s, struct priv_cmd_entry **entry, struct gk20a_channel_fence *fence, + bool wfi, u32 *id, u32 *thresh) { struct gk20a_channel_syncpt *sp = @@ -286,8 +287,10 @@ int gk20a_channel_syncpt_incr_user_syncpt(struct gk20a_channel_sync *s, /* Need to do 'host incr + wfi' or 'gfx incr' since we return the fence * to user space. */ int err = __gk20a_channel_syncpt_incr(s, - sp->c->obj_class == KEPLER_C /* use gfx class? */, - sp->c->obj_class != KEPLER_C /* wfi if host class */, + wfi && + sp->c->obj_class == KEPLER_C /* use gfx class? */, + wfi && + sp->c->obj_class != KEPLER_C /* wfi if host class */, true /* register irq */, entry, fence); if (err) @@ -300,6 +303,7 @@ int gk20a_channel_syncpt_incr_user_syncpt(struct gk20a_channel_sync *s, int gk20a_channel_syncpt_incr_user_fd(struct gk20a_channel_sync *s, struct priv_cmd_entry **entry, struct gk20a_channel_fence *fence, + bool wfi, int *fd) { #ifdef CONFIG_SYNC @@ -307,7 +311,7 @@ int gk20a_channel_syncpt_incr_user_fd(struct gk20a_channel_sync *s, struct nvhost_ctrl_sync_fence_info pt; struct gk20a_channel_syncpt *sp = container_of(s, struct gk20a_channel_syncpt, ops); - err = gk20a_channel_syncpt_incr_user_syncpt(s, entry, fence, + err = gk20a_channel_syncpt_incr_user_syncpt(s, entry, fence, wfi, &pt.id, &pt.thresh); if (err) return err; -- cgit v1.2.2