gpu: nvgpu: jump to fail path if pm_runtime_get_sync() fails

Currently we execute pm_runtime_get_sync() and then
gk20a_scale_notify_busy() without checking return value of
pm_runtime_get_sync()

In case of shutdown of GPU is already initiate, we get
a hard hang due to this as per below sequence :
- one thread invokes GPU shutdown and then forcibly rail
  gates the GPU
- another thread (unaware of shutdown) calls gk20a_busy()
- since runtime PM is disabled in shutdown path,
  pm_runtime_get_sync() fails
- but we still go on running gk20a_scale_notify_busy() which
  tries to access some GPU registers and hangs

Fix this by jumping to failure path in case
pm_runtime_get_sync() fails

Bug 200099940

Change-Id: I022f2dfa9408f640fb44e6f4b10a437688779c0a
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: http://git-master/r/738509
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
This commit is contained in:
Deepak Nibade
2015-05-04 16:43:56 +05:30
committed by Ishan Mittal
parent 8d177e7b74
commit d9854e4782

View File

@@ -1708,6 +1708,7 @@ int gk20a_busy(struct platform_device *pdev)
pm_runtime_put_noidle(&pdev->dev);
if (platform->idle)
platform->idle(pdev);
goto fail;
}
#else
if (!g->power_on) {