• Mark Brown's avatar
    arm64/sme: More sensibly define the size for the ZA register set · d158a060
    Mark Brown authored
    Since the vector length configuration mechanism is identical between SVE
    and SME we share large elements of the code including the definition for
    the maximum vector length. Unfortunately when we were defining the ABI
    for SVE we included not only the actual maximum vector length of 2048
    bits but also the value possible if all the bits reserved in the
    architecture for expansion of the LEN field were used, 16384 bits.
    
    This starts creating problems if we try to allocate anything for the ZA
    matrix based on the maximum possible vector length, as we do for the
    regset used with ptrace during the process of generating a core dump.
    While the maximum potential size for ZA with the current architecture is
    a reasonably managable 64K with the higher reserved limit ZA would be
    64M which leads to entirely reasonable complaints from the memory
    management code when we try to allocate a buffer of that size. Avoid
    these issues by defining the actual maximum vector length for the
    architecture and using it for the SME regsets.
    
    Also use the full ZA_PT_SIZE() with the header rather than just the
    actual register payload when specifying the size, fixing support for the
    largest vector lengths now that we have this new, lower define. With the
    SVE maximum this did not cause problems due to the extra headroom we
    had.
    
    While we're at it add a comment clarifying why even though ZA is a
    single register we tell the regset code that it is a multi-register
    regset.
    Reported-by: default avatarQian Cai <quic_qiancai@quicinc.com>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    Tested-by: default avatarNaresh Kamboju <naresh.kamboju@linaro.org>
    Link: https://lore.kernel.org/r/20220505221517.1642014-1-broonie@kernel.orgSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    d158a060
ptrace.c 52.9 KB