]> rtime.felk.cvut.cz Git - jailhouse.git/commit
arm: GICv2: handle SPI routing
authorJean-Philippe Brucker <jean-philippe.brucker@arm.com>
Wed, 16 Jul 2014 10:22:59 +0000 (11:22 +0100)
committerJan Kiszka <jan.kiszka@siemens.com>
Fri, 19 Dec 2014 10:04:08 +0000 (11:04 +0100)
commitee6b35ba9037d7dbc34ae08fb442c40b79d831f3
tree915f1a5ebc385c45c54c48c7b89b2d39bf39baf3
parent7dfacf400e5be9443b22ef85e51959e6b5a71ed1
arm: GICv2: handle SPI routing

GICv2 is limited to 8 CPUs and uses independent routing bits, whereas
GICv3 (with ARE enabled) uses the MPIDR encoding (aff3.aff2.aff1.aff0)
for routing SPIs.
Before handling SPIs, the GICv2 backend has to probe its banked view of
the distributor to know which CPU interface it is accessing. After that,
the implementation is roughly the same as for GICv3, but GICD_ITARGETSR
are used instead of IROUTER.
Because the guest isn't supposed to rely on the CPU interface number
being coherent with the CPU logical ID, we don't have to translate it to
a virtual ID before handling route accesses inside SMP cells.

Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
[Jan: switch to mmio accessor]
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
hypervisor/arch/arm/gic-common.c
hypervisor/arch/arm/gic-v2.c
hypervisor/arch/arm/include/asm/gic_common.h