• Marc Zyngier's avatar
    arm64: KVM: vgic-v2: Add the GICV emulation infrastructure · fb5ee369
    Marc Zyngier authored
    In order to efficiently perform the GICV access on behalf of the
    guest, we need to be able to avoid going back all the way to
    the host kernel.
    
    For this, we introduce a new hook in the world switch code,
    conveniently placed just after populating the fault info.
    At that point, we only have saved/restored the GP registers,
    and we can quickly perform all the required checks (data abort,
    translation fault, valid faulting syndrome, not an external
    abort, not a PTW).
    
    Coming back from the emulation code, we need to skip the emulated
    instruction. This involves an additional bit of save/restore in
    order to be able to access the guest's PC (and possibly CPSR if
    this is a 32bit guest).
    
    At this stage, no emulation code is provided.
    Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    Reviewed-by: default avatarChristoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: default avatarChristoffer Dall <christoffer.dall@linaro.org>
    fb5ee369
switch.c 9.94 KB