]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Linux 5.16 compat: don't use XSTATE_XSAVE to save FPU state
authorAttila Fülöp <attila@fueloep.org>
Wed, 9 Feb 2022 20:50:10 +0000 (21:50 +0100)
committerTony Hutter <hutter2@llnl.gov>
Thu, 17 Feb 2022 01:58:55 +0000 (17:58 -0800)
commit3b52ccd7d7f5e59a1306b7e904e0e244248f94d9
treebbe0b80669828647cc731c5f1ac3dd5eadb9e952
parentbb271d67e85ad90cda640e382daf3a15f6e82d9e
Linux 5.16 compat: don't use XSTATE_XSAVE to save FPU state

Linux 5.16 moved XSTATE_XSAVE and XSTATE_XRESTORE out of our reach,
so add our own XSAVE{,OPT,S} code and use it for Linux 5.16.

Please note that this differs from previous behavior in that it
won't handle exceptions created by XSAVE an XRSTOR. This is sensible
for three reasons.

 - Exceptions during XSAVE and XRSTOR can only occur if the feature
   is not supported or enabled or the memory operand isn't aligned
   on a 64 byte boundary. If this happens something else went
   terribly wrong, and it may be better to stop execution.

 - Previously we just printed a warning and didn't handle the fault,
   this is arguable for the above reason.

 - All other *SAVE instruction also don't handle exceptions, so this
   at least aligns behavior.

Finally add a test to catch such a regression in the future.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Attila Fülöp <attila@fueloep.org>
Closes #13042
Closes #13059
config/kernel-fpu.m4
config/toolchain-simd.m4
configure.ac
include/os/linux/kernel/linux/simd_x86.h
module/zcommon/zfs_prop.c
tests/runfiles/linux.run
tests/zfs-tests/tests/functional/Makefile.am
tests/zfs-tests/tests/functional/simd/Makefile.am [new file with mode: 0644]
tests/zfs-tests/tests/functional/simd/simd_supported.ksh [new file with mode: 0755]