From 6bbc169d33ae601b5947c1e54806b9f9bfa6054e Mon Sep 17 00:00:00 2001 From: Seshendra Gadagottu Date: Tue, 24 May 2016 16:38:30 -0700 Subject: gpu: nvgpu: reorder disable_irq Disable irqs before suspending gpu sub-units. This is to prevent potential races between irq threads and suspend routines. Change-Id: Icc60f517db8ae8129bcf10be53d37d34b6d9242c Signed-off-by: Seshendra Gadagottu Reviewed-on: http://git-master/r/1152844 Reviewed-by: Terje Bergstrom Tested-by: Terje Bergstrom --- drivers/gpu/nvgpu/gk20a/gk20a.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'drivers/gpu') diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c index a381fa4a..2e40a675 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a.c @@ -705,6 +705,13 @@ static int gk20a_pm_prepare_poweroff(struct device *dev) if (!g->power_on) goto done; + /* + * After this point, gk20a interrupts should not get + * serviced. + */ + disable_irq(g->irq_stall); + disable_irq(g->irq_nonstall); + gk20a_scale_suspend(dev); /* cancel any pending cde work */ @@ -716,12 +723,6 @@ static int gk20a_pm_prepare_poweroff(struct device *dev) /* disable elpg before gr or fifo suspend */ ret |= gk20a_pmu_destroy(g); - /* - * After this point, gk20a interrupts should not get - * serviced. - */ - disable_irq(g->irq_stall); - disable_irq(g->irq_nonstall); ret |= gk20a_gr_suspend(g); ret |= gk20a_mm_suspend(g); -- cgit v1.2.2