msm: kgsl: Avoid a deadlock in the IRQ handler

If a major GPU fault occurs, interrupts should be turned off to
avoid a storm.  Calling disable_irq from within the IRQ handler,
however has deadlock problems.  Call disable_irq_nosync in an
interrupt context instead.

CRs-fixed: 299686
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
diff --git a/drivers/gpu/msm/kgsl_pwrctrl.c b/drivers/gpu/msm/kgsl_pwrctrl.c
index 572e0e8..ab20e81 100644
--- a/drivers/gpu/msm/kgsl_pwrctrl.c
+++ b/drivers/gpu/msm/kgsl_pwrctrl.c
@@ -336,7 +336,10 @@
 			KGSL_PWR_INFO(device,
 				"irq off, device %d\n", device->id);
 			device->ftbl->irqctrl(device, 0);
-			disable_irq(pwr->interrupt_num);
+			if (in_interrupt())
+				disable_irq_nosync(pwr->interrupt_num);
+			else
+				disable_irq(pwr->interrupt_num);
 		}
 	}
 }