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)
commit558b01654d92332d3b7b17bf773cdce8ce16ef46
tree52c1a98cbd4cc0e950801328a92404ce6db85b50
parent9d111d49106b61f5a652d5418e85d8741b1a0427
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