irqchip/gic-v3: ACPI: Add redistributor support via GICC structures
authorTomasz Nowicki <tn@semihalf.com>
Tue, 19 Jan 2016 13:11:16 +0000 (14:11 +0100)
committerMarc Zyngier <marc.zyngier@arm.com>
Wed, 9 Mar 2016 02:44:02 +0000 (02:44 +0000)
commitb70fb7af67158250bf16db467926e6e105d8bc49
treea00b59f683dc39b64b7d4c5836d8ec8070036bd4
parentffa7d6166a9611ed9ad117b56f7f513901b31408
irqchip/gic-v3: ACPI: Add redistributor support via GICC structures

Following ACPI spec:
On systems supporting GICv3 and above, GICR Base Address in MADT GICC
structure holds the 64-bit physical address of the associated Redistributor.
If all of the GIC Redistributors are in the always-on power domain,
GICR structures should be used to describe the Redistributors instead,
and this field must be set to 0.

It means that we have two ways to initialize registirbutors map.
1. via GICD structure which can accommodate many redistributors as a region
2. via GICC which is able to describe single redistributor

This patch is going to add support for second option.
Considering redistributors, GICD and GICC subtables have be mutually
exclusive. While discovering and mapping redistributor, we need to know
its size in advance. For the GICC case, redistributor can be in
a power-domain that is off, thus we cannot relay on GICR TYPER register.
Therefore, we get GIC version from distributor register and map 2xSZ_64K
for GICv3 and 4xSZ_64K for GICv4.

Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
Signed-off-by: Tomasz Nowicki <tn@semihalf.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
drivers/irqchip/irq-gic-v3.c