• Christoffer Dall's avatar
    KVM: arm/arm64: vgic: Fix GICC_PMR uaccess on GICv3 and clarify ABI · 6d56111c
    Christoffer Dall authored
    As an oversight, for GICv2, we accidentally export the GICC_PMR register
    in the format of the GICH_VMCR.VMPriMask field in the lower 5 bits of a
    word, meaning that userspace must always use the lower 5 bits to
    communicate with the KVM device and must shift the value left by 3
    places to obtain the actual priority mask level.
    
    Since GICv3 supports the full 8 bits of priority masking in the ICH_VMCR,
    we have to fix the value we export when emulating a GICv2 on top of a
    hardware GICv3 and exporting the emulated GICv2 state to userspace.
    
    Take the chance to clarify this aspect of the ABI.
    Reviewed-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: default avatarChristoffer Dall <cdall@linaro.org>
    6d56111c
vgic-v2.c 10.3 KB