irqchip/gic-v3: Ensure GICR_CTLR.EnableLPI=0 is observed before enabling
authorShanker Donthineni <shankerd@codeaurora.org>
Thu, 22 Mar 2018 01:58:49 +0000 (20:58 -0500)
committerMarc Zyngier <marc.zyngier@arm.com>
Fri, 23 Mar 2018 09:24:25 +0000 (09:24 +0000)
commit6eb486b66a3094cdcd68dc39c9df3a29d6a51dd5
tree95e04c50da1d0477c2ce6a23ebe63ea4c4c8b139
parent19d99164480a34db66941cf995bdd996cc266fc0
irqchip/gic-v3: Ensure GICR_CTLR.EnableLPI=0 is observed before enabling

Booting with GICR_CTLR.EnableLPI=1 is usually a bad idea, and may
result in subtle memory corruption. Detecting this is thus pretty
important.

On detecting that LPIs are still enabled, we taint the kernel (because
we're not sure of anything anymore), and try to disable LPIs. This can
fail, as implementations are allowed to implement GICR_CTLR.EnableLPI
as a one-way enable, meaning the redistributors cannot be reprogrammed
with new tables.

Should this happen, we fail probing the redistributor and warn the user
that things are pretty dire.

Signed-off-by: Shanker Donthineni <shankerd@codeaurora.org>
[maz: reworded changelog, minor comment and message changes]
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
drivers/irqchip/irq-gic-v3-its.c
include/linux/irqchip/arm-gic-v3.h