• Mark Brown's avatar
    arm64/sme: Implement streaming SVE signal handling · 85ed24da
    Mark Brown authored
    When in streaming mode we have the same set of SVE registers as we do in
    regular SVE mode with the exception of FFR and the use of the SME vector
    length. Provide signal handling for these registers by taking one of the
    reserved words in the SVE signal context as a flags field and defining a
    flag which is set for streaming mode. When the flag is set the vector
    length is set to the streaming mode vector length and we save and
    restore streaming mode data. We support entering or leaving streaming
    mode based on the value of the flag but do not support changing the
    vector length, this is not currently supported SVE signal handling.
    
    We could instead allocate a separate record in the signal frame for the
    streaming mode SVE context but this inflates the size of the maximal signal
    frame required and adds complication when validating signal frames from
    userspace, especially given the current structure of the code.
    
    Any implementation of support for streaming mode vectors in signals will
    have some potential for causing issues for applications that attempt to
    handle SVE vectors in signals, use streaming mode but do not understand
    streaming mode in their signal handling code, it is hard to identify a
    case that is clearly better than any other - they all have cases where
    they could cause unexpected register corruption or faults.
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    Reviewed-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    Link: https://lore.kernel.org/r/20220419112247.711548-19-broonie@kernel.orgSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    85ed24da
signal.c 26.5 KB