• Marc Zyngier's avatar
    arm64: KVM: vgic-v3: Save maintenance interrupt state only if required · b4344545
    Marc Zyngier authored
    Next on our list of useless accesses is the maintenance interrupt
    status registers (ICH_MISR_EL2, ICH_EISR_EL2).
    
    It is pointless to save them if we haven't asked for a maintenance
    interrupt the first place, which can only happen for two reasons:
    - Underflow: ICH_HCR_UIE will be set,
    - EOI: ICH_LR_EOI will be set.
    
    These conditions can be checked on the in-memory copies of the regs.
    Should any of these two condition be valid, we must read GICH_MISR.
    We can then check for ICH_MISR_EOI, and only when set read
    ICH_EISR_EL2.
    
    This means that in most case, we don't have to save them at all.
    Reviewed-by: default avatarChristoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    b4344545
vgic-v3-sr.c 7.58 KB