linux_dsm_epyc7002/arch/arm/kvm
Christoffer Dall 35a2d58588 KVM: arm/arm64: vgic-new: Synchronize changes to active state
When modifying the active state of an interrupt via the MMIO interface,
we should ensure that the write has the intended effect.

If a guest sets an interrupt to active, but that interrupt is already
flushed into a list register on a running VCPU, then that VCPU will
write the active state back into the struct vgic_irq upon returning from
the guest and syncing its state.  This is a non-benign race, because the
guest can observe that an interrupt is not active, and it can have a
reasonable expectations that other VCPUs will not ack any IRQs, and then
set the state to active, and expect it to stay that way.  Currently we
are not honoring this case.

Thefore, change both the SACTIVE and CACTIVE mmio handlers to stop the
world, change the irq state, potentially queue the irq if we're setting
it to active, and then continue.

We take this chance to slightly optimize these functions by not stopping
the world when touching private interrupts where there is inherently no
possible race.

Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
2016-05-20 16:26:38 +02:00
..
hyp ARM: KVM: Use common version of timer-sr.c 2016-02-29 18:34:19 +00:00
arm.c KVM: arm/arm64: vgic-new: Synchronize changes to active state 2016-05-20 16:26:38 +02:00
coproc_a7.c arm/arm64: KVM: Use set/way op trapping to track the state of the caches 2015-01-29 23:24:56 +01:00
coproc_a15.c arm/arm64: KVM: Use set/way op trapping to track the state of the caches 2015-01-29 23:24:56 +01:00
coproc.c ARM: KVM: Switch the CP reg search to be a binary search 2016-02-29 18:34:22 +00:00
coproc.h ARM: KVM: Rename struct coproc_reg::is_64 to is_64bit 2016-02-29 18:34:22 +00:00
emulate.c ARM: KVM: Move GP registers into the CPU context structure 2016-02-29 18:34:12 +00:00
guest.c One of the largest releases for KVM... Hardly any generic improvement, 2016-03-16 09:55:35 -07:00
handle_exit.c ARM: KVM: Remove handling of ARM_EXCEPTION_DATA/PREF_ABORT 2016-02-29 18:34:15 +00:00
init.S ARM: KVM: Switch to C-based stage2 init 2016-02-29 18:34:14 +00:00
interrupts.S ARM: KVM: Remove the old world switch 2016-02-29 18:34:14 +00:00
Kconfig KVM: arm/arm64: vgic-new: enable build 2016-05-20 15:40:09 +02:00
Makefile KVM: arm/arm64: vgic-new: enable build 2016-05-20 15:40:09 +02:00
mmio.c KVM: arm/arm64: Export mmio_read/write_bus 2016-05-20 15:39:42 +02:00
mmu.c kvm: arm64: Enable hardware updates of the Access Flag for Stage 2 page tables 2016-05-09 22:23:08 +02:00
perf.c ARM: KVM: add support for minimal host vs guest profiling 2013-04-28 21:44:01 -07:00
psci.c KVM: Use simple waitqueue for vcpu->wq 2016-02-25 11:27:16 +01:00
reset.c ARM: KVM: Move GP registers into the CPU context structure 2016-02-29 18:34:12 +00:00
trace.h arm/arm64: KVM: Improve kvm_exit tracepoint 2015-10-22 23:01:47 +02:00