diff options
author | Arto Merilainen <amerilainen@nvidia.com> | 2014-04-10 04:40:52 -0400 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2015-03-18 15:09:08 -0400 |
commit | b4f4eca2bb8e4b8b80ef431071f57360f741be1b (patch) | |
tree | 43f5ff25ba02fe0a39a99756cced5800b420dba2 | |
parent | 8323c0a015719420df61bbd7003898be3482d16a (diff) |
gpu: nvgpu: Disable IRQs after channel suspend
Interrupts may be needed before we have actually silenced all
channels. Few possible scenarios include channel recovery during
teardown and sw method before the channels have been suspended.
This patch modifies the teardown path so that we disable interrupts
after the channels have been suspended.
Change-Id: Ifc36dbb74b1d36bd88d1220fa50a53c4072df4d8
Signed-off-by: Arto Merilainen <amerilainen@nvidia.com>
Reviewed-on: http://git-master/r/394599
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c index 73515796..3c69a9d0 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a.c | |||
@@ -753,6 +753,8 @@ static int gk20a_pm_prepare_poweroff(struct device *_dev) | |||
753 | if (!g->power_on) | 753 | if (!g->power_on) |
754 | return 0; | 754 | return 0; |
755 | 755 | ||
756 | ret |= gk20a_channel_suspend(g); | ||
757 | |||
756 | /* | 758 | /* |
757 | * After this point, gk20a interrupts should not get | 759 | * After this point, gk20a interrupts should not get |
758 | * serviced. | 760 | * serviced. |
@@ -763,8 +765,6 @@ static int gk20a_pm_prepare_poweroff(struct device *_dev) | |||
763 | g->irq_requested = false; | 765 | g->irq_requested = false; |
764 | } | 766 | } |
765 | 767 | ||
766 | ret |= gk20a_channel_suspend(g); | ||
767 | |||
768 | /* disable elpg before gr or fifo suspend */ | 768 | /* disable elpg before gr or fifo suspend */ |
769 | ret |= gk20a_pmu_destroy(g); | 769 | ret |= gk20a_pmu_destroy(g); |
770 | ret |= gk20a_gr_suspend(g); | 770 | ret |= gk20a_gr_suspend(g); |