From 244a124ce2ae5daa10283f3129843a72bc36676e Mon Sep 17 00:00:00 2001 From: seshendra Gadagottu Date: Wed, 7 Feb 2018 13:26:11 -0800 Subject: gpu: nvgpu: handle pm_prepare_poweroff failure As part of gk20a_pm_prepare_poweroff, gpu hw state is destroyed even in case of any errors. So try to recover from that situation by calling gk20a_pm_finalize_poweron. Bug 200380708 Change-Id: Ibff656cda67241ad111fd22701e05871f20d6f70 Signed-off-by: seshendra Gadagottu Reviewed-on: https://git-master.nvidia.com/r/1653750 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/linux/module.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'drivers/gpu/nvgpu/common/linux/module.c') diff --git a/drivers/gpu/nvgpu/common/linux/module.c b/drivers/gpu/nvgpu/common/linux/module.c index 814f2fc9..67dfeff3 100644 --- a/drivers/gpu/nvgpu/common/linux/module.c +++ b/drivers/gpu/nvgpu/common/linux/module.c @@ -928,23 +928,25 @@ fail: static int gk20a_pm_runtime_suspend(struct device *dev) { int err = 0; + struct gk20a *g = get_gk20a(dev); if (gk20a_gpu_is_virtual(dev)) err = vgpu_pm_prepare_poweroff(dev); else err = gk20a_pm_prepare_poweroff(dev); - if (err) + if (err) { + nvgpu_err(g, "failed to power off, err=%d", err); goto fail; + } err = gk20a_pm_railgate(dev); if (err) - goto fail_railgate; + goto fail; return 0; -fail_railgate: - gk20a_pm_finalize_poweron(dev); fail: + gk20a_pm_finalize_poweron(dev); pm_runtime_mark_last_busy(dev); return err; } -- cgit v1.2.2