diff options
author | Coleman Kane <ckane@colemankane.org> | 2021-11-15 23:23:30 -0500 |
---|---|---|
committer | Brian Behlendorf <behlendorf1@llnl.gov> | 2021-11-29 10:49:33 -0800 |
commit | 75b309a9384c05a0e8ab8d63aef73a6b69c0a49a (patch) | |
tree | 8c270a020e7f400fb66fb68bb34680a126a2f049 | |
parent | c0fb44c50609c973bb06d0ec24e9e659ce6c9446 (diff) |
Linux 5.16 compat: asm/fpu/xcr.h is new location for xgetbv/xsetbv
Linux 5.16 moved these functions into this new header in commit
1b4fb8545f2b00f2844c4b7619d64d98440a477c. This change adds code to look
for the presence of this header, and include it so that the code using
xgetbv & xsetbv will compile again.
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Coleman Kane <ckane@colemankane.org>
Closes #12800
-rw-r--r-- | config/kernel-fpu.m4 | 15 | ||||
-rw-r--r-- | include/os/linux/kernel/linux/simd_x86.h | 3 |
2 files changed, 18 insertions, 0 deletions
diff --git a/config/kernel-fpu.m4 b/config/kernel-fpu.m4 index 4d6fe0522..faa64f1ec 100644 --- a/config/kernel-fpu.m4 +++ b/config/kernel-fpu.m4 @@ -2,6 +2,9 @@ dnl # dnl # Handle differences in kernel FPU code. dnl # dnl # Kernel +dnl # 5.16: XCR code put into asm/fpu/xcr.h +dnl # HAVE_KERNEL_FPU_XCR_HEADER +dnl # dnl # 5.0: Wrappers have been introduced to save/restore the FPU state. dnl # This change was made to the 4.19.38 and 4.14.120 LTS kernels. dnl # HAVE_KERNEL_FPU_INTERNAL @@ -25,6 +28,18 @@ AC_DEFUN([ZFS_AC_KERNEL_FPU_HEADER], [ AC_DEFINE(HAVE_KERNEL_FPU_API_HEADER, 1, [kernel has asm/fpu/api.h]) AC_MSG_RESULT(asm/fpu/api.h) + AC_MSG_CHECKING([whether fpu/xcr header is available]) + ZFS_LINUX_TRY_COMPILE([ + #include <linux/module.h> + #include <asm/fpu/xcr.h> + ],[ + ],[ + AC_DEFINE(HAVE_KERNEL_FPU_XCR_HEADER, 1, + [kernel has asm/fpu/xcr.h]) + AC_MSG_RESULT(asm/fpu/xcr.h) + ],[ + AC_MSG_RESULT(no asm/fpu/xcr.h) + ]) ],[ AC_MSG_RESULT(i387.h & xcr.h) ]) diff --git a/include/os/linux/kernel/linux/simd_x86.h b/include/os/linux/kernel/linux/simd_x86.h index cdd3286d2..f2ae0fcbc 100644 --- a/include/os/linux/kernel/linux/simd_x86.h +++ b/include/os/linux/kernel/linux/simd_x86.h @@ -88,6 +88,9 @@ #if defined(HAVE_KERNEL_FPU_API_HEADER) #include <asm/fpu/api.h> #include <asm/fpu/internal.h> +#if defined(HAVE_KERNEL_FPU_XCR_HEADER) +#include <asm/fpu/xcr.h> +#endif #else #include <asm/i387.h> #include <asm/xcr.h> |