]> git.baikalelectronics.ru Git - kernel.git/commit
KVM: arm/arm64: Handle VGICv3 save/restore from the main VGIC code on VHE
authorChristoffer Dall <christoffer.dall@linaro.org>
Wed, 4 Oct 2017 21:42:32 +0000 (23:42 +0200)
committerMarc Zyngier <marc.zyngier@arm.com>
Mon, 19 Mar 2018 10:53:21 +0000 (10:53 +0000)
commit26ba71f1e126ccb36cf781376d5b9e2039e909c2
tree8b023fc1bfa76949811657c65173baa66dfd789f
parent7f7db87ee2938b90f68e1be62dae5fdcde921820
KVM: arm/arm64: Handle VGICv3 save/restore from the main VGIC code on VHE

Just like we can program the GICv2 hypervisor control interface directly
from the core vgic code, we can do the same for the GICv3 hypervisor
control interface on VHE systems.

We do this by simply calling the save/restore functions when we have VHE
and we can then get rid of the save/restore function calls from the VHE
world switch function.

One caveat is that we now write GICv3 system register state before the
potential early exit path in the run loop, and because we sync back
state in the early exit path, we have to ensure that we read a
consistent GIC state from the sync path, even though we have never
actually run the guest with the newly written GIC state.  We solve this
by inserting an ISB in the early exit path.

Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
arch/arm64/kvm/hyp/switch.c
virt/kvm/arm/arm.c
virt/kvm/arm/vgic/vgic.c