aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config/kernel-fpu.m423
-rw-r--r--include/os/linux/kernel/linux/simd_x86.h2
2 files changed, 23 insertions, 2 deletions
diff --git a/config/kernel-fpu.m4 b/config/kernel-fpu.m4
index eb9520c60..c6efebd8c 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.19: The asm/fpu/internal.h header was removed, it has been
+dnl # effectively empty since the 5.16 kernel.
+dnl #
dnl # 5.11: kernel_fpu_begin() is an inlined function now, so don't check
dnl # for it inside the kernel symbols.
dnl #
@@ -27,10 +30,22 @@ 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)
+
+ ZFS_LINUX_TRY_COMPILE([
+ #include <linux/module.h>
+ #include <asm/fpu/internal.h>
+ ],[
+ ],[
+ AC_DEFINE(HAVE_KERNEL_FPU_INTERNAL_HEADER, 1,
+ [kernel has asm/fpu/internal.h])
+ AC_MSG_RESULT([asm/fpu/api.h asm/fpu/internal.h])
+ ],[
+ AC_MSG_RESULT([asm/fpu/api.h])
+ ])
],[
- AC_MSG_RESULT(i387.h)
+ AC_MSG_RESULT([i387.h])
])
+
])
AC_DEFUN([ZFS_AC_KERNEL_SRC_FPU], [
@@ -38,7 +53,9 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_FPU], [
#include <linux/types.h>
#ifdef HAVE_KERNEL_FPU_API_HEADER
#include <asm/fpu/api.h>
+ #ifdef HAVE_KERNEL_FPU_INTERNAL_HEADER
#include <asm/fpu/internal.h>
+ #endif
#else
#include <asm/i387.h>
#endif
@@ -51,7 +68,9 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_FPU], [
#include <linux/types.h>
#ifdef HAVE_KERNEL_FPU_API_HEADER
#include <asm/fpu/api.h>
+ #ifdef HAVE_KERNEL_FPU_INTERNAL_HEADER
#include <asm/fpu/internal.h>
+ #endif
#else
#include <asm/i387.h>
#endif
diff --git a/include/os/linux/kernel/linux/simd_x86.h b/include/os/linux/kernel/linux/simd_x86.h
index 0fc4168b7..3564ea7f1 100644
--- a/include/os/linux/kernel/linux/simd_x86.h
+++ b/include/os/linux/kernel/linux/simd_x86.h
@@ -93,7 +93,9 @@
#if defined(HAVE_KERNEL_FPU_API_HEADER)
#include <asm/fpu/api.h>
+#if defined(HAVE_KERNEL_FPU_INTERNAL_HEADER)
#include <asm/fpu/internal.h>
+#endif
#else
#include <asm/i387.h>
#endif