diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2014-05-27 11:05:12 -0400 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2015-03-18 15:09:58 -0400 |
commit | 3f7be93dab3ccb5f1cfc2a65013ff8fefaa5bbbd (patch) | |
tree | 104e7a07e0872baae93b54f3ef5ade15a5d1ce2b /drivers/gpu/nvgpu/gk20a/gk20a.c | |
parent | 954117fe11481b79c9c525f7c75384ac40b64cbe (diff) |
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 <dnibade@nvidia.com>
Reviewed-on: http://git-master/r/415281
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.c | 15 |
1 files changed, 13 insertions, 2 deletions
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) | |||
1658 | pm_runtime_put_sync(&pdev->dev); | 1658 | pm_runtime_put_sync(&pdev->dev); |
1659 | 1659 | ||
1660 | /* add sufficient delay to allow GPU to rail gate */ | 1660 | /* add sufficient delay to allow GPU to rail gate */ |
1661 | mdelay(platform->railgate_delay + 100); | 1661 | mdelay(platform->railgate_delay); |
1662 | 1662 | ||
1663 | return 0; | 1663 | if (platform->is_railgated(pdev)) |
1664 | return 0; | ||
1665 | else { | ||
1666 | /* wait for some more time */ | ||
1667 | mdelay(100); | ||
1668 | if (platform->is_railgated(pdev)) | ||
1669 | return 0; | ||
1670 | } | ||
1671 | |||
1672 | /* GPU is not rail gated by now, return error */ | ||
1673 | up_write(&g->busy_lock); | ||
1674 | return -EBUSY; | ||
1664 | 1675 | ||
1665 | fail: | 1676 | fail: |
1666 | pm_runtime_put_noidle(&pdev->dev); | 1677 | pm_runtime_put_noidle(&pdev->dev); |