• Christoffer Dall's avatar
    KVM: arm/arm64: Handle VGICv3 save/restore from the main VGIC code on VHE · 771621b0
    Christoffer Dall authored
    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: default avatarChristoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    771621b0
switch.c 14.4 KB