From 3f7be93dab3ccb5f1cfc2a65013ff8fefaa5bbbd Mon Sep 17 00:00:00 2001 From: Deepak Nibade Date: Tue, 27 May 2014 20:35:12 +0530 Subject: gpu: nvgpu: add railgate check in do_idle() In gk20a_do_idle(), check gk20a rail status before returning. If rail is off, then only return success otherwise return failure Bug 1376916 Bug 1487804 Change-Id: I6280bf06c686b8baa4d6f49e90f47148411c3e02 Signed-off-by: Deepak Nibade Reviewed-on: http://git-master/r/415281 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Shridhar Rasal Reviewed-by: Terje Bergstrom --- drivers/gpu/nvgpu/gk20a/gk20a.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'drivers') diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c index b36beb52..2adf8908 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a.c @@ -1658,9 +1658,20 @@ int gk20a_do_idle(void) pm_runtime_put_sync(&pdev->dev); /* add sufficient delay to allow GPU to rail gate */ - mdelay(platform->railgate_delay + 100); + mdelay(platform->railgate_delay); - return 0; + if (platform->is_railgated(pdev)) + return 0; + else { + /* wait for some more time */ + mdelay(100); + if (platform->is_railgated(pdev)) + return 0; + } + + /* GPU is not rail gated by now, return error */ + up_write(&g->busy_lock); + return -EBUSY; fail: pm_runtime_put_noidle(&pdev->dev); -- cgit v1.2.2