From: Russell King Date: Tue, 16 Jun 2015 22:29:41 +0000 (+0100) Subject: GPU: ipu: fix lockup caused by pending chained interrupts X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=510e6426d32baf46b6df929e6689ef65fcb58a2c;p=linux-beck.git 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 Signed-off-by: Philipp Zabel --- 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) return ret; } + for (i = 0; i < IPU_NUM_IRQS; i += 32) + ipu_cm_write(ipu, 0, IPU_INT_CTRL(i / 32)); + for (i = 0; i < IPU_NUM_IRQS; i += 32) { gc = irq_get_domain_generic_chip(ipu->domain, i); gc->reg_base = ipu->cm_reg;