arm64/sme: Disable streaming mode and ZA when flushing CPU state
Both streaming mode and ZA may increase power consumption when they are enabled and streaming mode makes many FPSIMD and SVE instructions undefined which will cause problems for any kernel mode floating point so disable both when we flush the CPU state. This covers both kernel_neon_begin() and idle and after flushing the state a reload is always required anyway. Signed-off-by: Mark Brown <broonie@kernel.org> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Link: https://lore.kernel.org/r/20220419112247.711548-23-broonie@kernel.org Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
parent
776b4a1cf3
commit
d45d7ff704
@ -1759,6 +1759,15 @@ static void fpsimd_flush_cpu_state(void)
|
||||
{
|
||||
WARN_ON(!system_supports_fpsimd());
|
||||
__this_cpu_write(fpsimd_last_state.st, NULL);
|
||||
|
||||
/*
|
||||
* Leaving streaming mode enabled will cause issues for any kernel
|
||||
* NEON and leaving streaming mode or ZA enabled may increase power
|
||||
* consumption.
|
||||
*/
|
||||
if (system_supports_sme())
|
||||
sme_smstop();
|
||||
|
||||
set_thread_flag(TIF_FOREIGN_FPSTATE);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user