• Mark Brown's avatar
    arm64/sve: Rework SVE access trap to convert state in registers · cccb78ce
    Mark Brown authored
    When we enable SVE usage in userspace after taking a SVE access trap we
    need to ensure that the portions of the register state that are not
    shared with the FPSIMD registers are zeroed. Currently we do this by
    forcing the FPSIMD registers to be saved to the task struct and converting
    them there. This is wasteful in the common case where the task state is
    loaded into the registers and we will immediately return to userspace
    since we can initialise the SVE state directly in registers instead of
    accessing multiple copies of the register state in memory.
    
    Instead in that common case do the conversion in the registers and
    update the task metadata so that we can return to userspace without
    spilling the register state to memory unless there is some other reason
    to do so.
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20210312190313.24598-1-broonie@kernel.orgSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    cccb78ce
fpsimd.h 4.99 KB