• Christoffer Dall's avatar
    arm64: KVM: Handle traps of ICC_SRE_EL1 as RAZ/WI · db7dedd0
    Christoffer Dall authored
    When running on a system with a GICv3, we currenly don't allow the guest
    to access the system register interface of the GICv3.  We do this by
    clearing the ICC_SRE_EL2.Enable, which causes all guest accesses to
    ICC_SRE_EL1 to trap to EL2 and causes all guest accesses to other ICC_
    registers to cause an undefined exception in the guest.
    
    However, we currently don't handle the trap of guest accesses to
    ICC_SRE_EL1 and will spill out a warning.  The trap just needs to handle
    the access as RAZ/WI, and a guest that tries to prod this register and
    set ICC_SRE_EL1.SRE=1, must read back the value (which Linux already
    does) to see if it succeeded, and will thus observe that ICC_SRE_EL1.SRE
    was not set.
    
    Add the simple trap handler in the sorted table of the system registers.
    Signed-off-by: default avatarChristoffer Dall <christoffer.dall@linaro.org>
    [ardb: added cp15 handling]
    Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    db7dedd0
sys_regs.c 43.2 KB