]> rtime.felk.cvut.cz Git - jailhouse.git/commit
arm: GICv3: filter the guests' SGIs
authorJean-Philippe Brucker <jean-philippe.brucker@arm.com>
Mon, 23 Jun 2014 13:33:53 +0000 (14:33 +0100)
committerJan Kiszka <jan.kiszka@siemens.com>
Fri, 19 Dec 2014 10:04:07 +0000 (11:04 +0100)
commit192ab38c613d36e7ecf283196ed627cbaefa7a8e
treefe7406923e456a5ee292dc82c743697553e21a2c
parent2b0c42b1f35e4f1f97f27f36772a095ac6a57bb0
arm: GICv3: filter the guests' SGIs

In GICv3, IPIs are sent by writing the system register `ICC_SGIR'.
This patch moderates those writes by injecting the IPIs into the
appropriate cells, and issues an hypervisor IPI to let the cell's CPUs
fill their list registers.

Since there shouldn't be many cases where Jailhouse needs to emulate
system register accesses, this patch keeps it simple, by calling directly
the GICv3 function from the trap handler, without abstracting it through
irqchip.
However, this change adds an ungraceful ifdef, since the GICv2 and v3
headers are mutually exclusive for the moment.
In GICv2, the SGIR register is 32bit and will be handled directly in the
gic-common.c code, using an MMIO trap of the distributor accesses.

Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
hypervisor/arch/arm/control.c
hypervisor/arch/arm/gic-v3.c
hypervisor/arch/arm/include/asm/control.h
hypervisor/arch/arm/include/asm/gic_v3.h
hypervisor/arch/arm/include/asm/traps.h
hypervisor/arch/arm/traps.c