summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2014-07-16 06:22:46 -0400
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:10:38 -0400
commitfc73ff7214590782aaa055c7d33c83433f7c9b48 (patch)
treec37c6b6c5f8d2a276e2c792d91afa8f14215c90e
parentd0ce4807d0f190be8fd4221bb48d543bf20473f6 (diff)
gpu: nvgpu: skip WFI for KEPLER_C channels
In channel_finish(), we submit WFI for all the channels including channels with KEPLER_C class. Since there is no need to submit WFI for channels with KEPLER_C class, we can optimize to skip submitting WFI and directly wait on last submit fence Bug 1534272 Change-Id: I3838416cf22122728e7f1008e01d77b14a35deba Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
index ef3d8729..de82be36 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
@@ -1728,14 +1728,14 @@ int gk20a_channel_finish(struct channel_gk20a *ch, unsigned long timeout)
1728 if (ch->has_timedout) 1728 if (ch->has_timedout)
1729 return -ETIMEDOUT; 1729 return -ETIMEDOUT;
1730 1730
1731 if (!(fence->valid && fence->wfi)) { 1731 if (!(fence->valid && fence->wfi) && ch->obj_class != KEPLER_C) {
1732 gk20a_dbg_fn("issuing wfi, incr to finish the channel"); 1732 gk20a_dbg_fn("issuing wfi, incr to finish the channel");
1733 err = gk20a_channel_submit_wfi(ch); 1733 err = gk20a_channel_submit_wfi(ch);
1734 } 1734 }
1735 if (err) 1735 if (err)
1736 return err; 1736 return err;
1737 1737
1738 BUG_ON(!(fence->valid && fence->wfi)); 1738 BUG_ON(!(fence->valid && fence->wfi) && ch->obj_class != KEPLER_C);
1739 1739
1740 gk20a_dbg_fn("waiting for channel to finish thresh:%d sema:%p", 1740 gk20a_dbg_fn("waiting for channel to finish thresh:%d sema:%p",
1741 fence->thresh, fence->semaphore); 1741 fence->thresh, fence->semaphore);