arm64/sme: Restore SME registers on exit from suspend
authorMark Brown <broonie@kernel.org>
Tue, 13 Feb 2024 23:06:32 +0000 (23:06 +0000)
committerWill Deacon <will@kernel.org>
Tue, 20 Feb 2024 12:19:15 +0000 (12:19 +0000)
commit9533864816fb4a6207c63b7a98396351ce1a9fae
treeac93cad7b912da6586a703a6cde979fdc0f3af9e
parenta6b3eb304a82c29665a0ab947cfe276f6d29f523
arm64/sme: Restore SME registers on exit from suspend

The fields in SMCR_EL1 and SMPRI_EL1 reset to an architecturally UNKNOWN
value. Since we do not otherwise manage the traps configured in this
register at runtime we need to reconfigure them after a suspend in case
nothing else was kind enough to preserve them for us.

The vector length will be restored as part of restoring the SME state for
the next SME using task.

Fixes: a1f4ccd25cc2 ("arm64/sme: Provide Kconfig for SME")
Reported-by: Jackson Cooper-Driver <Jackson.Cooper-Driver@arm.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20240213-arm64-sme-resume-v3-1-17e05e493471@kernel.org
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/include/asm/fpsimd.h
arch/arm64/kernel/fpsimd.c
arch/arm64/kernel/suspend.c