public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] irqchip/gic: restore global interrupts group settings in distributor
@ 2015-08-05 16:39 Anson Huang
  2015-08-05  9:12 ` Marc Zyngier
  0 siblings, 1 reply; 7+ messages in thread
From: Anson Huang @ 2015-08-05 16:39 UTC (permalink / raw)
  To: linux-kernel; +Cc: tglx, jason, marc.zyngier, rmk+kernel

In GIC's distributor initializtion, all global interrupts
are set to group 1, however, after suspend/resume with
ARM/GIC power off/on, distributor does NOT restore
these global interrupts group setting, it will cause
system fail to resume.

This patch adds global interrupts group setting restore
for distributor.

Signed-off-by: Anson Huang <b20788@freescale.com>
---
 drivers/irqchip/irq-gic.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
index a530d9a..c8fa6ee 100644
--- a/drivers/irqchip/irq-gic.c
+++ b/drivers/irqchip/irq-gic.c
@@ -532,6 +532,16 @@ static void gic_dist_restore(unsigned int gic_nr)
 		writel_relaxed(gic_data[gic_nr].saved_spi_enable[i],
 			dist_base + GIC_DIST_ENABLE_SET + i * 4);
 
+	writel_relaxed(GICD_ENABLE_GRP1, dist_base + GIC_DIST_CTRL);
+
+	/*
+	 * Optionally set all global interrupts to be group 1.
+	 */
+	if (readl_relaxed(dist_base + GIC_DIST_CTRL) & GICD_ENABLE_GRP1) {
+		for (i = 32; i < gic_irqs; i += 32)
+			writel_relaxed(0xffffffff, dist_base + GIC_DIST_IGROUP + i * 4 / 32);
+	}
+
 	writel_relaxed(GICD_ENABLE | GICD_ENABLE_GRP1, dist_base + GIC_DIST_CTRL);
 }
 
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-08-05 10:44 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-05 16:39 [PATCH] irqchip/gic: restore global interrupts group settings in distributor Anson Huang
2015-08-05  9:12 ` Marc Zyngier
2015-08-05  9:17   ` Anson Huang
2015-08-05  9:59     ` Marc Zyngier
2015-08-05 10:21       ` Russell King - ARM Linux
2015-08-05 10:42         ` Marc Zyngier
2015-08-05 10:44           ` Russell King - ARM Linux

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox