aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2015-06-16 18:29:41 -0400
committerPhilipp Zabel <p.zabel@pengutronix.de>2015-07-10 05:02:46 -0400
commit510e6426d32baf46b6df929e6689ef65fcb58a2c (patch)
treeb22572de17b81e2d32e5f8409eeab77aad11c436
parent553a59fc8f5d51c3824c0b7d4ca61e780157defa (diff)
GPU: ipu: fix lockup caused by pending chained interrupts
Even with the oops fixed by a previous patch, the system still fails to kexec, due to a stuck chained interrupt locking the system. We must disable the child interrupts prior to setting up the irq chip to ensure we don't get stuck here. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
-rw-r--r--drivers/gpu/ipu-v3/ipu-common.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/gpu/ipu-v3/ipu-common.c b/drivers/gpu/ipu-v3/ipu-common.c
index 6d2f39d36e44..00f2058944e5 100644
--- a/drivers/gpu/ipu-v3/ipu-common.c
+++ b/drivers/gpu/ipu-v3/ipu-common.c
@@ -1107,6 +1107,9 @@ static int ipu_irq_init(struct ipu_soc *ipu)
1107 return ret; 1107 return ret;
1108 } 1108 }
1109 1109
1110 for (i = 0; i < IPU_NUM_IRQS; i += 32)
1111 ipu_cm_write(ipu, 0, IPU_INT_CTRL(i / 32));
1112
1110 for (i = 0; i < IPU_NUM_IRQS; i += 32) { 1113 for (i = 0; i < IPU_NUM_IRQS; i += 32) {
1111 gc = irq_get_domain_generic_chip(ipu->domain, i); 1114 gc = irq_get_domain_generic_chip(ipu->domain, i);
1112 gc->reg_base = ipu->cm_reg; 1115 gc->reg_base = ipu->cm_reg;