irqchip/gic-v3: Add workaround for Synquacer pre-ITS
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Tue, 17 Oct 2017 16:55:56 +0000 (17:55 +0100)
committerMarc Zyngier <marc.zyngier@arm.com>
Thu, 19 Oct 2017 10:22:39 +0000 (11:22 +0100)
commitc1a723d4952a2ced7ddad73e2450732c5e7a7e26
tree52c1a98cbd4cc0e950801328a92404ce6db85b50
parent4e6a3c85501815bff7a8ce5d72f777e5a3ba2b8d
irqchip/gic-v3: Add workaround for Synquacer pre-ITS

The Socionext Synquacer SoC's implementation of GICv3 has a so-called
'pre-ITS', which maps 32-bit writes targeted at a separate window of
size '4 << device_id_bits' onto writes to GITS_TRANSLATER with device
ID taken from bits [device_id_bits + 1:2] of the window offset.
Writes that target GITS_TRANSLATER directly are reported as originating
from device ID #0.

So add a workaround for this. Given that this breaks isolation, clear
the IRQ_DOMAIN_FLAG_MSI_REMAP flag as well.

Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Documentation/devicetree/bindings/interrupt-controller/arm,gic-v3.txt
arch/arm64/Kconfig
drivers/irqchip/irq-gic-v3-its.c