diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c index 069dfc95..44786e4b 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a.c | |||
@@ -822,7 +822,8 @@ static int gk20a_pm_prepare_poweroff(struct device *dev) | |||
822 | * serviced. | 822 | * serviced. |
823 | */ | 823 | */ |
824 | disable_irq(g->irq_stall); | 824 | disable_irq(g->irq_stall); |
825 | disable_irq(g->irq_nonstall); | 825 | if (g->irq_stall != g->irq_nonstall) |
826 | disable_irq(g->irq_nonstall); | ||
826 | 827 | ||
827 | ret |= gk20a_gr_suspend(g); | 828 | ret |= gk20a_gr_suspend(g); |
828 | ret |= gk20a_mm_suspend(g); | 829 | ret |= gk20a_mm_suspend(g); |
@@ -907,6 +908,15 @@ int gk20a_pm_finalize_poweron(struct device *dev) | |||
907 | if (err) | 908 | if (err) |
908 | goto done; | 909 | goto done; |
909 | 910 | ||
911 | /* | ||
912 | * Before probing the GPU make sure the GPU's state is cleared. This is | ||
913 | * relevant for rebind operations. | ||
914 | */ | ||
915 | if (g->ops.xve.reset_gpu && !g->gpu_reset_done) { | ||
916 | g->ops.xve.reset_gpu(g); | ||
917 | g->gpu_reset_done = true; | ||
918 | } | ||
919 | |||
910 | if (g->ops.bios.init) | 920 | if (g->ops.bios.init) |
911 | err = g->ops.bios.init(g); | 921 | err = g->ops.bios.init(g); |
912 | if (err) | 922 | if (err) |