• Jonathan Austin's avatar
    KVM: ARM: fix the size of TTBCR_{T0SZ,T1SZ} masks · 5e497046
    Jonathan Austin authored
    The T{0,1}SZ fields of TTBCR are 3 bits wide when using the long descriptor
    format. Likewise, the T0SZ field of the HTCR is 3-bits. KVM currently
    defines TTBCR_T{0,1}SZ as 3, not 7.
    
    The T0SZ mask is used to calculate the value for the HTCR, both to pick out
    TTBCR.T0SZ and mask off the equivalent field in the HTCR during
    read-modify-write. The incorrect mask size causes the (UNKNOWN) reset value
    of HTCR.T0SZ to leak in to the calculated HTCR value. Linux will hang when
    initializing KVM if HTCR's reset value has bit 2 set (sometimes the case on
    A7/TC2)
    
    Fixing T0SZ allows A7 cores to boot and T1SZ is also fixed for completeness.
    Signed-off-by: default avatarJonathan Austin <jonathan.austin@arm.com>
    Acked-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: default avatarChristoffer Dall <christoffer.dall@linaro.org>
    5e497046
kvm_arm.h 6.65 KB