From: Marc Zyngier <marc.zyngier@arm.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: David Daney <david.daney@cavium.com>,
John Stultz <john.stultz@linaro.org>,
Linus Walleij <linus.walleij@linaro.org>,
Jon Hunter <jonathanh@nvidia.com>,
Fabio Estevam <fabio.estevam@nxp.com>,
Sudeep Holla <sudeep.holla@arm.com>,
Jason Cooper <jason@lakedaemon.net>,
Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
<linux-kernel@vger.kernel.org>
Subject: [PATCH 4/4] irqchip/gicv3-its: Disable the ITS before initializing it
Date: Mon, 22 Aug 2016 09:23:40 +0100 [thread overview]
Message-ID: <1471854220-17833-5-git-send-email-marc.zyngier@arm.com> (raw)
In-Reply-To: <1471854220-17833-1-git-send-email-marc.zyngier@arm.com>
From: David Daney <david.daney@cavium.com>
When starting a kexec/kdump kernel, the GIC ITS will already have been
enabled. According to the ARM Generic Interrupt Controller
Architecture Specification (GIC architecture Version 3.0 and version
4.0), writing to GITS_BASER<n> or GITS_CBASER is "UNPREDICTABLE" when
the ITS is enabled. On Cavium Thunder systems, this prevents the ITS
from being initializing in the kexec/kdump kernel, resulting in
failure to register/enable interrupts for all devices.
The fix is to disable the ITS if it is not already in the disabled
state. This allows the ITS to be properly initialized and then
re-enabled in the kexec/kdump kernel.
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: David Daney <david.daney@cavium.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
drivers/irqchip/irq-gic-v3-its.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
index 7ceaba8..36b9c28 100644
--- a/drivers/irqchip/irq-gic-v3-its.c
+++ b/drivers/irqchip/irq-gic-v3-its.c
@@ -1545,7 +1545,12 @@ static int its_force_quiescent(void __iomem *base)
u32 val;
val = readl_relaxed(base + GITS_CTLR);
- if (val & GITS_CTLR_QUIESCENT)
+ /*
+ * GIC architecture specification requires the ITS to be both
+ * disabled and quiescent for writes to GITS_BASER<n> or
+ * GITS_CBASER to not have UNPREDICTABLE results.
+ */
+ if ((val & GITS_CTLR_QUIESCENT) && !(val & GITS_CTLR_ENABLE))
return 0;
/* Disable the generation of all interrupts to this ITS */
--
2.1.4
prev parent reply other threads:[~2016-08-22 8:24 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-22 8:23 [PULL] irqchip fixes for 4.8-rc4 Marc Zyngier
2016-08-22 8:23 ` [PATCH 1/4] genirq: Correctly configure the trigger on chained interrupts Marc Zyngier
2016-08-22 8:23 ` [PATCH 2/4] irqchip/gic: Allow self-SGIs for SMP on UP configurations Marc Zyngier
2016-08-22 8:23 ` [PATCH 3/4] irqchip/gicv3: Remove disabling redistributor and group1 non-secure interrupts Marc Zyngier
2016-08-22 8:23 ` Marc Zyngier [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1471854220-17833-5-git-send-email-marc.zyngier@arm.com \
--to=marc.zyngier@arm.com \
--cc=david.daney@cavium.com \
--cc=fabio.estevam@nxp.com \
--cc=jason@lakedaemon.net \
--cc=john.stultz@linaro.org \
--cc=jonathanh@nvidia.com \
--cc=linus.walleij@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=sudeep.holla@arm.com \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®