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>
This commit is contained in:
Arto Merilainen
2014-04-10 11:40:52 +03:00
committed by Dan Willemsen
parent 8323c0a015
commit b4f4eca2bb

View File

@@ -753,6 +753,8 @@ static int gk20a_pm_prepare_poweroff(struct device *_dev)
if (!g->power_on) if (!g->power_on)
return 0; return 0;
ret |= gk20a_channel_suspend(g);
/* /*
* After this point, gk20a interrupts should not get * After this point, gk20a interrupts should not get
* serviced. * serviced.
@@ -763,8 +765,6 @@ static int gk20a_pm_prepare_poweroff(struct device *_dev)
g->irq_requested = false; g->irq_requested = false;
} }
ret |= gk20a_channel_suspend(g);
/* disable elpg before gr or fifo suspend */ /* disable elpg before gr or fifo suspend */
ret |= gk20a_pmu_destroy(g); ret |= gk20a_pmu_destroy(g);
ret |= gk20a_gr_suspend(g); ret |= gk20a_gr_suspend(g);