diff options
author | Seshendra Gadagottu <sgadagottu@nvidia.com> | 2015-12-23 18:36:38 -0500 |
---|---|---|
committer | Terje Bergstrom <tbergstrom@nvidia.com> | 2016-01-19 20:47:13 -0500 |
commit | 3a68fb2d7896170938af9a5bd7efd998f05eda29 (patch) | |
tree | d36eae501173df97d130cd343a7360ddac4ba7e1 /drivers/gpu/nvgpu | |
parent | db7095ce5180552d1a70fdea779e5987d55cce7b (diff) |
gpu: nvgpu: suspend cde cleanly
Few times cde is getting deadlocked because of pending cde
operation. So do the things cleanly, first suspend cde then
do channel suspend.
Bug 1709757
Change-Id: Iaf566b63d9efb13aa2691c19e2df676c70f26afc
Signed-off-by: Seshendra Gadagottu <sgadagottu@nvidia.com>
Reviewed-on: http://git-master/r/926574
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c index 1f58b510..0982ecdf 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * GK20A Graphics | 2 | * GK20A Graphics |
3 | * | 3 | * |
4 | * Copyright (c) 2011-2015, NVIDIA CORPORATION. All rights reserved. | 4 | * Copyright (c) 2011-2016, NVIDIA CORPORATION. All rights reserved. |
5 | * | 5 | * |
6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
@@ -694,13 +694,13 @@ static int gk20a_pm_prepare_poweroff(struct device *dev) | |||
694 | if (!g->power_on) | 694 | if (!g->power_on) |
695 | return 0; | 695 | return 0; |
696 | 696 | ||
697 | /* cancel any pending cde work */ | ||
698 | gk20a_cde_suspend(g); | ||
699 | |||
697 | ret = gk20a_channel_suspend(g); | 700 | ret = gk20a_channel_suspend(g); |
698 | if (ret) | 701 | if (ret) |
699 | return ret; | 702 | return ret; |
700 | 703 | ||
701 | /* cancel any pending cde work */ | ||
702 | gk20a_cde_suspend(g); | ||
703 | |||
704 | /* disable elpg before gr or fifo suspend */ | 704 | /* disable elpg before gr or fifo suspend */ |
705 | ret |= gk20a_pmu_destroy(g); | 705 | ret |= gk20a_pmu_destroy(g); |
706 | /* | 706 | /* |