summaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorPrashant Malani <pmalani@nvidia.com>2014-01-24 15:08:05 -0500
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:09:01 -0400
commit9727cf87bc0eeb62c00602ebb479c5f38d1bb30e (patch)
tree1884265c8bea294077f152d3947a8d62318c9ebb /drivers/gpu
parentef4ed26f8b1dd9545b7922def3bfec425cfa0562 (diff)
video: tegra: host: gk20a: reorder free_irq
Free IRQs before the various subunits are suspended. This is to prevent potential races between the IRQ thread and the suspend routine. Bug 1437749 Change-Id: Iffef918feecae0b256be96efd02b01b2677c225d Signed-off-by: Prashant Malani <pmalani@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c
index ad35c9ae..a144e75d 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.c
@@ -755,14 +755,6 @@ static int gk20a_pm_prepare_poweroff(struct device *_dev)
755 if (!g->power_on) 755 if (!g->power_on)
756 return 0; 756 return 0;
757 757
758 ret |= gk20a_channel_suspend(g);
759
760 /* disable elpg before gr or fifo suspend */
761 ret |= gk20a_pmu_destroy(g);
762 ret |= gk20a_gr_suspend(g);
763 ret |= gk20a_mm_suspend(g);
764 ret |= gk20a_fifo_suspend(g);
765
766 /* 758 /*
767 * After this point, gk20a interrupts should not get 759 * After this point, gk20a interrupts should not get
768 * serviced. 760 * serviced.
@@ -773,6 +765,14 @@ static int gk20a_pm_prepare_poweroff(struct device *_dev)
773 g->irq_requested = false; 765 g->irq_requested = false;
774 } 766 }
775 767
768 ret |= gk20a_channel_suspend(g);
769
770 /* disable elpg before gr or fifo suspend */
771 ret |= gk20a_pmu_destroy(g);
772 ret |= gk20a_gr_suspend(g);
773 ret |= gk20a_mm_suspend(g);
774 ret |= gk20a_fifo_suspend(g);
775
776 /* Disable GPCPLL */ 776 /* Disable GPCPLL */
777 ret |= gk20a_suspend_clk_support(g); 777 ret |= gk20a_suspend_clk_support(g);
778 g->power_on = false; 778 g->power_on = false;