]> git.proxmox.com Git - mirror_spl.git/commitdiff
When checking for symbol exports, try compiling.
authorEtienne Dechamps <etienne.dechamps@ovh.net>
Mon, 16 Jul 2012 15:04:05 +0000 (17:04 +0200)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 26 Jul 2012 22:12:35 +0000 (15:12 -0700)
This patch adds a new autoconf function: SPL_LINUX_TRY_COMPILE_SYMBOL.
This new function does the following:

 - Call LINUX_TRY_COMPILE with the specified parameters.
 - If unsuccessful, return false.
 - If successful and we're configuring with --enable-linux-builtin,
   return true.
 - Else, call CHECK_SYMBOL_EXPORT with the specified parameters and
   return the result.

All calls to CHECK_SYMBOL_EXPORT are converted to
LINUX_TRY_COMPILE_SYMBOL so that the tests work even when configuring
for builtin on a kernel which doesn't have loadable module support, or
hasn't been built yet.

The only exception are:

 - AC_GET_VMALLOC_INFO, because we don't even have a public header to
include in the test case, but that's okay considering this symbol can
be ignored just fine.

- SPL_AC_DEVICE_CREATE, which is legacy API for 2.6.18 kernels.  Since
kernels this old are no longer supported it should arguably just be
removed entirely from the build system.

Note that we're also checking for the correct prototype with an actual
call, which was not the case with CHECK_SYMBOL_EXPORT. However, for
"complicated" test cases like with multiple symbol versions (e.g.
vfs_fsync), we stick with the original behavior and only check for the
function's existence.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue zfsonlinux/zfs#851

config/spl-build.m4
configure
spl_config.h.in

index 466d9eb502ec8ffc86d4297643737aef4a2d4d94..7ec81e7131e992e079fccff67110148f1153575c 100644 (file)
@@ -137,7 +137,7 @@ AC_DEFUN([SPL_AC_KERNEL], [
                        sourcelink=$(readlink -f "$headersdir")
                else
                        sourcelink=$(ls -1d /usr/src/kernels/* \
-                                    /usr/src/linux-* \
+                                    /usr/src/linux-* \
                                     2>/dev/null | grep -v obj | tail -1)
                fi
 
@@ -678,8 +678,7 @@ dnl #
 dnl # SPL_CHECK_SYMBOL_EXPORT
 dnl # check symbol exported or not
 dnl #
-AC_DEFUN([SPL_CHECK_SYMBOL_EXPORT],
-       [AC_MSG_CHECKING([whether symbol $1 is exported])
+AC_DEFUN([SPL_CHECK_SYMBOL_EXPORT], [
        grep -q -E '[[[:space:]]]$1[[[:space:]]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
@@ -689,24 +688,42 @@ AC_DEFUN([SPL_CHECK_SYMBOL_EXPORT],
                        grep -q -E "EXPORT_SYMBOL.*($1)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
-                       AC_MSG_RESULT([no])
+               if test $export -eq 0; then :
                        $4
-               else
-                       AC_MSG_RESULT([yes])
+               else :
                        $3
                fi
-       else
-               AC_MSG_RESULT([yes])
+       else :
                $3
        fi
 ])
 
+dnl #
+dnl # SPL_LINUX_TRY_COMPILE_SYMBOL
+dnl # like SPL_LINUX_TRY_COMPILE, except SPL_CHECK_SYMBOL_EXPORT
+dnl # is called if not compiling for builtin
+dnl #
+AC_DEFUN([SPL_LINUX_TRY_COMPILE_SYMBOL], [
+       SPL_LINUX_TRY_COMPILE([$1], [$2], [rc=0], [rc=1])
+       if test $rc -ne 0; then :
+               $6
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+                       SPL_CHECK_SYMBOL_EXPORT([$3], [$4], [rc=0], [rc=1])
+               fi
+               if test $rc -ne 0; then :
+                       $6
+               else :
+                       $5
+               fi
+       fi
+])
+
 dnl #
 dnl # SPL_CHECK_SYMBOL_HEADER
 dnl # check if a symbol prototype is defined in listed headers.
@@ -717,10 +734,10 @@ AC_DEFUN([SPL_CHECK_SYMBOL_HEADER], [
        for file in $3; do
                grep -q "$2" "$LINUX/$file" 2>/dev/null
                rc=$?
-               if test $rc -eq 0; then
-                       header=1
-                       break;
-               fi
+               if test $rc -eq 0; then
+                       header=1
+                       break;
+               fi
        done
        if test $header -eq 0; then
                AC_MSG_RESULT([no])
@@ -991,10 +1008,18 @@ AC_DEFUN([SPL_AC_PATH_IN_NAMEIDATA],
 dnl #
 dnl # Custom SPL patch may export this system it is not required
 dnl #
-AC_DEFUN([SPL_AC_TASK_CURR], [
-       SPL_CHECK_SYMBOL_EXPORT([task_curr], [kernel/sched.c],
-               [AC_DEFINE(HAVE_TASK_CURR, 1, [task_curr() exported])],
-               [])
+AC_DEFUN([SPL_AC_TASK_CURR],
+       [AC_MSG_CHECKING([whether task_curr() is available])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/sched.h>
+       ], [
+               task_curr(NULL);
+       ], [task_curr], [kernel/sched.c], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_TASK_CURR, 1, [task_curr() is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
@@ -1060,13 +1085,15 @@ dnl # 2.6.18 API change, check whether device_create() is available.
 dnl # Device_create() was introduced in 2.6.18 and depricated 
 dnl # class_device_create() which was fully removed in 2.6.26.
 dnl #
-AC_DEFUN([SPL_AC_DEVICE_CREATE], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [device_create],
-               [drivers/base/core.c],
-               [AC_DEFINE(HAVE_DEVICE_CREATE, 1,
-               [device_create() is available])],
-               [])
+AC_DEFUN([SPL_AC_DEVICE_CREATE],
+       [AC_MSG_CHECKING([whether device_create() is available])
+       SPL_CHECK_SYMBOL_EXPORT([device_create], [drivers/base/core.c], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_DEVICE_CREATE, 1,
+                         [device_create() is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
@@ -1096,25 +1123,37 @@ dnl # 2.6.13 API change, check whether class_device_create() is available.
 dnl # Class_device_create() was introduced in 2.6.13 and depricated
 dnl # class_simple_device_add() which was fully removed in 2.6.13.
 dnl #
-AC_DEFUN([SPL_AC_CLASS_DEVICE_CREATE], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [class_device_create],
-               [drivers/base/class.c],
-               [AC_DEFINE(HAVE_CLASS_DEVICE_CREATE, 1,
-               [class_device_create() is available])],
-               [])
+AC_DEFUN([SPL_AC_CLASS_DEVICE_CREATE],
+       [AC_MSG_CHECKING([whether class_device_create() is available])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/device.h>
+       ], [
+               class_device_create(NULL, NULL, 0, NULL, NULL);
+       ], [class_device_create], [drivers/base/class.c], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_CLASS_DEVICE_CREATE, 1,
+                         [class_device_create() is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
 dnl # 2.6.26 API change, set_normalized_timespec() is exported.
 dnl #
-AC_DEFUN([SPL_AC_SET_NORMALIZED_TIMESPEC_EXPORT], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [set_normalized_timespec],
-               [kernel/time.c],
-               [AC_DEFINE(HAVE_SET_NORMALIZED_TIMESPEC_EXPORT, 1,
-               [set_normalized_timespec() is available as export])],
-               [])
+AC_DEFUN([SPL_AC_SET_NORMALIZED_TIMESPEC_EXPORT],
+       [AC_MSG_CHECKING([whether set_normalized_timespec() is available as export])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/time.h>
+       ], [
+               set_normalized_timespec(NULL, 0, 0);
+       ], [set_normalized_timespec], [kernel/time.c], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_SET_NORMALIZED_TIMESPEC_EXPORT, 1,
+                         [set_normalized_timespec() is available as export])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
@@ -1264,13 +1303,19 @@ dnl # 2.6.9 API change,
 dnl # check whether 'monotonic_clock()' is available it may
 dnl # be available for some archs but not others.
 dnl #
-AC_DEFUN([SPL_AC_MONOTONIC_CLOCK], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [monotonic_clock],
-               [],
-               [AC_DEFINE(HAVE_MONOTONIC_CLOCK, 1,
-               [monotonic_clock() is available])],
-               [])
+AC_DEFUN([SPL_AC_MONOTONIC_CLOCK],
+       [AC_MSG_CHECKING([whether monotonic_clock() is available])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/timex.h>
+       ], [
+               monotonic_clock();
+       ], [monotonic_clock], [], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_MONOTONIC_CLOCK, 1,
+                         [monotonic_clock() is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
@@ -1384,13 +1429,19 @@ dnl #
 dnl # 2.6.18 API change,
 dnl # kallsyms_lookup_name no longer exported
 dnl #
-AC_DEFUN([SPL_AC_KALLSYMS_LOOKUP_NAME], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [kallsyms_lookup_name],
-               [],
-               [AC_DEFINE(HAVE_KALLSYMS_LOOKUP_NAME, 1,
-               [kallsyms_lookup_name() is available])],
-               [])
+AC_DEFUN([SPL_AC_KALLSYMS_LOOKUP_NAME],
+       [AC_MSG_CHECKING([whether kallsyms_lookup_name() is available])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/kallsyms.h>
+       ], [
+               kallsyms_lookup_name(NULL);
+       ], [kallsyms_lookup_name], [], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_KALLSYMS_LOOKUP_NAME, 1,
+                         [kallsyms_lookup_name() is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
@@ -1400,13 +1451,15 @@ dnl # custom kernel with the *-spl-export-symbols.patch which will export
 dnl # these symbols for use.  If your already rolling a custom kernel for
 dnl # your environment this is recommended.
 dnl #
-AC_DEFUN([SPL_AC_GET_VMALLOC_INFO], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [get_vmalloc_info],
-               [],
-               [AC_DEFINE(HAVE_GET_VMALLOC_INFO, 1,
-               [get_vmalloc_info() is available])],
-               [])
+AC_DEFUN([SPL_AC_GET_VMALLOC_INFO],
+       [AC_MSG_CHECKING([whether get_vmalloc_info() is available])
+       SPL_CHECK_SYMBOL_EXPORT([get_vmalloc_info], [], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_GET_VMALLOC_INFO, 1,
+                         [get_vmalloc_info() is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
@@ -1428,7 +1481,7 @@ AC_DEFUN([SPL_AC_PGDAT_HELPERS], [
        rc=$?
        if test $rc -eq 0; then
                AC_MSG_RESULT([yes])
-                AC_DEFINE(HAVE_PGDAT_HELPERS, 1, [pgdat helpers are available])
+               AC_DEFINE(HAVE_PGDAT_HELPERS, 1, [pgdat helpers are available])
        else
                AC_MSG_RESULT([no])
        fi
@@ -1441,13 +1494,19 @@ dnl # custom kernel with the *-spl-export-symbols.patch which will export
 dnl # these symbols for use.  If your already rolling a custom kernel for
 dnl # your environment this is recommended.
 dnl #
-AC_DEFUN([SPL_AC_FIRST_ONLINE_PGDAT], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [first_online_pgdat],
-               [],
-               [AC_DEFINE(HAVE_FIRST_ONLINE_PGDAT, 1,
-               [first_online_pgdat() is available])],
-               [])
+AC_DEFUN([SPL_AC_FIRST_ONLINE_PGDAT],
+       [AC_MSG_CHECKING([whether first_online_pgdat() is available])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/mmzone.h>
+       ], [
+               first_online_pgdat();
+       ], [first_online_pgdat], [], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_FIRST_ONLINE_PGDAT, 1,
+                         [first_online_pgdat() is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
@@ -1457,13 +1516,19 @@ dnl # custom kernel with the *-spl-export-symbols.patch which will export
 dnl # these symbols for use.  If your already rolling a custom kernel for
 dnl # your environment this is recommended.
 dnl #
-AC_DEFUN([SPL_AC_NEXT_ONLINE_PGDAT], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [next_online_pgdat],
-               [],
-               [AC_DEFINE(HAVE_NEXT_ONLINE_PGDAT, 1,
-               [next_online_pgdat() is available])],
-               [])
+AC_DEFUN([SPL_AC_NEXT_ONLINE_PGDAT],
+       [AC_MSG_CHECKING([whether next_online_pgdat() is available])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/mmzone.h>
+       ], [
+               next_online_pgdat(NULL);
+       ], [next_online_pgdat], [], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_NEXT_ONLINE_PGDAT, 1,
+                         [next_online_pgdat() is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
@@ -1473,26 +1538,35 @@ dnl # custom kernel with the *-spl-export-symbols.patch which will export
 dnl # these symbols for use.  If your already rolling a custom kernel for
 dnl # your environment this is recommended.
 dnl #
-AC_DEFUN([SPL_AC_NEXT_ZONE], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [next_zone],
-               [],
-               [AC_DEFINE(HAVE_NEXT_ZONE, 1,
-               [next_zone() is available])],
-               [])
+AC_DEFUN([SPL_AC_NEXT_ZONE],
+       [AC_MSG_CHECKING([whether next_zone() is available])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/mmzone.h>
+       ], [
+               next_zone(NULL);
+       ], [next_zone], [], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_NEXT_ZONE, 1, [next_zone() is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
 dnl # 2.6.17 API change,
 dnl # See SPL_AC_PGDAT_HELPERS for details.
 dnl #
-AC_DEFUN([SPL_AC_PGDAT_LIST], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [pgdat_list],
-               [],
-               [AC_DEFINE(HAVE_PGDAT_LIST, 1,
-               [pgdat_list is available])],
-               [])
+AC_DEFUN([SPL_AC_PGDAT_LIST],
+       [AC_MSG_CHECKING([whether pgdat_list is available])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/topology.h>
+               pg_data_t *tmp = pgdat_list;
+       ], [], [pgdat_list], [], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_PGDAT_LIST, 1, [pgdat_list is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
@@ -1684,12 +1758,18 @@ AC_DEFUN([SPL_AC_GET_ZONE_COUNTS], [
                AC_DEFINE(NEED_GET_ZONE_COUNTS, 1,
                          [get_zone_counts() is needed])
 
-               SPL_CHECK_SYMBOL_EXPORT(
-                       [get_zone_counts],
-                       [],
-                       [AC_DEFINE(HAVE_GET_ZONE_COUNTS, 1,
-                       [get_zone_counts() is available])],
-                       [])
+               AC_MSG_CHECKING([whether get_zone_counts() is available])
+               SPL_LINUX_TRY_COMPILE_SYMBOL([
+                       #include <linux/mmzone.h>
+               ], [
+                       get_zone_counts(NULL, NULL, NULL);
+               ], [get_zone_counts], [], [
+                       AC_MSG_RESULT(yes)
+                       AC_DEFINE(HAVE_GET_ZONE_COUNTS, 1,
+                                 [get_zone_counts() is available])
+               ], [
+                       AC_MSG_RESULT(no)
+               ])
        ])
 ])
 
@@ -1697,25 +1777,37 @@ dnl #
 dnl # 2.6.27 API change,
 dnl # The user_path_dir() replaces __user_walk()
 dnl #
-AC_DEFUN([SPL_AC_USER_PATH_DIR], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [user_path_at],
-               [],
-               [AC_DEFINE(HAVE_USER_PATH_DIR, 1,
-               [user_path_dir() is available])],
-               [])
+AC_DEFUN([SPL_AC_USER_PATH_DIR],
+       [AC_MSG_CHECKING([whether user_path_dir() is available])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/fcntl.h>
+               #include <linux/namei.h>
+       ], [
+               user_path_dir(NULL, NULL);
+       ], [user_path_at], [], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_USER_PATH_DIR, 1, [user_path_dir() is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
 dnl # Symbol available in RHEL kernels not in stock kernels.
 dnl #
-AC_DEFUN([SPL_AC_SET_FS_PWD], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [set_fs_pwd],
-               [],
-               [AC_DEFINE(HAVE_SET_FS_PWD, 1,
-               [set_fs_pwd() is available])],
-               [])
+AC_DEFUN([SPL_AC_SET_FS_PWD],
+       [AC_MSG_CHECKING([whether set_fs_pwd() is available])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/spinlock.h>
+               #include <linux/fs_struct.h>
+       ], [
+               (void) set_fs_pwd;
+       ], [set_fs_pwd], [], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_SET_FS_PWD, 1, [set_fs_pwd() is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
@@ -1823,26 +1915,37 @@ AC_DEFUN([SPL_AC_CRED_STRUCT], [
 dnl #
 dnl # Custom SPL patch may export this symbol.
 dnl #
-AC_DEFUN([SPL_AC_GROUPS_SEARCH], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [groups_search],
-               [],
-               [AC_DEFINE(HAVE_GROUPS_SEARCH, 1,
-               [groups_search() is available])],
-               [])
+AC_DEFUN([SPL_AC_GROUPS_SEARCH],
+       [AC_MSG_CHECKING([whether groups_search() is available])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/cred.h>
+       ], [
+               groups_search(NULL, 0);
+       ], [groups_search], [], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_GROUPS_SEARCH, 1, [groups_search() is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
 dnl # 2.6.x API change,
 dnl # __put_task_struct() was exported in RHEL5 but unavailable elsewhere.
 dnl #
-AC_DEFUN([SPL_AC_PUT_TASK_STRUCT], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [__put_task_struct],
-               [],
-               [AC_DEFINE(HAVE_PUT_TASK_STRUCT, 1,
-               [__put_task_struct() is available])],
-               [])
+AC_DEFUN([SPL_AC_PUT_TASK_STRUCT],
+       [AC_MSG_CHECKING([whether __put_task_struct() is available])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/sched.h>
+       ], [
+               __put_task_struct(NULL);
+       ], [__put_task_struct], [], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_PUT_TASK_STRUCT, 1,
+                         [__put_task_struct() is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
@@ -1868,25 +1971,36 @@ dnl #
 dnl # 2.6.x API change,
 dnl # kvasprintf() function added.
 dnl #
-AC_DEFUN([SPL_AC_KVASPRINTF], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [kvasprintf],
-               [],
-               [AC_DEFINE(HAVE_KVASPRINTF, 1,
-               [kvasprintf() is available])],
-               [])
+AC_DEFUN([SPL_AC_KVASPRINTF],
+       [AC_MSG_CHECKING([whether kvasprintf() is available])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/kernel.h>
+       ], [
+               kvasprintf(0, NULL, *((va_list*)NULL));
+       ], [kvasprintf], [], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_KVASPRINTF, 1, [kvasprintf() is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
 dnl # 2.6.29 API change,
 dnl # vfs_fsync() funcation added, prior to this use file_fsync().
 dnl #
-AC_DEFUN([SPL_AC_VFS_FSYNC], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [vfs_fsync],
-               [fs/sync.c],
-               [AC_DEFINE(HAVE_VFS_FSYNC, 1, [vfs_fsync() is available])],
-               [])
+AC_DEFUN([SPL_AC_VFS_FSYNC],
+       [AC_MSG_CHECKING([whether vfs_fsync() is available])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/fs.h>
+       ], [
+               (void) vfs_fsync;
+       ], [vfs_fsync], [fs/sync.c], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_VFS_FSYNC, 1, [vfs_fsync() is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
@@ -1914,13 +2028,18 @@ dnl # condition.  The fixed version is exported as a symbol.  The race
 dnl # condition is fixed by acquiring sem->wait_lock, so we must not
 dnl # call that version while holding sem->wait_lock.
 dnl #
-AC_DEFUN([SPL_AC_EXPORTED_RWSEM_IS_LOCKED], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [rwsem_is_locked],
-               [lib/rwsem-spinlock.c],
-               [AC_DEFINE(RWSEM_IS_LOCKED_TAKES_WAIT_LOCK, 1,
-               [rwsem_is_locked() acquires sem->wait_lock])],
-               [])
+AC_DEFUN([SPL_AC_EXPORTED_RWSEM_IS_LOCKED],
+       [AC_MSG_CHECKING([whether rwsem_is_locked() acquires sem->wait_lock])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/rwsem.h>
+               int rwsem_is_locked(struct rw_semaphore *sem) { return 0; }
+       ], [], [rwsem_is_locked], [lib/rwsem-spinlock.c], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(RWSEM_IS_LOCKED_TAKES_WAIT_LOCK, 1,
+                         [rwsem_is_locked() acquires sem->wait_lock])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
@@ -1937,18 +2056,31 @@ dnl # of these functions are exported invalidate_inodes() can be
 dnl # safely used.
 dnl #
 AC_DEFUN([SPL_AC_KERNEL_INVALIDATE_INODES], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [invalidate_inodes],
-               [],
-               [AC_DEFINE(HAVE_INVALIDATE_INODES, 1,
-               [invalidate_inodes() is available])],
-               [])
-       SPL_CHECK_SYMBOL_EXPORT(
-               [invalidate_inodes_check],
-               [],
-               [AC_DEFINE(HAVE_INVALIDATE_INODES_CHECK, 1,
-               [invalidate_inodes_check() is available])],
-               [])
+       AC_MSG_CHECKING([whether invalidate_inodes() is available])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/fs.h>
+       ], [
+               invalidate_inodes;
+       ], [invalidate_inodes], [], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_INVALIDATE_INODES, 1,
+                         [invalidate_inodes() is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
+       AC_MSG_CHECKING([whether invalidate_inodes_check() is available])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/fs.h>
+       ], [
+               invalidate_inodes_check(NULL, 0);
+       ], [invalidate_inodes_check], [], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_INVALIDATE_INODES_CHECK, 1,
+                         [invalidate_inodes_check() is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
@@ -1987,13 +2119,19 @@ dnl # There currently exists no exposed API to partially shrink the dcache.
 dnl # The expected mechanism to shrink the cache is a registered shrinker
 dnl # which is called during memory pressure.
 dnl #
-AC_DEFUN([SPL_AC_SHRINK_DCACHE_MEMORY], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [shrink_dcache_memory],
-               [fs/dcache.c],
-               [AC_DEFINE(HAVE_SHRINK_DCACHE_MEMORY, 1,
-               [shrink_dcache_memory() is available])],
-               [])
+AC_DEFUN([SPL_AC_SHRINK_DCACHE_MEMORY],
+       [AC_MSG_CHECKING([whether shrink_dcache_memory() is available])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/dcache.h>
+       ], [
+               shrink_dcache_memory(0, 0);
+       ], [shrink_dcache_memory], [fs/dcache.c], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_SHRINK_DCACHE_MEMORY, 1,
+                         [shrink_dcache_memory() is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
@@ -2002,13 +2140,19 @@ dnl # There currently exists no exposed API to partially shrink the icache.
 dnl # The expected mechanism to shrink the cache is a registered shrinker
 dnl # which is called during memory pressure.
 dnl #
-AC_DEFUN([SPL_AC_SHRINK_ICACHE_MEMORY], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [shrink_icache_memory],
-               [fs/inode.c],
-               [AC_DEFINE(HAVE_SHRINK_ICACHE_MEMORY, 1,
-               [shrink_icache_memory() is available])],
-               [])
+AC_DEFUN([SPL_AC_SHRINK_ICACHE_MEMORY],
+       [AC_MSG_CHECKING([whether shrink_icache_memory() is available])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/dcache.h>
+       ], [
+               shrink_icache_memory(0, 0);
+       ], [shrink_icache_memory], [fs/inode.c], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_SHRINK_ICACHE_MEMORY, 1,
+                         [shrink_icache_memory() is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
@@ -2034,13 +2178,19 @@ dnl # The kern_path_parent() symbol is no longer exported by the kernel.
 dnl # However, it remains the prefered interface and since we still have
 dnl # access to the prototype we dynamically lookup the required address.
 dnl #
-AC_DEFUN([SPL_AC_KERN_PATH_PARENT_SYMBOL], [
-       SPL_CHECK_SYMBOL_EXPORT(
-               [kern_path_parent],
-               [fs/namei.c],
-               [AC_DEFINE(HAVE_KERN_PATH_PARENT_SYMBOL, 1,
-               [kern_path_parent() is available])],
-               [])
+AC_DEFUN([SPL_AC_KERN_PATH_PARENT_SYMBOL],
+       [AC_MSG_CHECKING([whether kern_path_parent() is available])
+       SPL_LINUX_TRY_COMPILE_SYMBOL([
+               #include <linux/namei.h>
+       ], [
+               kern_path_parent(NULL, NULL);
+       ], [kern_path_parent], [fs/namei.c], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_KERN_PATH_PARENT_SYMBOL, 1,
+                         [kern_path_parent() is available])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
index 04acdf1b1c07263c2e95f0d3eb5ccd09cdf899d2..1ca8e847f078501a2afbc4540ff5073d8768ace2 100755 (executable)
--- a/configure
+++ b/configure
@@ -11772,7 +11772,7 @@ $as_echo_n "checking kernel source directory... " >&6; }
                        sourcelink=$(readlink -f "$headersdir")
                else
                        sourcelink=$(ls -1d /usr/src/kernels/* \
-                                    /usr/src/linux-* \
+                                    /usr/src/linux-* \
                                     2>/dev/null | grep -v obj | tail -1)
                fi
 
 
 
 
+       { $as_echo "$as_me:$LINENO: checking whether task_curr() is available" >&5
+$as_echo_n "checking whether task_curr() is available... " >&6; }
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/sched.h>
+
+int
+main (void)
+{
+
+               task_curr(NULL);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+
+       rm -Rf build
+
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol task_curr is exported" >&5
-$as_echo_n "checking whether symbol task_curr is exported... " >&6; }
        grep -q -E '[[:space:]]task_curr[[:space:]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
@@ -12861,25 +12921,28 @@ $as_echo_n "checking whether symbol task_curr is exported... " >&6; }
                        grep -q -E "EXPORT_SYMBOL.*(task_curr)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+               fi
+               if test $rc -ne 0; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_TASK_CURR 1
-_ACEOF
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
 
-               fi
-       else
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -12887,6 +12950,8 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_TASK_CURR 1
 _ACEOF
 
+
+               fi
        fi
 
 
@@ -13092,9 +13157,9 @@ fi
 
 
 
+       { $as_echo "$as_me:$LINENO: checking whether device_create() is available" >&5
+$as_echo_n "checking whether device_create() is available... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol device_create is exported" >&5
-$as_echo_n "checking whether symbol device_create is exported... " >&6; }
        grep -q -E '[[:space:]]device_create[[:space:]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
@@ -13104,25 +13169,29 @@ $as_echo_n "checking whether symbol device_create is exported... " >&6; }
                        grep -q -E "EXPORT_SYMBOL.*(device_create)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
+               if test $export -eq 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
+               else :
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
 #define HAVE_DEVICE_CREATE 1
 _ACEOF
 
+
                fi
-       else
+       else :
+
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -13130,6 +13199,7 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_DEVICE_CREATE 1
 _ACEOF
 
+
        fi
 
 
 
        EXTRA_KCFLAGS="$tmp_flags"
 
+       { $as_echo "$as_me:$LINENO: checking whether class_device_create() is available" >&5
+$as_echo_n "checking whether class_device_create() is available... " >&6; }
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/device.h>
+
+int
+main (void)
+{
+
+               class_device_create(NULL, NULL, 0, NULL, NULL);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+
+       rm -Rf build
+
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol class_device_create is exported" >&5
-$as_echo_n "checking whether symbol class_device_create is exported... " >&6; }
        grep -q -E '[[:space:]]class_device_create[[:space:]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
@@ -13215,38 +13345,103 @@ $as_echo_n "checking whether symbol class_device_create is exported... " >&6; }
                        grep -q -E "EXPORT_SYMBOL.*(class_device_create)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
+
+               fi
+               if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
+               else :
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
 #define HAVE_CLASS_DEVICE_CREATE 1
 _ACEOF
 
+
                fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+       fi
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_CLASS_DEVICE_CREATE 1
+
+       { $as_echo "$as_me:$LINENO: checking whether set_normalized_timespec() is available as export" >&5
+$as_echo_n "checking whether set_normalized_timespec() is available as export... " >&6; }
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
 _ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/time.h>
+
+int
+main (void)
+{
+
+               set_normalized_timespec(NULL, 0, 0);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+
+       rm -Rf build
 
-       fi
 
+       if test $rc -ne 0; then :
 
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol set_normalized_timespec is exported" >&5
-$as_echo_n "checking whether symbol set_normalized_timespec is exported... " >&6; }
        grep -q -E '[[:space:]]set_normalized_timespec[[:space:]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
@@ -13256,25 +13451,28 @@ $as_echo_n "checking whether symbol set_normalized_timespec is exported... " >&6
                        grep -q -E "EXPORT_SYMBOL.*(set_normalized_timespec)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+               fi
+               if test $rc -ne 0; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SET_NORMALIZED_TIMESPEC_EXPORT 1
-_ACEOF
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
 
-               fi
-       else
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -13282,6 +13480,8 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_SET_NORMALIZED_TIMESPEC_EXPORT 1
 _ACEOF
 
+
+               fi
        fi
 
 
 
 
 
+       { $as_echo "$as_me:$LINENO: checking whether monotonic_clock() is available" >&5
+$as_echo_n "checking whether monotonic_clock() is available... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol monotonic_clock is exported" >&5
-$as_echo_n "checking whether symbol monotonic_clock is exported... " >&6; }
-       grep -q -E '[[:space:]]monotonic_clock[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(monotonic_clock)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MONOTONIC_CLOCK 1
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
 _ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
 
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
+
+               #include <linux/timex.h>
+
+int
+main (void)
+{
+
+               monotonic_clock();
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+
+       rm -Rf build
+
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]monotonic_clock[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(monotonic_clock)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
+
+               fi
+               if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
 #define HAVE_MONOTONIC_CLOCK 1
 _ACEOF
 
+
+               fi
        fi
 
 
 
 
 
+       { $as_echo "$as_me:$LINENO: checking whether kallsyms_lookup_name() is available" >&5
+$as_echo_n "checking whether kallsyms_lookup_name() is available... " >&6; }
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/kallsyms.h>
+
+int
+main (void)
+{
+
+               kallsyms_lookup_name(NULL);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+
+       rm -Rf build
+
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol kallsyms_lookup_name is exported" >&5
-$as_echo_n "checking whether symbol kallsyms_lookup_name is exported... " >&6; }
        grep -q -E '[[:space:]]kallsyms_lookup_name[[:space:]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
@@ -14238,25 +14563,28 @@ $as_echo_n "checking whether symbol kallsyms_lookup_name is exported... " >&6; }
                        grep -q -E "EXPORT_SYMBOL.*(kallsyms_lookup_name)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+               fi
+               if test $rc -ne 0; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_KALLSYMS_LOOKUP_NAME 1
-_ACEOF
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
 
-               fi
-       else
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -14264,12 +14592,14 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_KALLSYMS_LOOKUP_NAME 1
 _ACEOF
 
+
+               fi
        fi
 
 
+       { $as_echo "$as_me:$LINENO: checking whether get_vmalloc_info() is available" >&5
+$as_echo_n "checking whether get_vmalloc_info() is available... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol get_vmalloc_info is exported" >&5
-$as_echo_n "checking whether symbol get_vmalloc_info is exported... " >&6; }
        grep -q -E '[[:space:]]get_vmalloc_info[[:space:]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
@@ -14279,25 +14609,29 @@ $as_echo_n "checking whether symbol get_vmalloc_info is exported... " >&6; }
                        grep -q -E "EXPORT_SYMBOL.*(get_vmalloc_info)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
+               if test $export -eq 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
+               else :
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
 #define HAVE_GET_VMALLOC_INFO 1
 _ACEOF
 
+
                fi
-       else
+       else :
+
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -14305,6 +14639,7 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_GET_VMALLOC_INFO 1
 _ACEOF
 
+
        fi
 
 
@@ -14326,119 +14661,312 @@ _ACEOF
 $as_echo "no" >&6; }
        fi
 
+       { $as_echo "$as_me:$LINENO: checking whether first_online_pgdat() is available" >&5
+$as_echo_n "checking whether first_online_pgdat() is available... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol first_online_pgdat is exported" >&5
-$as_echo_n "checking whether symbol first_online_pgdat is exported... " >&6; }
-       grep -q -E '[[:space:]]first_online_pgdat[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(first_online_pgdat)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_FIRST_ONLINE_PGDAT 1
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
 _ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
 
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_FIRST_ONLINE_PGDAT 1
+               #include <linux/mmzone.h>
+
+int
+main (void)
+{
+
+               first_online_pgdat();
+
+  ;
+  return 0;
+}
+
 _ACEOF
 
-       fi
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
 
 
+fi
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol next_online_pgdat is exported" >&5
-$as_echo_n "checking whether symbol next_online_pgdat is exported... " >&6; }
-       grep -q -E '[[:space:]]next_online_pgdat[[:space:]]' \
+       rm -Rf build
+
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]first_online_pgdat[[:space:]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
                export=0
                for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(next_online_pgdat)" \
+                       grep -q -E "EXPORT_SYMBOL.*(first_online_pgdat)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+               fi
+               if test $rc -ne 0; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_NEXT_ONLINE_PGDAT 1
-_ACEOF
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
 
-               fi
-       else
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_NEXT_ONLINE_PGDAT 1
+#define HAVE_FIRST_ONLINE_PGDAT 1
 _ACEOF
 
+
+               fi
        fi
 
 
+       { $as_echo "$as_me:$LINENO: checking whether next_online_pgdat() is available" >&5
+$as_echo_n "checking whether next_online_pgdat() is available... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol next_zone is exported" >&5
-$as_echo_n "checking whether symbol next_zone is exported... " >&6; }
-       grep -q -E '[[:space:]]next_zone[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(next_zone)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/mmzone.h>
+
+int
+main (void)
+{
+
+               next_online_pgdat(NULL);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+
+       rm -Rf build
+
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]next_online_pgdat[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(next_online_pgdat)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
+
+               fi
+               if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_NEXT_ZONE 1
+#define HAVE_NEXT_ONLINE_PGDAT 1
 _ACEOF
 
+
                fi
+       fi
+
+
+       { $as_echo "$as_me:$LINENO: checking whether next_zone() is available" >&5
+$as_echo_n "checking whether next_zone() is available... " >&6; }
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/mmzone.h>
+
+int
+main (void)
+{
+
+               next_zone(NULL);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+
+       rm -Rf build
+
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
        else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]next_zone[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(next_zone)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
+
+               fi
+               if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
+
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -14446,12 +14974,73 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_NEXT_ZONE 1
 _ACEOF
 
+
+               fi
        fi
 
 
+       { $as_echo "$as_me:$LINENO: checking whether pgdat_list is available" >&5
+$as_echo_n "checking whether pgdat_list is available... " >&6; }
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/topology.h>
+               pg_data_t *tmp = pgdat_list;
+
+int
+main (void)
+{
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+
+       rm -Rf build
+
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol pgdat_list is exported" >&5
-$as_echo_n "checking whether symbol pgdat_list is exported... " >&6; }
        grep -q -E '[[:space:]]pgdat_list[[:space:]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
@@ -14461,25 +15050,28 @@ $as_echo_n "checking whether symbol pgdat_list is exported... " >&6; }
                        grep -q -E "EXPORT_SYMBOL.*(pgdat_list)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+               fi
+               if test $rc -ne 0; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_PGDAT_LIST 1
-_ACEOF
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
 
-               fi
-       else
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -14487,6 +15079,8 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_PGDAT_LIST 1
 _ACEOF
 
+
+               fi
        fi
 
 
@@ -15102,46 +15696,54 @@ cat >>confdefs.h <<\_ACEOF
 _ACEOF
 
 
-               { $as_echo "$as_me:$LINENO: checking whether symbol get_zone_counts is exported" >&5
-$as_echo_n "checking whether symbol get_zone_counts is exported... " >&6; }
-       grep -q -E '[[:space:]]get_zone_counts[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(get_zone_counts)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+               { $as_echo "$as_me:$LINENO: checking whether get_zone_counts() is available" >&5
+$as_echo_n "checking whether get_zone_counts() is available... " >&6; }
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_GET_ZONE_COUNTS 1
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
 _ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
 
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_GET_ZONE_COUNTS 1
-_ACEOF
+                       #include <linux/mmzone.h>
 
-       fi
+int
+main (void)
+{
+
+                       get_zone_counts(NULL, NULL, NULL);
+
+  ;
+  return 0;
+}
+
+_ACEOF
 
 
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
 
 
 fi
        rm -Rf build
 
 
+       if test $rc -ne 0; then :
 
+                       { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol user_path_at is exported" >&5
-$as_echo_n "checking whether symbol user_path_at is exported... " >&6; }
-       grep -q -E '[[:space:]]user_path_at[[:space:]]' \
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]get_zone_counts[[:space:]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
                export=0
                for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(user_path_at)" \
+                       grep -q -E "EXPORT_SYMBOL.*(get_zone_counts)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
+
+               fi
+               if test $rc -ne 0; then :
+
                        { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
+               else :
+
                        { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_USER_PATH_DIR 1
+#define HAVE_GET_ZONE_COUNTS 1
 _ACEOF
 
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_USER_PATH_DIR 1
-_ACEOF
 
+               fi
        fi
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol set_fs_pwd is exported" >&5
-$as_echo_n "checking whether symbol set_fs_pwd is exported... " >&6; }
-       grep -q -E '[[:space:]]set_fs_pwd[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(set_fs_pwd)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SET_FS_PWD 1
-_ACEOF
+fi
 
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+       rm -Rf build
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SET_FS_PWD 1
-_ACEOF
 
-       fi
 
+       { $as_echo "$as_me:$LINENO: checking whether user_path_dir() is available" >&5
+$as_echo_n "checking whether user_path_dir() is available... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether set_fs_pwd() wants 2 args" >&5
-$as_echo_n "checking whether set_fs_pwd() wants 2 args... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -15244,14 +15823,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/sched.h>
-               #include <linux/fs_struct.h>
+               #include <linux/fcntl.h>
+               #include <linux/namei.h>
 
 int
 main (void)
 {
 
-               set_fs_pwd(NULL, NULL);
+               user_path_dir(NULL, NULL);
 
   ;
   return 0;
@@ -15275,32 +15854,72 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_2ARGS_SET_FS_PWD 1
-_ACEOF
+fi
+
+       rm -Rf build
 
 
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+       if test $rc -ne 0; then :
 
                { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]user_path_at[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(user_path_at)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
+               fi
+               if test $rc -ne 0; then :
 
-fi
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
-       rm -Rf build
+               else :
 
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_USER_PATH_DIR 1
+_ACEOF
 
 
-       { $as_echo "$as_me:$LINENO: checking whether vfs_unlink() wants 2 args" >&5
-$as_echo_n "checking whether vfs_unlink() wants 2 args... " >&6; }
+               fi
+       fi
+
+
+       { $as_echo "$as_me:$LINENO: checking whether set_fs_pwd() is available" >&5
+$as_echo_n "checking whether set_fs_pwd() is available... " >&6; }
+
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -15311,13 +15930,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/fs.h>
+               #include <linux/spinlock.h>
+               #include <linux/fs_struct.h>
 
 int
 main (void)
 {
 
-               vfs_unlink(NULL, NULL);
+               (void) set_fs_pwd;
 
   ;
   return 0;
@@ -15341,32 +15961,71 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_2ARGS_VFS_UNLINK 1
-_ACEOF
+fi
 
+       rm -Rf build
 
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]set_fs_pwd[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(set_fs_pwd)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
+
+               fi
+               if test $rc -ne 0; then :
 
                { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
+               else :
 
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
-fi
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SET_FS_PWD 1
+_ACEOF
 
-       rm -Rf build
 
+               fi
+       fi
 
 
-       { $as_echo "$as_me:$LINENO: checking whether vfs_rename() wants 4 args" >&5
-$as_echo_n "checking whether vfs_rename() wants 4 args... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether set_fs_pwd() wants 2 args" >&5
+$as_echo_n "checking whether set_fs_pwd() wants 2 args... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -15377,13 +16036,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/fs.h>
+               #include <linux/sched.h>
+               #include <linux/fs_struct.h>
 
 int
 main (void)
 {
 
-               vfs_rename(NULL, NULL, NULL, NULL);
+               set_fs_pwd(NULL, NULL);
 
   ;
   return 0;
@@ -15412,7 +16072,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_4ARGS_VFS_RENAME 1
+#define HAVE_2ARGS_SET_FS_PWD 1
 _ACEOF
 
 
 
 
 
-
-       { $as_echo "$as_me:$LINENO: checking whether symbol vfs_fsync is exported" >&5
-$as_echo_n "checking whether symbol vfs_fsync is exported... " >&6; }
-       grep -q -E '[[:space:]]vfs_fsync[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in fs/sync.c; do
-                       grep -q -E "EXPORT_SYMBOL.*(vfs_fsync)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_VFS_FSYNC 1
-_ACEOF
-
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_VFS_FSYNC 1
-_ACEOF
-
-       fi
-
-
-
-       { $as_echo "$as_me:$LINENO: checking whether vfs_fsync() wants 2 args" >&5
-$as_echo_n "checking whether vfs_fsync() wants 2 args... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether vfs_unlink() wants 2 args" >&5
+$as_echo_n "checking whether vfs_unlink() wants 2 args... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -15491,7 +16109,7 @@ int
 main (void)
 {
 
-               vfs_fsync(NULL, 0);
+               vfs_unlink(NULL, NULL);
 
   ;
   return 0;
@@ -15520,7 +16138,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_2ARGS_VFS_FSYNC 1
+#define HAVE_2ARGS_VFS_UNLINK 1
 _ACEOF
 
 
 
 
 
-
-       { $as_echo "$as_me:$LINENO: checking whether struct fs_struct uses spinlock_t" >&5
-$as_echo_n "checking whether struct fs_struct uses spinlock_t... " >&6; }
-       tmp_flags="$EXTRA_KCFLAGS"
-       EXTRA_KCFLAGS="-Werror"
+       { $as_echo "$as_me:$LINENO: checking whether vfs_rename() wants 4 args" >&5
+$as_echo_n "checking whether vfs_rename() wants 4 args... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -15554,15 +16169,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/sched.h>
-               #include <linux/fs_struct.h>
+               #include <linux/fs.h>
 
 int
 main (void)
 {
 
-               struct fs_struct fs;
-               spin_lock_init(&fs.lock);
+               vfs_rename(NULL, NULL, NULL, NULL);
 
   ;
   return 0;
@@ -15591,7 +16204,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_FS_STRUCT_SPINLOCK 1
+#define HAVE_4ARGS_VFS_RENAME 1
 _ACEOF
 
 
        rm -Rf build
 
 
-       EXTRA_KCFLAGS="$tmp_flags"
 
+       { $as_echo "$as_me:$LINENO: checking whether vfs_fsync() is available" >&5
+$as_echo_n "checking whether vfs_fsync() is available... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether struct cred exists" >&5
-$as_echo_n "checking whether struct cred exists... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -15624,14 +16236,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/cred.h>
+               #include <linux/fs.h>
 
 int
 main (void)
 {
 
-               struct cred *cr __attribute__ ((unused));
-               cr  = NULL;
+               (void) vfs_fsync;
 
   ;
   return 0;
@@ -15655,22 +16266,11 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_CRED_STRUCT 1
-_ACEOF
-
-
+  rc=0
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
-
-               { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
+ rc=1
 
 
 fi
        rm -Rf build
 
 
+       if test $rc -ne 0; then :
 
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol groups_search is exported" >&5
-$as_echo_n "checking whether symbol groups_search is exported... " >&6; }
-       grep -q -E '[[:space:]]groups_search[[:space:]]' \
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]vfs_fsync[[:space:]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
                export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(groups_search)" \
+               for file in fs/sync.c; do
+                       grep -q -E "EXPORT_SYMBOL.*(vfs_fsync)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_GROUPS_SEARCH 1
-_ACEOF
-
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
                fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_GROUPS_SEARCH 1
-_ACEOF
-
+       else :
+               rc=0
        fi
 
+               fi
+               if test $rc -ne 0; then :
 
-
-       { $as_echo "$as_me:$LINENO: checking whether symbol __put_task_struct is exported" >&5
-$as_echo_n "checking whether symbol __put_task_struct is exported... " >&6; }
-       grep -q -E '[[:space:]]__put_task_struct[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(__put_task_struct)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
+               { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_PUT_TASK_STRUCT 1
-_ACEOF
+               else :
 
-               fi
-       else
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_PUT_TASK_STRUCT 1
+#define HAVE_VFS_FSYNC 1
 _ACEOF
 
+
+               fi
        fi
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether proc_handler() wants 5 args" >&5
-$as_echo_n "checking whether proc_handler() wants 5 args... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether vfs_fsync() wants 2 args" >&5
+$as_echo_n "checking whether vfs_fsync() wants 2 args... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -15774,13 +16342,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/sysctl.h>
+               #include <linux/fs.h>
 
 int
 main (void)
 {
 
-               proc_dostring(NULL, 0, NULL, NULL, NULL);
+               vfs_fsync(NULL, 0);
 
   ;
   return 0;
@@ -15809,7 +16377,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_5ARGS_PROC_HANDLER 1
+#define HAVE_2ARGS_VFS_FSYNC 1
 _ACEOF
 
 
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol kvasprintf is exported" >&5
-$as_echo_n "checking whether symbol kvasprintf is exported... " >&6; }
-       grep -q -E '[[:space:]]kvasprintf[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(kvasprintf)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether struct fs_struct uses spinlock_t" >&5
+$as_echo_n "checking whether struct fs_struct uses spinlock_t... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Werror"
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_KVASPRINTF 1
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
 _ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
 
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_KVASPRINTF 1
-_ACEOF
+               #include <linux/sched.h>
+               #include <linux/fs_struct.h>
 
-       fi
+int
+main (void)
+{
 
+               struct fs_struct fs;
+               spin_lock_init(&fs.lock);
 
+  ;
+  return 0;
+}
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol rwsem_is_locked is exported" >&5
-$as_echo_n "checking whether symbol rwsem_is_locked is exported... " >&6; }
-       grep -q -E '[[:space:]]rwsem_is_locked[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in lib/rwsem-spinlock.c; do
-                       grep -q -E "EXPORT_SYMBOL.*(rwsem_is_locked)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+_ACEOF
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define RWSEM_IS_LOCKED_TAKES_WAIT_LOCK 1
-_ACEOF
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
 
-               fi
-       else
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define RWSEM_IS_LOCKED_TAKES_WAIT_LOCK 1
+#define HAVE_FS_STRUCT_SPINLOCK 1
 _ACEOF
 
-       fi
-
 
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol invalidate_inodes is exported" >&5
-$as_echo_n "checking whether symbol invalidate_inodes is exported... " >&6; }
-       grep -q -E '[[:space:]]invalidate_inodes[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(invalidate_inodes)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
+               { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_INVALIDATE_INODES 1
-_ACEOF
-
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_INVALIDATE_INODES 1
-_ACEOF
-
-       fi
-
-       { $as_echo "$as_me:$LINENO: checking whether symbol invalidate_inodes_check is exported" >&5
-$as_echo_n "checking whether symbol invalidate_inodes_check is exported... " >&6; }
-       grep -q -E '[[:space:]]invalidate_inodes_check[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(invalidate_inodes_check)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_INVALIDATE_INODES_CHECK 1
-_ACEOF
+fi
 
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+       rm -Rf build
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_INVALIDATE_INODES_CHECK 1
-_ACEOF
 
-       fi
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
-       { $as_echo "$as_me:$LINENO: checking whether invalidate_inodes() wants 2 args" >&5
-$as_echo_n "checking whether invalidate_inodes() wants 2 args... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether struct cred exists" >&5
+$as_echo_n "checking whether struct cred exists... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -16002,13 +16481,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/fs.h>
+               #include <linux/cred.h>
 
 int
 main (void)
 {
 
-               return __invalidate_device(NULL, 0);
+               struct cred *cr __attribute__ ((unused));
+               cr  = NULL;
 
   ;
   return 0;
@@ -16037,7 +16517,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_2ARGS_INVALIDATE_INODES 1
+#define HAVE_CRED_STRUCT 1
 _ACEOF
 
 
 
 
 
+       { $as_echo "$as_me:$LINENO: checking whether groups_search() is available" >&5
+$as_echo_n "checking whether groups_search() is available... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol shrink_dcache_memory is exported" >&5
-$as_echo_n "checking whether symbol shrink_dcache_memory is exported... " >&6; }
-       grep -q -E '[[:space:]]shrink_dcache_memory[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in fs/dcache.c; do
-                       grep -q -E "EXPORT_SYMBOL.*(shrink_dcache_memory)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SHRINK_DCACHE_MEMORY 1
-_ACEOF
 
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SHRINK_DCACHE_MEMORY 1
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
 _ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
 
-       fi
 
+               #include <linux/cred.h>
 
+int
+main (void)
+{
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol shrink_icache_memory is exported" >&5
-$as_echo_n "checking whether symbol shrink_icache_memory is exported... " >&6; }
-       grep -q -E '[[:space:]]shrink_icache_memory[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in fs/inode.c; do
-                       grep -q -E "EXPORT_SYMBOL.*(shrink_icache_memory)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+               groups_search(NULL, 0);
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+  ;
+  return 0;
+}
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SHRINK_ICACHE_MEMORY 1
 _ACEOF
 
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SHRINK_ICACHE_MEMORY 1
-_ACEOF
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
 
-       fi
 
+fi
 
+       rm -Rf build
 
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol kern_path_parent exists in header" >&5
-$as_echo_n "checking whether symbol kern_path_parent exists in header... " >&6; }
-       header=0
-       for file in include/linux/namei.h; do
-               grep -q "int kern_path_parent(const char \*, struct nameidata \*)" "$LINUX/$file" 2>/dev/null
-               rc=$?
-               if test $rc -eq 0; then
-                       header=1
-                       break;
-               fi
-       done
-       if test $header -eq 0; then
+       if test $rc -ne 0; then :
+
                { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
        else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_KERN_PATH_PARENT_HEADER 1
-_ACEOF
-
-       fi
-
-
+               if test "x$enable_linux_builtin" != xyes; then
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol kern_path_parent is exported" >&5
-$as_echo_n "checking whether symbol kern_path_parent is exported... " >&6; }
-       grep -q -E '[[:space:]]kern_path_parent[[:space:]]' \
+       grep -q -E '[[:space:]]groups_search[[:space:]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
                export=0
-               for file in fs/namei.c; do
-                       grep -q -E "EXPORT_SYMBOL.*(kern_path_parent)" \
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(groups_search)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+               fi
+               if test $rc -ne 0; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_KERN_PATH_PARENT_SYMBOL 1
-_ACEOF
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
 
-               fi
-       else
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_KERN_PATH_PARENT_SYMBOL 1
+#define HAVE_GROUPS_SEARCH 1
 _ACEOF
 
+
+               fi
        fi
 
 
-       { $as_echo "$as_me:$LINENO: checking whether zlib_deflate_workspacesize() wants 2 args" >&5
-$as_echo_n "checking whether zlib_deflate_workspacesize() wants 2 args... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether __put_task_struct() is available" >&5
+$as_echo_n "checking whether __put_task_struct() is available... " >&6; }
+
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -16219,13 +16655,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/zlib.h>
+               #include <linux/sched.h>
 
 int
 main (void)
 {
 
-               return zlib_deflate_workspacesize(MAX_WBITS, MAX_MEM_LEVEL);
+               __put_task_struct(NULL);
 
   ;
   return 0;
@@ -16249,33 +16685,72 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE 1
-_ACEOF
+fi
+
+       rm -Rf build
 
 
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+       if test $rc -ne 0; then :
 
                { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]__put_task_struct[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(__put_task_struct)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
+               fi
+               if test $rc -ne 0; then :
 
-fi
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
-       rm -Rf build
+               else :
 
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_PUT_TASK_STRUCT 1
+_ACEOF
 
 
-       { $as_echo "$as_me:$LINENO: checking whether struct shrink_control exists" >&5
-$as_echo_n "checking whether struct shrink_control exists... " >&6; }
+               fi
+       fi
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether proc_handler() wants 5 args" >&5
+$as_echo_n "checking whether proc_handler() wants 5 args... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -16286,16 +16761,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/mm.h>
+               #include <linux/sysctl.h>
 
 int
 main (void)
 {
 
-               struct shrink_control sc __attribute__ ((unused));
-
-               sc.nr_to_scan = 0;
-               sc.gfp_mask = GFP_KERNEL;
+               proc_dostring(NULL, 0, NULL, NULL, NULL);
 
   ;
   return 0;
@@ -16324,7 +16796,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_SHRINK_CONTROL_STRUCT 1
+#define HAVE_5ARGS_PROC_HANDLER 1
 _ACEOF
 
 
 
 
 
+       { $as_echo "$as_me:$LINENO: checking whether kvasprintf() is available" >&5
+$as_echo_n "checking whether kvasprintf() is available... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether struct rw_semaphore member wait_lock is raw" >&5
-$as_echo_n "checking whether struct rw_semaphore member wait_lock is raw... " >&6; }
-       tmp_flags="$EXTRA_KCFLAGS"
-       EXTRA_KCFLAGS="-Werror"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -16358,15 +16828,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/rwsem.h>
+               #include <linux/kernel.h>
 
 int
 main (void)
 {
 
-               struct rw_semaphore dummy_semaphore __attribute__ ((unused));
-               raw_spinlock_t dummy_lock __attribute__ ((unused));
-               dummy_semaphore.wait_lock = dummy_lock;
+               kvasprintf(0, NULL, *((va_list*)NULL));
 
   ;
   return 0;
@@ -16390,34 +16858,72 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define RWSEM_SPINLOCK_IS_RAW 1
-_ACEOF
+fi
 
+       rm -Rf build
 
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+
+       if test $rc -ne 0; then :
 
                { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
+       else
+               if test "x$enable_linux_builtin" != xyes; then
 
+       grep -q -E '[[:space:]]kvasprintf[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(kvasprintf)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-fi
+               fi
+               if test $rc -ne 0; then :
 
-       rm -Rf build
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
+               else :
 
-       EXTRA_KCFLAGS="$tmp_flags"
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_KVASPRINTF 1
+_ACEOF
+
+
+               fi
+       fi
+
+
+       { $as_echo "$as_me:$LINENO: checking whether rwsem_is_locked() acquires sem->wait_lock" >&5
+$as_echo_n "checking whether rwsem_is_locked() acquires sem->wait_lock... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether pmd_alloc_with_mask exists" >&5
-$as_echo_n "checking whether pmd_alloc_with_mask exists... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -16428,27 +16934,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #if !defined(CONFIG_MMU)
-               #define CONFIG_MMU
-               #endif
-
-               #if defined(RCH_HAS_4LEVEL_HACK)
-               #undef RCH_HAS_4LEVEL_HACK
-               #endif
-
-               #include <linux/mm.h>
+               #include <linux/rwsem.h>
+               int rwsem_is_locked(struct rw_semaphore *sem) { return 0; }
 
 int
 main (void)
 {
 
-               struct mm_struct init_mm;
-               pud_t *pud = NULL;
-               unsigned long addr = 0;
-               gfp_t gfp_mask = GFP_KERNEL;
-
-               pmd_alloc_with_mask(&init_mm, pud, addr, gfp_mask);
-
   ;
   return 0;
 }
@@ -16471,12 +16963,2378 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+
+       rm -Rf build
+
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]rwsem_is_locked[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in lib/rwsem-spinlock.c; do
+                       grep -q -E "EXPORT_SYMBOL.*(rwsem_is_locked)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
+
+               fi
+               if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define RWSEM_IS_LOCKED_TAKES_WAIT_LOCK 1
+_ACEOF
+
+
+               fi
+       fi
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether invalidate_inodes() is available" >&5
+$as_echo_n "checking whether invalidate_inodes() is available... " >&6; }
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/fs.h>
+
+int
+main (void)
+{
+
+               invalidate_inodes;
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+
+       rm -Rf build
+
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]invalidate_inodes[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(invalidate_inodes)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
+
+               fi
+               if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_INVALIDATE_INODES 1
+_ACEOF
+
+
+               fi
+       fi
+
+
+       { $as_echo "$as_me:$LINENO: checking whether invalidate_inodes_check() is available" >&5
+$as_echo_n "checking whether invalidate_inodes_check() is available... " >&6; }
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/fs.h>
+
+int
+main (void)
+{
+
+               invalidate_inodes_check(NULL, 0);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+
+       rm -Rf build
+
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]invalidate_inodes_check[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(invalidate_inodes_check)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
+
+               fi
+               if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_INVALIDATE_INODES_CHECK 1
+_ACEOF
+
+
+               fi
+       fi
+
+
+       { $as_echo "$as_me:$LINENO: checking whether invalidate_inodes() wants 2 args" >&5
+$as_echo_n "checking whether invalidate_inodes() wants 2 args... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/fs.h>
+
+int
+main (void)
+{
+
+               return __invalidate_device(NULL, 0);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_2ARGS_INVALIDATE_INODES 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether shrink_dcache_memory() is available" >&5
+$as_echo_n "checking whether shrink_dcache_memory() is available... " >&6; }
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/dcache.h>
+
+int
+main (void)
+{
+
+               shrink_dcache_memory(0, 0);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+
+       rm -Rf build
+
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]shrink_dcache_memory[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in fs/dcache.c; do
+                       grep -q -E "EXPORT_SYMBOL.*(shrink_dcache_memory)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
+
+               fi
+               if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SHRINK_DCACHE_MEMORY 1
+_ACEOF
+
+
+               fi
+       fi
+
+
+       { $as_echo "$as_me:$LINENO: checking whether shrink_icache_memory() is available" >&5
+$as_echo_n "checking whether shrink_icache_memory() is available... " >&6; }
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/dcache.h>
+
+int
+main (void)
+{
+
+               shrink_icache_memory(0, 0);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+
+       rm -Rf build
+
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]shrink_icache_memory[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in fs/inode.c; do
+                       grep -q -E "EXPORT_SYMBOL.*(shrink_icache_memory)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
+
+               fi
+               if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SHRINK_ICACHE_MEMORY 1
+_ACEOF
+
+
+               fi
+       fi
+
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether symbol kern_path_parent exists in header" >&5
+$as_echo_n "checking whether symbol kern_path_parent exists in header... " >&6; }
+       header=0
+       for file in include/linux/namei.h; do
+               grep -q "int kern_path_parent(const char \*, struct nameidata \*)" "$LINUX/$file" 2>/dev/null
+               rc=$?
+               if test $rc -eq 0; then
+                       header=1
+                       break;
+               fi
+       done
+       if test $header -eq 0; then
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_KERN_PATH_PARENT_HEADER 1
+_ACEOF
+
+       fi
+
+
+       { $as_echo "$as_me:$LINENO: checking whether kern_path_parent() is available" >&5
+$as_echo_n "checking whether kern_path_parent() is available... " >&6; }
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/namei.h>
+
+int
+main (void)
+{
+
+               kern_path_parent(NULL, NULL);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+
+       rm -Rf build
+
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]kern_path_parent[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in fs/namei.c; do
+                       grep -q -E "EXPORT_SYMBOL.*(kern_path_parent)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
+
+               fi
+               if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_KERN_PATH_PARENT_SYMBOL 1
+_ACEOF
+
+
+               fi
+       fi
+
+
+       { $as_echo "$as_me:$LINENO: checking whether zlib_deflate_workspacesize() wants 2 args" >&5
+$as_echo_n "checking whether zlib_deflate_workspacesize() wants 2 args... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/zlib.h>
+
+int
+main (void)
+{
+
+               return zlib_deflate_workspacesize(MAX_WBITS, MAX_MEM_LEVEL);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether struct shrink_control exists" >&5
+$as_echo_n "checking whether struct shrink_control exists... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/mm.h>
+
+int
+main (void)
+{
+
+               struct shrink_control sc __attribute__ ((unused));
+
+               sc.nr_to_scan = 0;
+               sc.gfp_mask = GFP_KERNEL;
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SHRINK_CONTROL_STRUCT 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether struct rw_semaphore member wait_lock is raw" >&5
+$as_echo_n "checking whether struct rw_semaphore member wait_lock is raw... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Werror"
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/rwsem.h>
+
+int
+main (void)
+{
+
+               struct rw_semaphore dummy_semaphore __attribute__ ((unused));
+               raw_spinlock_t dummy_lock __attribute__ ((unused));
+               dummy_semaphore.wait_lock = dummy_lock;
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define RWSEM_SPINLOCK_IS_RAW 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+       EXTRA_KCFLAGS="$tmp_flags"
+
+
+       { $as_echo "$as_me:$LINENO: checking whether pmd_alloc_with_mask exists" >&5
+$as_echo_n "checking whether pmd_alloc_with_mask exists... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #if !defined(CONFIG_MMU)
+               #define CONFIG_MMU
+               #endif
+
+               #if defined(RCH_HAS_4LEVEL_HACK)
+               #undef RCH_HAS_4LEVEL_HACK
+               #endif
+
+               #include <linux/mm.h>
+
+int
+main (void)
+{
+
+               struct mm_struct init_mm;
+               pud_t *pud = NULL;
+               unsigned long addr = 0;
+               gfp_t gfp_mask = GFP_KERNEL;
+
+               pmd_alloc_with_mask(&init_mm, pud, addr, gfp_mask);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_PMD_ALLOC_WITH_MASK 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+ ;;
+               user)      ;;
+               all)
+
+
+# Check whether --with-linux was given.
+if test "${with_linux+set}" = set; then
+  withval=$with_linux; kernelsrc="$withval"
+fi
+
+
+
+# Check whether --with-linux-obj was given.
+if test "${with_linux_obj+set}" = set; then
+  withval=$with_linux_obj; kernelbuild="$withval"
+fi
+
+
+       { $as_echo "$as_me:$LINENO: checking kernel source directory" >&5
+$as_echo_n "checking kernel source directory... " >&6; }
+       if test -z "$kernelsrc"; then
+               if test -e "/lib/modules/$(uname -r)/source"; then
+                       headersdir="/lib/modules/$(uname -r)/source"
+                       sourcelink=$(readlink -f "$headersdir")
+               elif test -e "/lib/modules/$(uname -r)/build"; then
+                       headersdir="/lib/modules/$(uname -r)/build"
+                       sourcelink=$(readlink -f "$headersdir")
+               else
+                       sourcelink=$(ls -1d /usr/src/kernels/* \
+                                    /usr/src/linux-* \
+                                    2>/dev/null | grep -v obj | tail -1)
+               fi
+
+               if test -n "$sourcelink" && test -e ${sourcelink}; then
+                       kernelsrc=`readlink -f ${sourcelink}`
+               else
+                       { $as_echo "$as_me:$LINENO: result: Not found" >&5
+$as_echo "Not found" >&6; }
+                       { { $as_echo "$as_me:$LINENO: error:
+       *** Please make sure the kernel devel package for your distribution
+       *** is installed then try again.  If that fails you can specify the
+       *** location of the kernel source with the '--with-linux=PATH' option." >&5
+$as_echo "$as_me: error:
+       *** Please make sure the kernel devel package for your distribution
+       *** is installed then try again.  If that fails you can specify the
+       *** location of the kernel source with the '--with-linux=PATH' option." >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       else
+               if test "$kernelsrc" = "NONE"; then
+                       kernsrcver=NONE
+               fi
+       fi
+
+       { $as_echo "$as_me:$LINENO: result: $kernelsrc" >&5
+$as_echo "$kernelsrc" >&6; }
+       { $as_echo "$as_me:$LINENO: checking kernel build directory" >&5
+$as_echo_n "checking kernel build directory... " >&6; }
+       if test -z "$kernelbuild"; then
+               if test -e "/lib/modules/$(uname -r)/build"; then
+                       kernelbuild=`readlink -f /lib/modules/$(uname -r)/build`
+               elif test -d ${kernelsrc}-obj/${target_cpu}/${target_cpu}; then
+                       kernelbuild=${kernelsrc}-obj/${target_cpu}/${target_cpu}
+               elif test -d ${kernelsrc}-obj/${target_cpu}/default; then
+                       kernelbuild=${kernelsrc}-obj/${target_cpu}/default
+               elif test -d `dirname ${kernelsrc}`/build-${target_cpu}; then
+                       kernelbuild=`dirname ${kernelsrc}`/build-${target_cpu}
+               else
+                       kernelbuild=${kernelsrc}
+               fi
+       fi
+       { $as_echo "$as_me:$LINENO: result: $kernelbuild" >&5
+$as_echo "$kernelbuild" >&6; }
+
+       { $as_echo "$as_me:$LINENO: checking kernel source version" >&5
+$as_echo_n "checking kernel source version... " >&6; }
+       utsrelease1=$kernelbuild/include/linux/version.h
+       utsrelease2=$kernelbuild/include/linux/utsrelease.h
+       utsrelease3=$kernelbuild/include/generated/utsrelease.h
+       if test -r $utsrelease1 && fgrep -q UTS_RELEASE $utsrelease1; then
+               utsrelease=linux/version.h
+       elif test -r $utsrelease2 && fgrep -q UTS_RELEASE $utsrelease2; then
+               utsrelease=linux/utsrelease.h
+       elif test -r $utsrelease3 && fgrep -q UTS_RELEASE $utsrelease3; then
+               utsrelease=generated/utsrelease.h
+       fi
+
+       if test "$utsrelease"; then
+               kernsrcver=`(echo "#include <$utsrelease>";
+                            echo "kernsrcver=UTS_RELEASE") |
+                            cpp -I $kernelbuild/include |
+                            grep "^kernsrcver=" | cut -d \" -f 2`
+
+               if test -z "$kernsrcver"; then
+                       { $as_echo "$as_me:$LINENO: result: Not found" >&5
+$as_echo "Not found" >&6; }
+                       { { $as_echo "$as_me:$LINENO: error: *** Cannot determine kernel version." >&5
+$as_echo "$as_me: error: *** Cannot determine kernel version." >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       else
+               { $as_echo "$as_me:$LINENO: result: Not found" >&5
+$as_echo "Not found" >&6; }
+               if test "x$enable_linux_builtin" != xyes; then
+                       { { $as_echo "$as_me:$LINENO: error: *** Cannot find UTS_RELEASE definition." >&5
+$as_echo "$as_me: error: *** Cannot find UTS_RELEASE definition." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { $as_echo "$as_me:$LINENO: error:
+       *** Cannot find UTS_RELEASE definition.
+       *** Please run 'make prepare' inside the kernel source tree." >&5
+$as_echo "$as_me: error:
+       *** Cannot find UTS_RELEASE definition.
+       *** Please run 'make prepare' inside the kernel source tree." >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       { $as_echo "$as_me:$LINENO: result: $kernsrcver" >&5
+$as_echo "$kernsrcver" >&6; }
+
+       LINUX=${kernelsrc}
+       LINUX_OBJ=${kernelbuild}
+       LINUX_VERSION=${kernsrcver}
+
+
+
+
+
+
+       modpost=$LINUX/scripts/Makefile.modpost
+       { $as_echo "$as_me:$LINENO: checking kernel file name for module symbols" >&5
+$as_echo_n "checking kernel file name for module symbols... " >&6; }
+       if test "x$enable_linux_builtin" != xyes -a -f "$modpost"; then
+               if grep -q Modules.symvers $modpost; then
+                       LINUX_SYMBOLS=Modules.symvers
+               else
+                       LINUX_SYMBOLS=Module.symvers
+               fi
+
+               if ! test -f "$LINUX_OBJ/$LINUX_SYMBOLS"; then
+                       { { $as_echo "$as_me:$LINENO: error:
+       *** Please make sure the kernel devel package for your distribution
+       *** is installed.  If your building with a custom kernel make sure the
+       *** kernel is configured, built, and the '--with-linux=PATH' configure
+       *** option refers to the location of the kernel source." >&5
+$as_echo "$as_me: error:
+       *** Please make sure the kernel devel package for your distribution
+       *** is installed.  If your building with a custom kernel make sure the
+       *** kernel is configured, built, and the '--with-linux=PATH' configure
+       *** option refers to the location of the kernel source." >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       else
+               LINUX_SYMBOLS=NONE
+       fi
+       { $as_echo "$as_me:$LINENO: result: $LINUX_SYMBOLS" >&5
+$as_echo "$LINUX_SYMBOLS" >&6; }
+
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether Linux was built with CONFIG_PREEMPT" >&5
+$as_echo_n "checking whether Linux was built with CONFIG_PREEMPT... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/module.h>
+
+int
+main (void)
+{
+
+               #ifndef CONFIG_PREEMPT
+               #error CONFIG_PREEMPT not #defined
+               #endif
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+               { { $as_echo "$as_me:$LINENO: error:
+               *** Kernel built with CONFIG_PREEMPT which is not supported.
+               ** You must rebuild your kernel without this option." >&5
+$as_echo "$as_me: error:
+               *** Kernel built with CONFIG_PREEMPT which is not supported.
+               ** You must rebuild your kernel without this option." >&2;}
+   { (exit 1); exit 1; }; }
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+
+
+       if test "${LINUX_OBJ}" != "${LINUX}"; then
+               KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
+       fi
+
+
+       KERNELCPPFLAGS="$KERNELCPPFLAGS -Wstrict-prototypes"
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether debugging is enabled" >&5
+$as_echo_n "checking whether debugging is enabled... " >&6; }
+       # Check whether --enable-debug was given.
+if test "${enable_debug+set}" = set; then
+  enableval=$enable_debug;
+else
+  enable_debug=no
+fi
+
+
+       if test "x$enable_debug" = xyes; then
+
+               KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG -Werror"
+               DEBUG_CFLAGS="-DDEBUG -Werror"
+               DEBUG_SPL="_with_debug"
+
+else
+
+               KERNELCPPFLAGS="${KERNELCPPFLAGS} -DNDEBUG"
+               DEBUG_CFLAGS="-DNDEBUG"
+               DEBUG_SPL="_without_debug"
+
+fi
+
+
+
+
+       { $as_echo "$as_me:$LINENO: result: $enable_debug" >&5
+$as_echo "$enable_debug" >&6; }
+
+
+       # Check whether --enable-debug-log was given.
+if test "${enable_debug_log+set}" = set; then
+  enableval=$enable_debug_log;
+else
+  enable_debug_log=yes
+fi
+
+
+       if test "x$enable_debug_log" = xyes; then
+
+               KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG_LOG"
+               DEBUG_LOG="_with_debug_log"
+
+cat >>confdefs.h <<\_ACEOF
+#define DEBUG_LOG 1
+_ACEOF
+
+
+else
+
+               DEBUG_LOG="_without_debug_log"
+
+fi
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether basic debug logging is enabled" >&5
+$as_echo_n "checking whether basic debug logging is enabled... " >&6; }
+       { $as_echo "$as_me:$LINENO: result: $enable_debug_log" >&5
+$as_echo "$enable_debug_log" >&6; }
+
+
+       # Check whether --enable-debug-kmem was given.
+if test "${enable_debug_kmem+set}" = set; then
+  enableval=$enable_debug_kmem;
+else
+  enable_debug_kmem=yes
+fi
+
+
+       if test "x$enable_debug_kmem" = xyes; then
+
+               KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG_KMEM"
+               DEBUG_KMEM="_with_debug_kmem"
+
+cat >>confdefs.h <<\_ACEOF
+#define DEBUG_KMEM 1
+_ACEOF
+
+
+else
+
+               DEBUG_KMEM="_without_debug_kmem"
+
+fi
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether basic kmem accounting is enabled" >&5
+$as_echo_n "checking whether basic kmem accounting is enabled... " >&6; }
+       { $as_echo "$as_me:$LINENO: result: $enable_debug_kmem" >&5
+$as_echo "$enable_debug_kmem" >&6; }
+
+
+       # Check whether --enable-debug-kmem-tracking was given.
+if test "${enable_debug_kmem_tracking+set}" = set; then
+  enableval=$enable_debug_kmem_tracking;
+else
+  enable_debug_kmem_tracking=no
+fi
+
+
+       if test "x$enable_debug_kmem_tracking" = xyes; then
+
+               KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG_KMEM_TRACKING"
+               DEBUG_KMEM_TRACKING="_with_debug_kmem_tracking"
+
+cat >>confdefs.h <<\_ACEOF
+#define DEBUG_KMEM_TRACKING 1
+_ACEOF
+
+
+else
+
+               DEBUG_KMEM_TRACKING="_without_debug_kmem_tracking"
+
+fi
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether detailed kmem tracking is enabled" >&5
+$as_echo_n "checking whether detailed kmem tracking is enabled... " >&6; }
+       { $as_echo "$as_me:$LINENO: result: $enable_debug_kmem_tracking" >&5
+$as_echo "$enable_debug_kmem_tracking" >&6; }
+
+       { $as_echo "$as_me:$LINENO: checking whether modules can be built" >&5
+$as_echo_n "checking whether modules can be built... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+int
+main (void)
+{
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+               if test "x$enable_linux_builtin" != xyes; then
+                       { { $as_echo "$as_me:$LINENO: error: *** Unable to build an empty module." >&5
+$as_echo "$as_me: error: *** Unable to build an empty module." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { $as_echo "$as_me:$LINENO: error:
+       *** Unable to build an empty module.
+       *** Please run 'make scripts' inside the kernel source tree." >&5
+$as_echo "$as_me: error:
+       *** Unable to build an empty module.
+       *** Please run 'make scripts' inside the kernel source tree." >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+
+       # Check whether --enable-atomic-spinlocks was given.
+if test "${enable_atomic_spinlocks+set}" = set; then
+  enableval=$enable_atomic_spinlocks;
+else
+  enable_atomic_spinlocks=check
+fi
+
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <asm/atomic.h>
+
+int
+main (void)
+{
+
+               atomic64_t *ptr __attribute__ ((unused));
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               have_atomic64_t=yes
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ATOMIC64_T 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               have_atomic64_t=no
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+       if test "x$enable_atomic_spinlocks" = xcheck; then
+
+               if test "x$have_atomic64_t" = xyes; then
+
+                       enable_atomic_spinlocks=no
+
+else
+
+                       enable_atomic_spinlocks=yes
+
+fi
+
+
+fi
+
+
+       if test "x$enable_atomic_spinlocks" = xyes; then
+
+
+cat >>confdefs.h <<\_ACEOF
+#define ATOMIC_SPINLOCK 1
+_ACEOF
+
+
+else
+
+               if test "x$have_atomic64_t" = xno; then
+
+                       { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: --disable-atomic-spinlocks given but required atomic64 support is unavailable
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: --disable-atomic-spinlocks given but required atomic64 support is unavailable
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+
+fi
+
+
+fi
+
+
+       { $as_echo "$as_me:$LINENO: checking whether atomic types use spinlocks" >&5
+$as_echo_n "checking whether atomic types use spinlocks... " >&6; }
+       { $as_echo "$as_me:$LINENO: result: $enable_atomic_spinlocks" >&5
+$as_echo "$enable_atomic_spinlocks" >&6; }
+
+       { $as_echo "$as_me:$LINENO: checking whether kernel defines atomic64_t" >&5
+$as_echo_n "checking whether kernel defines atomic64_t... " >&6; }
+       { $as_echo "$as_me:$LINENO: result: $have_atomic64_t" >&5
+$as_echo "$have_atomic64_t" >&6; }
+
+       { $as_echo "$as_me:$LINENO: checking whether kernel defines atomic64_cmpxchg" >&5
+$as_echo_n "checking whether kernel defines atomic64_cmpxchg... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <asm/atomic.h>
+               #include <asm/system.h>
+
+int
+main (void)
+{
+
+               atomic64_cmpxchg((atomic64_t *)NULL, 0, 0);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ATOMIC64_CMPXCHG 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether kernel defines atomic64_xchg" >&5
+$as_echo_n "checking whether kernel defines atomic64_xchg... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <asm/atomic.h>
+
+int
+main (void)
+{
+
+               atomic64_xchg((atomic64_t *)NULL, 0);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ATOMIC64_XCHG 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether kernel defines uintptr_t" >&5
+$as_echo_n "checking whether kernel defines uintptr_t... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/types.h>
+
+int
+main (void)
+{
+
+               uintptr_t *ptr __attribute__ ((unused));
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_UINTPTR_T 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether INIT_WORK wants 3 args" >&5
+$as_echo_n "checking whether INIT_WORK wants 3 args... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/workqueue.h>
+
+int
+main (void)
+{
+
+               struct work_struct work __attribute__ ((unused));
+               INIT_WORK(&work, NULL, NULL);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_3ARGS_INIT_WORK 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether register_sysctl_table() wants 2 args" >&5
+$as_echo_n "checking whether register_sysctl_table() wants 2 args... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/sysctl.h>
+
+int
+main (void)
+{
+
+               (void) register_sysctl_table(NULL, 0);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_2ARGS_REGISTER_SYSCTL 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether set_shrinker() available" >&5
+$as_echo_n "checking whether set_shrinker() available... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/mm.h>
+
+int
+main (void)
+{
+
+               return set_shrinker(DEFAULT_SEEKS, NULL);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SET_SHRINKER 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether shrinker callback wants 3 args" >&5
+$as_echo_n "checking whether shrinker callback wants 3 args... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Werror"
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/mm.h>
+
+               int shrinker_cb(struct shrinker *, int, unsigned int);
+
+int
+main (void)
+{
+
+               struct shrinker cache_shrinker = {
+                       .shrink = shrinker_cb,
+                       .seeks = DEFAULT_SEEKS,
+               };
+               register_shrinker(&cache_shrinker);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_3ARGS_SHRINKER_CALLBACK 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+       EXTRA_KCFLAGS="$tmp_flags"
+
+       { $as_echo "$as_me:$LINENO: checking whether struct path used in struct nameidata" >&5
+$as_echo_n "checking whether struct path used in struct nameidata... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/namei.h>
+
+int
+main (void)
+{
+
+               struct nameidata nd __attribute__ ((unused));
+
+               nd.path.mnt = NULL;
+               nd.path.dentry = NULL;
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_PATH_IN_NAMEIDATA 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether task_curr() is available" >&5
+$as_echo_n "checking whether task_curr() is available... " >&6; }
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/sched.h>
+
+int
+main (void)
+{
+
+               task_curr(NULL);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+
+       rm -Rf build
+
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]task_curr[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in kernel/sched.c; do
+                       grep -q -E "EXPORT_SYMBOL.*(task_curr)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
+
+               fi
+               if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_TASK_CURR 1
+_ACEOF
+
+
+               fi
+       fi
+
+
+       { $as_echo "$as_me:$LINENO: checking whether unnumbered sysctl support exists" >&5
+$as_echo_n "checking whether unnumbered sysctl support exists... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/sysctl.h>
+
+int
+main (void)
+{
+
+               #ifndef CTL_UNNUMBERED
+               #error CTL_UNNUMBERED undefined
+               #endif
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_CTL_UNNUMBERED 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether struct ctl_table has ctl_name" >&5
+$as_echo_n "checking whether struct ctl_table has ctl_name... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/sysctl.h>
+
+int
+main (void)
+{
+
+               struct ctl_table ctl __attribute__ ((unused));
+               ctl.ctl_name = 0;
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_CTL_NAME 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether fls64() is available" >&5
+$as_echo_n "checking whether fls64() is available... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/bitops.h>
+
+int
+main (void)
+{
+
+               return fls64(0);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_PMD_ALLOC_WITH_MASK 1
+#define HAVE_FLS64 1
 _ACEOF
 
 
 
 
 
- ;;
-               user)      ;;
-               all)
-
-
-# Check whether --with-linux was given.
-if test "${with_linux+set}" = set; then
-  withval=$with_linux; kernelsrc="$withval"
-fi
-
-
-
-# Check whether --with-linux-obj was given.
-if test "${with_linux_obj+set}" = set; then
-  withval=$with_linux_obj; kernelbuild="$withval"
-fi
+       { $as_echo "$as_me:$LINENO: checking whether device_create() is available" >&5
+$as_echo_n "checking whether device_create() is available... " >&6; }
 
+       grep -q -E '[[:space:]]device_create[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in drivers/base/core.c; do
+                       grep -q -E "EXPORT_SYMBOL.*(device_create)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
 
-       { $as_echo "$as_me:$LINENO: checking kernel source directory" >&5
-$as_echo_n "checking kernel source directory... " >&6; }
-       if test -z "$kernelsrc"; then
-               if test -e "/lib/modules/$(uname -r)/source"; then
-                       headersdir="/lib/modules/$(uname -r)/source"
-                       sourcelink=$(readlink -f "$headersdir")
-               elif test -e "/lib/modules/$(uname -r)/build"; then
-                       headersdir="/lib/modules/$(uname -r)/build"
-                       sourcelink=$(readlink -f "$headersdir")
-               else
-                       sourcelink=$(ls -1d /usr/src/kernels/* \
-                                    /usr/src/linux-* \
-                                    2>/dev/null | grep -v obj | tail -1)
-               fi
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
-               if test -n "$sourcelink" && test -e ${sourcelink}; then
-                       kernelsrc=`readlink -f ${sourcelink}`
-               else
-                       { $as_echo "$as_me:$LINENO: result: Not found" >&5
-$as_echo "Not found" >&6; }
-                       { { $as_echo "$as_me:$LINENO: error:
-       *** Please make sure the kernel devel package for your distribution
-       *** is installed then try again.  If that fails you can specify the
-       *** location of the kernel source with the '--with-linux=PATH' option." >&5
-$as_echo "$as_me: error:
-       *** Please make sure the kernel devel package for your distribution
-       *** is installed then try again.  If that fails you can specify the
-       *** location of the kernel source with the '--with-linux=PATH' option." >&2;}
-   { (exit 1); exit 1; }; }
-               fi
-       else
-               if test "$kernelsrc" = "NONE"; then
-                       kernsrcver=NONE
-               fi
-       fi
+               else :
 
-       { $as_echo "$as_me:$LINENO: result: $kernelsrc" >&5
-$as_echo "$kernelsrc" >&6; }
-       { $as_echo "$as_me:$LINENO: checking kernel build directory" >&5
-$as_echo_n "checking kernel build directory... " >&6; }
-       if test -z "$kernelbuild"; then
-               if test -e "/lib/modules/$(uname -r)/build"; then
-                       kernelbuild=`readlink -f /lib/modules/$(uname -r)/build`
-               elif test -d ${kernelsrc}-obj/${target_cpu}/${target_cpu}; then
-                       kernelbuild=${kernelsrc}-obj/${target_cpu}/${target_cpu}
-               elif test -d ${kernelsrc}-obj/${target_cpu}/default; then
-                       kernelbuild=${kernelsrc}-obj/${target_cpu}/default
-               elif test -d `dirname ${kernelsrc}`/build-${target_cpu}; then
-                       kernelbuild=`dirname ${kernelsrc}`/build-${target_cpu}
-               else
-                       kernelbuild=${kernelsrc}
-               fi
-       fi
-       { $as_echo "$as_me:$LINENO: result: $kernelbuild" >&5
-$as_echo "$kernelbuild" >&6; }
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking kernel source version" >&5
-$as_echo_n "checking kernel source version... " >&6; }
-       utsrelease1=$kernelbuild/include/linux/version.h
-       utsrelease2=$kernelbuild/include/linux/utsrelease.h
-       utsrelease3=$kernelbuild/include/generated/utsrelease.h
-       if test -r $utsrelease1 && fgrep -q UTS_RELEASE $utsrelease1; then
-               utsrelease=linux/version.h
-       elif test -r $utsrelease2 && fgrep -q UTS_RELEASE $utsrelease2; then
-               utsrelease=linux/utsrelease.h
-       elif test -r $utsrelease3 && fgrep -q UTS_RELEASE $utsrelease3; then
-               utsrelease=generated/utsrelease.h
-       fi
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DEVICE_CREATE 1
+_ACEOF
 
-       if test "$utsrelease"; then
-               kernsrcver=`(echo "#include <$utsrelease>";
-                            echo "kernsrcver=UTS_RELEASE") |
-                            cpp -I $kernelbuild/include |
-                            grep "^kernsrcver=" | cut -d \" -f 2`
 
-               if test -z "$kernsrcver"; then
-                       { $as_echo "$as_me:$LINENO: result: Not found" >&5
-$as_echo "Not found" >&6; }
-                       { { $as_echo "$as_me:$LINENO: error: *** Cannot determine kernel version." >&5
-$as_echo "$as_me: error: *** Cannot determine kernel version." >&2;}
-   { (exit 1); exit 1; }; }
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: Not found" >&5
-$as_echo "Not found" >&6; }
-               if test "x$enable_linux_builtin" != xyes; then
-                       { { $as_echo "$as_me:$LINENO: error: *** Cannot find UTS_RELEASE definition." >&5
-$as_echo "$as_me: error: *** Cannot find UTS_RELEASE definition." >&2;}
-   { (exit 1); exit 1; }; }
-               else
-                       { { $as_echo "$as_me:$LINENO: error:
-       *** Cannot find UTS_RELEASE definition.
-       *** Please run 'make prepare' inside the kernel source tree." >&5
-$as_echo "$as_me: error:
-       *** Cannot find UTS_RELEASE definition.
-       *** Please run 'make prepare' inside the kernel source tree." >&2;}
-   { (exit 1); exit 1; }; }
                fi
-       fi
-
-       { $as_echo "$as_me:$LINENO: result: $kernsrcver" >&5
-$as_echo "$kernsrcver" >&6; }
-
-       LINUX=${kernelsrc}
-       LINUX_OBJ=${kernelbuild}
-       LINUX_VERSION=${kernsrcver}
-
-
-
+       else :
 
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DEVICE_CREATE 1
+_ACEOF
 
-       modpost=$LINUX/scripts/Makefile.modpost
-       { $as_echo "$as_me:$LINENO: checking kernel file name for module symbols" >&5
-$as_echo_n "checking kernel file name for module symbols... " >&6; }
-       if test "x$enable_linux_builtin" != xyes -a -f "$modpost"; then
-               if grep -q Modules.symvers $modpost; then
-                       LINUX_SYMBOLS=Modules.symvers
-               else
-                       LINUX_SYMBOLS=Module.symvers
-               fi
 
-               if ! test -f "$LINUX_OBJ/$LINUX_SYMBOLS"; then
-                       { { $as_echo "$as_me:$LINENO: error:
-       *** Please make sure the kernel devel package for your distribution
-       *** is installed.  If your building with a custom kernel make sure the
-       *** kernel is configured, built, and the '--with-linux=PATH' configure
-       *** option refers to the location of the kernel source." >&5
-$as_echo "$as_me: error:
-       *** Please make sure the kernel devel package for your distribution
-       *** is installed.  If your building with a custom kernel make sure the
-       *** kernel is configured, built, and the '--with-linux=PATH' configure
-       *** option refers to the location of the kernel source." >&2;}
-   { (exit 1); exit 1; }; }
-               fi
-       else
-               LINUX_SYMBOLS=NONE
        fi
-       { $as_echo "$as_me:$LINENO: result: $LINUX_SYMBOLS" >&5
-$as_echo "$LINUX_SYMBOLS" >&6; }
 
 
 
-
-       { $as_echo "$as_me:$LINENO: checking whether Linux was built with CONFIG_PREEMPT" >&5
-$as_echo_n "checking whether Linux was built with CONFIG_PREEMPT... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether device_create() wants 5 args" >&5
+$as_echo_n "checking whether device_create() wants 5 args... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Werror"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -16669,15 +19414,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/module.h>
+               #include <linux/device.h>
 
 int
 main (void)
 {
 
-               #ifndef CONFIG_PREEMPT
-               #error CONFIG_PREEMPT not #defined
-               #endif
+               device_create(NULL, NULL, 0, NULL, "%d", 1);
 
   ;
   return 0;
@@ -16704,13 +19447,11 @@ _ACEOF
 
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
-               { { $as_echo "$as_me:$LINENO: error:
-               *** Kernel built with CONFIG_PREEMPT which is not supported.
-               ** You must rebuild your kernel without this option." >&5
-$as_echo "$as_me: error:
-               *** Kernel built with CONFIG_PREEMPT which is not supported.
-               ** You must rebuild your kernel without this option." >&2;}
-   { (exit 1); exit 1; }; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_5ARGS_DEVICE_CREATE 1
+_ACEOF
+
 
 else
   $as_echo "$as_me: failed program was:" >&5
@@ -16721,152 +19462,228 @@ $as_echo "no" >&6; }
 
 
 
-
 fi
 
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
+       { $as_echo "$as_me:$LINENO: checking whether class_device_create() is available" >&5
+$as_echo_n "checking whether class_device_create() is available... " >&6; }
 
 
-       if test "${LINUX_OBJ}" != "${LINUX}"; then
-               KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
-       fi
 
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
 
-       KERNELCPPFLAGS="$KERNELCPPFLAGS -Wstrict-prototypes"
 
+               #include <linux/device.h>
 
+int
+main (void)
+{
 
-       { $as_echo "$as_me:$LINENO: checking whether debugging is enabled" >&5
-$as_echo_n "checking whether debugging is enabled... " >&6; }
-       # Check whether --enable-debug was given.
-if test "${enable_debug+set}" = set; then
-  enableval=$enable_debug;
-else
-  enable_debug=no
-fi
+               class_device_create(NULL, NULL, 0, NULL, NULL);
 
+  ;
+  return 0;
+}
 
-       if test "x$enable_debug" = xyes; then
+_ACEOF
 
-               KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG -Werror"
-               DEBUG_CFLAGS="-DDEBUG -Werror"
-               DEBUG_SPL="_with_debug"
 
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
 else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
 
-               KERNELCPPFLAGS="${KERNELCPPFLAGS} -DNDEBUG"
-               DEBUG_CFLAGS="-DNDEBUG"
-               DEBUG_SPL="_without_debug"
 
 fi
 
+       rm -Rf build
 
 
+       if test $rc -ne 0; then :
 
-       { $as_echo "$as_me:$LINENO: result: $enable_debug" >&5
-$as_echo "$enable_debug" >&6; }
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
 
+       grep -q -E '[[:space:]]class_device_create[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in drivers/base/class.c; do
+                       grep -q -E "EXPORT_SYMBOL.*(class_device_create)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-       # Check whether --enable-debug-log was given.
-if test "${enable_debug_log+set}" = set; then
-  enableval=$enable_debug_log;
-else
-  enable_debug_log=yes
-fi
+               fi
+               if test $rc -ne 0; then :
 
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
-       if test "x$enable_debug_log" = xyes; then
+               else :
 
-               KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG_LOG"
-               DEBUG_LOG="_with_debug_log"
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define DEBUG_LOG 1
+#define HAVE_CLASS_DEVICE_CREATE 1
 _ACEOF
 
 
-else
+               fi
+       fi
 
-               DEBUG_LOG="_without_debug_log"
 
-fi
+       { $as_echo "$as_me:$LINENO: checking whether set_normalized_timespec() is available as export" >&5
+$as_echo_n "checking whether set_normalized_timespec() is available as export... " >&6; }
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether basic debug logging is enabled" >&5
-$as_echo_n "checking whether basic debug logging is enabled... " >&6; }
-       { $as_echo "$as_me:$LINENO: result: $enable_debug_log" >&5
-$as_echo "$enable_debug_log" >&6; }
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
 
 
-       # Check whether --enable-debug-kmem was given.
-if test "${enable_debug_kmem+set}" = set; then
-  enableval=$enable_debug_kmem;
-else
-  enable_debug_kmem=yes
-fi
+               #include <linux/time.h>
 
+int
+main (void)
+{
 
-       if test "x$enable_debug_kmem" = xyes; then
+               set_normalized_timespec(NULL, 0, 0);
 
-               KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG_KMEM"
-               DEBUG_KMEM="_with_debug_kmem"
+  ;
+  return 0;
+}
 
-cat >>confdefs.h <<\_ACEOF
-#define DEBUG_KMEM 1
 _ACEOF
 
 
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
 else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
 
-               DEBUG_KMEM="_without_debug_kmem"
 
 fi
 
+       rm -Rf build
 
 
-       { $as_echo "$as_me:$LINENO: checking whether basic kmem accounting is enabled" >&5
-$as_echo_n "checking whether basic kmem accounting is enabled... " >&6; }
-       { $as_echo "$as_me:$LINENO: result: $enable_debug_kmem" >&5
-$as_echo "$enable_debug_kmem" >&6; }
-
+       if test $rc -ne 0; then :
 
-       # Check whether --enable-debug-kmem-tracking was given.
-if test "${enable_debug_kmem_tracking+set}" = set; then
-  enableval=$enable_debug_kmem_tracking;
-else
-  enable_debug_kmem_tracking=no
-fi
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
+       else
+               if test "x$enable_linux_builtin" != xyes; then
 
-       if test "x$enable_debug_kmem_tracking" = xyes; then
+       grep -q -E '[[:space:]]set_normalized_timespec[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in kernel/time.c; do
+                       grep -q -E "EXPORT_SYMBOL.*(set_normalized_timespec)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-               KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG_KMEM_TRACKING"
-               DEBUG_KMEM_TRACKING="_with_debug_kmem_tracking"
+               fi
+               if test $rc -ne 0; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define DEBUG_KMEM_TRACKING 1
-_ACEOF
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
+               else :
 
-else
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
-               DEBUG_KMEM_TRACKING="_without_debug_kmem_tracking"
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SET_NORMALIZED_TIMESPEC_EXPORT 1
+_ACEOF
 
-fi
 
+               fi
+       fi
 
 
-       { $as_echo "$as_me:$LINENO: checking whether detailed kmem tracking is enabled" >&5
-$as_echo_n "checking whether detailed kmem tracking is enabled... " >&6; }
-       { $as_echo "$as_me:$LINENO: result: $enable_debug_kmem_tracking" >&5
-$as_echo "$enable_debug_kmem_tracking" >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether modules can be built" >&5
-$as_echo_n "checking whether modules can be built... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether set_normalized_timespec() is an inline" >&5
+$as_echo_n "checking whether set_normalized_timespec() is an inline... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -16877,6 +19694,10 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
+               #include <linux/time.h>
+               void set_normalized_timespec(struct timespec *ts,
+                                            time_t sec, long nsec) { }
+
 int
 main (void)
 {
@@ -16904,46 +19725,32 @@ _ACEOF
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-               { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-               if test "x$enable_linux_builtin" != xyes; then
-                       { { $as_echo "$as_me:$LINENO: error: *** Unable to build an empty module." >&5
-$as_echo "$as_me: error: *** Unable to build an empty module." >&2;}
-   { (exit 1); exit 1; }; }
-               else
-                       { { $as_echo "$as_me:$LINENO: error:
-       *** Unable to build an empty module.
-       *** Please run 'make scripts' inside the kernel source tree." >&5
-$as_echo "$as_me: error:
-       *** Unable to build an empty module.
-       *** Please run 'make scripts' inside the kernel source tree." >&2;}
-   { (exit 1); exit 1; }; }
-               fi
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SET_NORMALIZED_TIMESPEC_INLINE 1
+_ACEOF
 
 
-fi
 
-       rm -Rf build
 
+fi
 
+       rm -Rf build
 
 
-       # Check whether --enable-atomic-spinlocks was given.
-if test "${enable_atomic_spinlocks+set}" = set; then
-  enableval=$enable_atomic_spinlocks;
-else
-  enable_atomic_spinlocks=check
-fi
 
 
+       { $as_echo "$as_me:$LINENO: checking whether timespec_sub() is available" >&5
+$as_echo_n "checking whether timespec_sub() is available... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -16954,13 +19761,16 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <asm/atomic.h>
+               #include <linux/time.h>
 
 int
 main (void)
 {
 
-               atomic64_t *ptr __attribute__ ((unused));
+               struct timespec a = { 0 };
+               struct timespec b = { 0 };
+               struct timespec c __attribute__ ((unused));
+               c = timespec_sub(a, b);
 
   ;
   return 0;
@@ -16985,10 +19795,11 @@ _ACEOF
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
 
-               have_atomic64_t=yes
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATOMIC64_T 1
+#define HAVE_TIMESPEC_SUB 1
 _ACEOF
 
 
@@ -16996,7 +19807,8 @@ else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-               have_atomic64_t=no
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
 
 
 
 
 
-       if test "x$enable_atomic_spinlocks" = xcheck; then
 
-               if test "x$have_atomic64_t" = xyes; then
+       { $as_echo "$as_me:$LINENO: checking whether init_utsname() is available" >&5
+$as_echo_n "checking whether init_utsname() is available... " >&6; }
 
-                       enable_atomic_spinlocks=no
 
-else
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
 
-                       enable_atomic_spinlocks=yes
 
-fi
+               #include <linux/utsname.h>
+
+int
+main (void)
+{
 
+               struct new_utsname *a __attribute__ ((unused));
+               a = init_utsname();
 
-fi
+  ;
+  return 0;
+}
+
+_ACEOF
 
 
-       if test "x$enable_atomic_spinlocks" = xyes; then
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
 
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define ATOMIC_SPINLOCK 1
+#define HAVE_INIT_UTSNAME 1
 _ACEOF
 
 
 else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-               if test "x$have_atomic64_t" = xno; then
-
-                       { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: --disable-atomic-spinlocks given but required atomic64 support is unavailable
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: --disable-atomic-spinlocks given but required atomic64 support is unavailable
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
-fi
 
 
 fi
 
+       rm -Rf build
 
-       { $as_echo "$as_me:$LINENO: checking whether atomic types use spinlocks" >&5
-$as_echo_n "checking whether atomic types use spinlocks... " >&6; }
-       { $as_echo "$as_me:$LINENO: result: $enable_atomic_spinlocks" >&5
-$as_echo "$enable_atomic_spinlocks" >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether kernel defines atomic64_t" >&5
-$as_echo_n "checking whether kernel defines atomic64_t... " >&6; }
-       { $as_echo "$as_me:$LINENO: result: $have_atomic64_t" >&5
-$as_echo "$have_atomic64_t" >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether kernel defines atomic64_cmpxchg" >&5
-$as_echo_n "checking whether kernel defines atomic64_cmpxchg... " >&6; }
+
+       { $as_echo "$as_me:$LINENO: checking whether header linux/fdtable.h exists" >&5
+$as_echo_n "checking whether header linux/fdtable.h exists... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -17070,14 +19899,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <asm/atomic.h>
-               #include <asm/system.h>
+               #include <linux/fdtable.h>
 
 int
 main (void)
 {
 
-               atomic64_cmpxchg((atomic64_t *)NULL, 0, 0);
+               return 0;
 
   ;
   return 0;
@@ -17102,13 +19930,14 @@ _ACEOF
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATOMIC64_CMPXCHG 1
+#define HAVE_FDTABLE_HEADER 1
 _ACEOF
 
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
 
 else
   $as_echo "$as_me: failed program was:" >&5
@@ -17119,14 +19948,17 @@ $as_echo "no" >&6; }
 
 
 
+
 fi
 
        rm -Rf build
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether kernel defines atomic64_xchg" >&5
-$as_echo_n "checking whether kernel defines atomic64_xchg... " >&6; }
+
+
+       { $as_echo "$as_me:$LINENO: checking whether files_fdtable() is available" >&5
+$as_echo_n "checking whether files_fdtable() is available... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -17137,13 +19969,19 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <asm/atomic.h>
+               #include <linux/sched.h>
+               #include <linux/file.h>
+               #ifdef HAVE_FDTABLE_HEADER
+               #include <linux/fdtable.h>
+               #endif
 
 int
 main (void)
 {
 
-               atomic64_xchg((atomic64_t *)NULL, 0);
+               struct files_struct *files = current->files;
+               struct fdtable *fdt __attribute__ ((unused));
+               fdt = files_fdtable(files);
 
   ;
   return 0;
@@ -17172,7 +20010,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATOMIC64_XCHG 1
+#define HAVE_FILES_FDTABLE 1
 _ACEOF
 
 
@@ -17191,8 +20029,9 @@ fi
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether kernel defines uintptr_t" >&5
-$as_echo_n "checking whether kernel defines uintptr_t... " >&6; }
+
+       { $as_echo "$as_me:$LINENO: checking whether __clear_close_on_exec() is available" >&5
+$as_echo_n "checking whether __clear_close_on_exec() is available... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -17203,13 +20042,16 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/types.h>
+               #include <linux/fdtable.h>
 
 int
 main (void)
 {
 
-               uintptr_t *ptr __attribute__ ((unused));
+               struct fdtable *fdt = NULL;
+               int fd = 0;
+
+               __clear_close_on_exec(fd, fdt);
 
   ;
   return 0;
@@ -17238,7 +20080,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_UINTPTR_T 1
+#define HAVE_CLEAR_CLOSE_ON_EXEC 1
 _ACEOF
 
 
@@ -17257,8 +20099,9 @@ fi
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether INIT_WORK wants 3 args" >&5
-$as_echo_n "checking whether INIT_WORK wants 3 args... " >&6; }
+
+       { $as_echo "$as_me:$LINENO: checking whether header linux/uaccess.h exists" >&5
+$as_echo_n "checking whether header linux/uaccess.h exists... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -17269,14 +20112,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/workqueue.h>
+               #include <linux/uaccess.h>
 
 int
 main (void)
 {
 
-               struct work_struct work __attribute__ ((unused));
-               INIT_WORK(&work, NULL, NULL);
+               return 0;
 
   ;
   return 0;
@@ -17301,13 +20143,14 @@ _ACEOF
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_3ARGS_INIT_WORK 1
+#define HAVE_UACCESS_HEADER 1
 _ACEOF
 
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
 
 else
   $as_echo "$as_me: failed program was:" >&5
@@ -17318,14 +20161,17 @@ $as_echo "no" >&6; }
 
 
 
+
 fi
 
        rm -Rf build
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether register_sysctl_table() wants 2 args" >&5
-$as_echo_n "checking whether register_sysctl_table() wants 2 args... " >&6; }
+
+
+       { $as_echo "$as_me:$LINENO: checking whether kmalloc_node() is available" >&5
+$as_echo_n "checking whether kmalloc_node() is available... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -17336,13 +20182,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/sysctl.h>
+               #include <linux/slab.h>
 
 int
 main (void)
 {
 
-               (void) register_sysctl_table(NULL, 0);
+               void *a __attribute__ ((unused));
+               a = kmalloc_node(1, GFP_KERNEL, 0);
 
   ;
   return 0;
@@ -17371,7 +20218,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_2ARGS_REGISTER_SYSCTL 1
+#define HAVE_KMALLOC_NODE 1
 _ACEOF
 
 
@@ -17390,9 +20237,9 @@ fi
 
 
 
+       { $as_echo "$as_me:$LINENO: checking whether monotonic_clock() is available" >&5
+$as_echo_n "checking whether monotonic_clock() is available... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether set_shrinker() available" >&5
-$as_echo_n "checking whether set_shrinker() available... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -17403,13 +20250,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/mm.h>
+               #include <linux/timex.h>
 
 int
 main (void)
 {
 
-               return set_shrinker(DEFAULT_SEEKS, NULL);
+               monotonic_clock();
 
   ;
   return 0;
@@ -17433,34 +20280,72 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SET_SHRINKER 1
-_ACEOF
+fi
 
+       rm -Rf build
 
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+
+       if test $rc -ne 0; then :
 
                { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
+       else
+               if test "x$enable_linux_builtin" != xyes; then
 
+       grep -q -E '[[:space:]]monotonic_clock[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(monotonic_clock)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-fi
+               fi
+               if test $rc -ne 0; then :
 
-       rm -Rf build
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
+               else :
 
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MONOTONIC_CLOCK 1
+_ACEOF
+
+
+               fi
+       fi
 
-       { $as_echo "$as_me:$LINENO: checking whether shrinker callback wants 3 args" >&5
-$as_echo_n "checking whether shrinker callback wants 3 args... " >&6; }
-       tmp_flags="$EXTRA_KCFLAGS"
-       EXTRA_KCFLAGS="-Werror"
+
+
+       { $as_echo "$as_me:$LINENO: checking whether struct inode has i_mutex" >&5
+$as_echo_n "checking whether struct inode has i_mutex... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -17471,19 +20356,15 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/mm.h>
-
-               int shrinker_cb(struct shrinker *, int, unsigned int);
+               #include <linux/fs.h>
+               #include <linux/mutex.h>
 
 int
 main (void)
 {
 
-               struct shrinker cache_shrinker = {
-                       .shrink = shrinker_cb,
-                       .seeks = DEFAULT_SEEKS,
-               };
-               register_shrinker(&cache_shrinker);
+               struct inode i;
+               mutex_init(&i.i_mutex);
 
   ;
   return 0;
@@ -17512,7 +20393,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_3ARGS_SHRINKER_CALLBACK 1
+#define HAVE_INODE_I_MUTEX 1
 _ACEOF
 
 
        rm -Rf build
 
 
-       EXTRA_KCFLAGS="$tmp_flags"
 
-       { $as_echo "$as_me:$LINENO: checking whether struct path used in struct nameidata" >&5
-$as_echo_n "checking whether struct path used in struct nameidata... " >&6; }
+
+       { $as_echo "$as_me:$LINENO: checking whether struct mutex has owner" >&5
+$as_echo_n "checking whether struct mutex has owner... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -17544,16 +20425,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/namei.h>
+               #include <linux/mutex.h>
 
 int
 main (void)
 {
 
-               struct nameidata nd __attribute__ ((unused));
-
-               nd.path.mnt = NULL;
-               nd.path.dentry = NULL;
+               struct mutex mtx __attribute__ ((unused));
+               mtx.owner = NULL;
 
   ;
   return 0;
@@ -17582,7 +20461,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_PATH_IN_NAMEIDATA 1
+#define HAVE_MUTEX_OWNER 1
 _ACEOF
 
 
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol task_curr is exported" >&5
-$as_echo_n "checking whether symbol task_curr is exported... " >&6; }
-       grep -q -E '[[:space:]]task_curr[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in kernel/sched.c; do
-                       grep -q -E "EXPORT_SYMBOL.*(task_curr)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_TASK_CURR 1
-_ACEOF
-
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_TASK_CURR 1
-_ACEOF
-
-       fi
-
-
-       { $as_echo "$as_me:$LINENO: checking whether unnumbered sysctl support exists" >&5
-$as_echo_n "checking whether unnumbered sysctl support exists... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether struct mutex owner is a task_struct" >&5
+$as_echo_n "checking whether struct mutex owner is a task_struct... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Werror"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -17654,15 +20495,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/sysctl.h>
+               #include <linux/mutex.h>
 
 int
 main (void)
 {
 
-               #ifndef CTL_UNNUMBERED
-               #error CTL_UNNUMBERED undefined
-               #endif
+               struct mutex mtx __attribute__ ((unused));
+               mtx.owner = current;
 
   ;
   return 0;
@@ -17691,7 +20531,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_CTL_UNNUMBERED 1
+#define HAVE_MUTEX_OWNER_TASK_STRUCT 1
 _ACEOF
 
 
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
-       { $as_echo "$as_me:$LINENO: checking whether struct ctl_table has ctl_name" >&5
-$as_echo_n "checking whether struct ctl_table has ctl_name... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether mutex_lock_nested() is available" >&5
+$as_echo_n "checking whether mutex_lock_nested() is available... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -17723,14 +20564,15 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/sysctl.h>
+               #include <linux/mutex.h>
 
 int
 main (void)
 {
 
-               struct ctl_table ctl __attribute__ ((unused));
-               ctl.ctl_name = 0;
+               struct mutex mutex;
+               mutex_init(&mutex);
+               mutex_lock_nested(&mutex, 0);
 
   ;
   return 0;
@@ -17759,7 +20601,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_CTL_NAME 1
+#define HAVE_MUTEX_LOCK_NESTED 1
 _ACEOF
 
 
@@ -17778,8 +20620,9 @@ fi
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether fls64() is available" >&5
-$as_echo_n "checking whether fls64() is available... " >&6; }
+
+       { $as_echo "$as_me:$LINENO: checking whether on_each_cpu() wants 3 args" >&5
+$as_echo_n "checking whether on_each_cpu() wants 3 args... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -17790,13 +20633,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/bitops.h>
+               #include <linux/smp.h>
 
 int
 main (void)
 {
 
-               return fls64(0);
+               on_each_cpu(NULL, NULL, 0);
 
   ;
   return 0;
@@ -17825,7 +20668,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_FLS64 1
+#define HAVE_3ARGS_ON_EACH_CPU 1
 _ACEOF
 
 
 
 
 
+       { $as_echo "$as_me:$LINENO: checking whether kallsyms_lookup_name() is available" >&5
+$as_echo_n "checking whether kallsyms_lookup_name() is available... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol device_create is exported" >&5
-$as_echo_n "checking whether symbol device_create is exported... " >&6; }
-       grep -q -E '[[:space:]]device_create[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in drivers/base/core.c; do
-                       grep -q -E "EXPORT_SYMBOL.*(device_create)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DEVICE_CREATE 1
-_ACEOF
-
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DEVICE_CREATE 1
-_ACEOF
-
-       fi
-
-
-
-       { $as_echo "$as_me:$LINENO: checking whether device_create() wants 5 args" >&5
-$as_echo_n "checking whether device_create() wants 5 args... " >&6; }
-       tmp_flags="$EXTRA_KCFLAGS"
-       EXTRA_KCFLAGS="-Werror"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -17900,13 +20700,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/device.h>
+               #include <linux/kallsyms.h>
 
 int
 main (void)
 {
 
-               device_create(NULL, NULL, 0, NULL, "%d", 1);
+               kallsyms_lookup_name(NULL);
 
   ;
   return 0;
@@ -17930,22 +20730,11 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_5ARGS_DEVICE_CREATE 1
-_ACEOF
-
-
+  rc=0
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
-
-               { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
+ rc=1
 
 
 fi
        rm -Rf build
 
 
-       EXTRA_KCFLAGS="$tmp_flags"
+       if test $rc -ne 0; then :
 
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol class_device_create is exported" >&5
-$as_echo_n "checking whether symbol class_device_create is exported... " >&6; }
-       grep -q -E '[[:space:]]class_device_create[[:space:]]' \
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]kallsyms_lookup_name[[:space:]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
                export=0
-               for file in drivers/base/class.c; do
-                       grep -q -E "EXPORT_SYMBOL.*(class_device_create)" \
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(kallsyms_lookup_name)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+               fi
+               if test $rc -ne 0; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_CLASS_DEVICE_CREATE 1
-_ACEOF
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
 
-               fi
-       else
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_CLASS_DEVICE_CREATE 1
+#define HAVE_KALLSYMS_LOOKUP_NAME 1
 _ACEOF
 
+
+               fi
        fi
 
 
+       { $as_echo "$as_me:$LINENO: checking whether get_vmalloc_info() is available" >&5
+$as_echo_n "checking whether get_vmalloc_info() is available... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol set_normalized_timespec is exported" >&5
-$as_echo_n "checking whether symbol set_normalized_timespec is exported... " >&6; }
-       grep -q -E '[[:space:]]set_normalized_timespec[[:space:]]' \
+       grep -q -E '[[:space:]]get_vmalloc_info[[:space:]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
                export=0
-               for file in kernel/time.c; do
-                       grep -q -E "EXPORT_SYMBOL.*(set_normalized_timespec)" \
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(get_vmalloc_info)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
+               if test $export -eq 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
+               else :
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_SET_NORMALIZED_TIMESPEC_EXPORT 1
+#define HAVE_GET_VMALLOC_INFO 1
 _ACEOF
 
+
                fi
-       else
+       else :
+
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_SET_NORMALIZED_TIMESPEC_EXPORT 1
+#define HAVE_GET_VMALLOC_INFO 1
 _ACEOF
 
+
        fi
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether set_normalized_timespec() is an inline" >&5
-$as_echo_n "checking whether set_normalized_timespec() is an inline... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether symbol *_pgdat exist" >&5
+$as_echo_n "checking whether symbol *_pgdat exist... " >&6; }
+       grep -q -E 'first_online_pgdat' $LINUX/include/linux/mmzone.h 2>/dev/null
+       rc=$?
+       if test $rc -eq 0; then
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_PGDAT_HELPERS 1
+_ACEOF
+
+       else
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+       fi
+
+       { $as_echo "$as_me:$LINENO: checking whether first_online_pgdat() is available" >&5
+$as_echo_n "checking whether first_online_pgdat() is available... " >&6; }
+
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -18050,14 +20870,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/time.h>
-               void set_normalized_timespec(struct timespec *ts,
-                                            time_t sec, long nsec) { }
+               #include <linux/mmzone.h>
 
 int
 main (void)
 {
 
+               first_online_pgdat();
+
   ;
   return 0;
 }
@@ -18080,22 +20900,11 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-
-               { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
+  rc=0
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
-
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SET_NORMALIZED_TIMESPEC_INLINE 1
-_ACEOF
-
-
+ rc=1
 
 
 fi
        rm -Rf build
 
 
+       if test $rc -ne 0; then :
 
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether timespec_sub() is available" >&5
-$as_echo_n "checking whether timespec_sub() is available... " >&6; }
-
-
-cat confdefs.h - <<_ACEOF >conftest.c
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-               #include <linux/time.h>
-
-int
-main (void)
-{
-
-               struct timespec a = { 0 };
-               struct timespec b = { 0 };
-               struct timespec c __attribute__ ((unused));
-               c = timespec_sub(a, b);
+       else
+               if test "x$enable_linux_builtin" != xyes; then
 
-  ;
-  return 0;
-}
+       grep -q -E '[[:space:]]first_online_pgdat[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(first_online_pgdat)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-_ACEOF
+               fi
+               if test $rc -ne 0; then :
 
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
-       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
-       echo "obj-m := conftest.o" >build/Makefile
-       modpost_flag=''
-       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
-       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+               else :
 
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_TIMESPEC_SUB 1
+#define HAVE_FIRST_ONLINE_PGDAT 1
 _ACEOF
 
 
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-               { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-
-
-fi
-
-       rm -Rf build
-
+               fi
+       fi
 
 
+       { $as_echo "$as_me:$LINENO: checking whether next_online_pgdat() is available" >&5
+$as_echo_n "checking whether next_online_pgdat() is available... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether init_utsname() is available" >&5
-$as_echo_n "checking whether init_utsname() is available... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -18187,14 +20976,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/utsname.h>
+               #include <linux/mmzone.h>
 
 int
 main (void)
 {
 
-               struct new_utsname *a __attribute__ ((unused));
-               a = init_utsname();
+               next_online_pgdat(NULL);
 
   ;
   return 0;
@@ -18218,33 +21006,72 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_INIT_UTSNAME 1
-_ACEOF
+fi
+
+       rm -Rf build
+
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
 
+       grep -q -E '[[:space:]]next_online_pgdat[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(next_online_pgdat)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+               fi
+               if test $rc -ne 0; then :
 
                { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
+               else :
 
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
-fi
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_NEXT_ONLINE_PGDAT 1
+_ACEOF
 
-       rm -Rf build
 
+               fi
+       fi
 
 
+       { $as_echo "$as_me:$LINENO: checking whether next_zone() is available" >&5
+$as_echo_n "checking whether next_zone() is available... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether header linux/fdtable.h exists" >&5
-$as_echo_n "checking whether header linux/fdtable.h exists... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -18255,13 +21082,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/fdtable.h>
+               #include <linux/mmzone.h>
 
 int
 main (void)
 {
 
-               return 0;
+               next_zone(NULL);
 
   ;
   return 0;
@@ -18285,36 +21112,72 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
 
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_FDTABLE_HEADER 1
-_ACEOF
+fi
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+       rm -Rf build
 
 
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+       if test $rc -ne 0; then :
 
                { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]next_zone[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(next_zone)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
+
+               fi
+               if test $rc -ne 0; then :
 
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
+               else :
 
-fi
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
-       rm -Rf build
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_NEXT_ZONE 1
+_ACEOF
 
 
+               fi
+       fi
 
 
+       { $as_echo "$as_me:$LINENO: checking whether pgdat_list is available" >&5
+$as_echo_n "checking whether pgdat_list is available... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether files_fdtable() is available" >&5
-$as_echo_n "checking whether files_fdtable() is available... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -18325,20 +21188,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/sched.h>
-               #include <linux/file.h>
-               #ifdef HAVE_FDTABLE_HEADER
-               #include <linux/fdtable.h>
-               #endif
+               #include <linux/topology.h>
+               pg_data_t *tmp = pgdat_list;
 
 int
 main (void)
 {
 
-               struct files_struct *files = current->files;
-               struct fdtable *fdt __attribute__ ((unused));
-               fdt = files_fdtable(files);
-
   ;
   return 0;
 }
@@ -18361,33 +21217,72 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_FILES_FDTABLE 1
-_ACEOF
+fi
 
+       rm -Rf build
 
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+
+       if test $rc -ne 0; then :
 
                { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
+       else
+               if test "x$enable_linux_builtin" != xyes; then
 
+       grep -q -E '[[:space:]]pgdat_list[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(pgdat_list)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-fi
+               fi
+               if test $rc -ne 0; then :
 
-       rm -Rf build
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
+               else :
 
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_PGDAT_LIST 1
+_ACEOF
 
-       { $as_echo "$as_me:$LINENO: checking whether __clear_close_on_exec() is available" >&5
-$as_echo_n "checking whether __clear_close_on_exec() is available... " >&6; }
+
+               fi
+       fi
+
+
+
+       { $as_echo "$as_me:$LINENO: checking whether global_page_state() is available" >&5
+$as_echo_n "checking whether global_page_state() is available... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -18398,16 +21293,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/fdtable.h>
+               #include <linux/mm.h>
 
 int
 main (void)
 {
 
-               struct fdtable *fdt = NULL;
-               int fd = 0;
-
-               __clear_close_on_exec(fd, fdt);
+               unsigned long state __attribute__ ((unused));
+               state = global_page_state(0);
 
   ;
   return 0;
@@ -18436,7 +21329,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_CLEAR_CLOSE_ON_EXEC 1
+#define HAVE_GLOBAL_PAGE_STATE 1
 _ACEOF
 
 
@@ -18456,8 +21349,8 @@ fi
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether header linux/uaccess.h exists" >&5
-$as_echo_n "checking whether header linux/uaccess.h exists... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether page state NR_FREE_PAGES is available" >&5
+$as_echo_n "checking whether page state NR_FREE_PAGES is available... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -18468,13 +21361,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/uaccess.h>
+               #include <linux/mm.h>
 
 int
 main (void)
 {
 
-               return 0;
+               enum zone_stat_item zsi __attribute__ ((unused));
+               zsi = NR_FREE_PAGES;
 
   ;
   return 0;
@@ -18499,14 +21393,13 @@ _ACEOF
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
 
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_UACCESS_HEADER 1
+#define HAVE_ZONE_STAT_ITEM_NR_FREE_PAGES 1
 _ACEOF
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
 
 else
   $as_echo "$as_me: failed program was:" >&5
@@ -18517,7 +21410,6 @@ $as_echo "no" >&6; }
 
 
 
-
 fi
 
        rm -Rf build
@@ -18525,9 +21417,8 @@ fi
 
 
 
-
-       { $as_echo "$as_me:$LINENO: checking whether kmalloc_node() is available" >&5
-$as_echo_n "checking whether kmalloc_node() is available... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether page state NR_INACTIVE is available" >&5
+$as_echo_n "checking whether page state NR_INACTIVE is available... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -18538,14 +21429,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/slab.h>
+               #include <linux/mm.h>
 
 int
 main (void)
 {
 
-               void *a __attribute__ ((unused));
-               a = kmalloc_node(1, GFP_KERNEL, 0);
+               enum zone_stat_item zsi __attribute__ ((unused));
+               zsi = NR_INACTIVE;
 
   ;
   return 0;
@@ -18574,7 +21465,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_KMALLOC_NODE 1
+#define HAVE_ZONE_STAT_ITEM_NR_INACTIVE 1
 _ACEOF
 
 
 
 
 
-
-       { $as_echo "$as_me:$LINENO: checking whether symbol monotonic_clock is exported" >&5
-$as_echo_n "checking whether symbol monotonic_clock is exported... " >&6; }
-       grep -q -E '[[:space:]]monotonic_clock[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(monotonic_clock)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MONOTONIC_CLOCK 1
-_ACEOF
-
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MONOTONIC_CLOCK 1
-_ACEOF
-
-       fi
-
-
-
-       { $as_echo "$as_me:$LINENO: checking whether struct inode has i_mutex" >&5
-$as_echo_n "checking whether struct inode has i_mutex... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether page state NR_INACTIVE_ANON is available" >&5
+$as_echo_n "checking whether page state NR_INACTIVE_ANON is available... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -18647,15 +21496,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/fs.h>
-               #include <linux/mutex.h>
+               #include <linux/mm.h>
 
 int
 main (void)
 {
 
-               struct inode i;
-               mutex_init(&i.i_mutex);
+               enum zone_stat_item zsi __attribute__ ((unused));
+               zsi = NR_INACTIVE_ANON;
 
   ;
   return 0;
@@ -18684,7 +21532,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_INODE_I_MUTEX 1
+#define HAVE_ZONE_STAT_ITEM_NR_INACTIVE_ANON 1
 _ACEOF
 
 
@@ -18703,9 +21551,8 @@ fi
 
 
 
-
-       { $as_echo "$as_me:$LINENO: checking whether struct mutex has owner" >&5
-$as_echo_n "checking whether struct mutex has owner... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether page state NR_INACTIVE_FILE is available" >&5
+$as_echo_n "checking whether page state NR_INACTIVE_FILE is available... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -18716,14 +21563,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/mutex.h>
+               #include <linux/mm.h>
 
 int
 main (void)
 {
 
-               struct mutex mtx __attribute__ ((unused));
-               mtx.owner = NULL;
+               enum zone_stat_item zsi __attribute__ ((unused));
+               zsi = NR_INACTIVE_FILE;
 
   ;
   return 0;
@@ -18752,7 +21599,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_OWNER 1
+#define HAVE_ZONE_STAT_ITEM_NR_INACTIVE_FILE 1
 _ACEOF
 
 
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether struct mutex owner is a task_struct" >&5
-$as_echo_n "checking whether struct mutex owner is a task_struct... " >&6; }
-       tmp_flags="$EXTRA_KCFLAGS"
-       EXTRA_KCFLAGS="-Werror"
+       { $as_echo "$as_me:$LINENO: checking whether page state NR_ACTIVE is available" >&5
+$as_echo_n "checking whether page state NR_ACTIVE is available... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -18786,14 +21631,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/mutex.h>
+               #include <linux/mm.h>
 
 int
 main (void)
 {
 
-               struct mutex mtx __attribute__ ((unused));
-               mtx.owner = current;
+               enum zone_stat_item zsi __attribute__ ((unused));
+               zsi = NR_ACTIVE;
 
   ;
   return 0;
@@ -18822,7 +21667,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_OWNER_TASK_STRUCT 1
+#define HAVE_ZONE_STAT_ITEM_NR_ACTIVE 1
 _ACEOF
 
 
        rm -Rf build
 
 
-       EXTRA_KCFLAGS="$tmp_flags"
-
-
-       { $as_echo "$as_me:$LINENO: checking whether mutex_lock_nested() is available" >&5
-$as_echo_n "checking whether mutex_lock_nested() is available... " >&6; }
+
+       { $as_echo "$as_me:$LINENO: checking whether page state NR_ACTIVE_ANON is available" >&5
+$as_echo_n "checking whether page state NR_ACTIVE_ANON is available... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -18855,15 +21698,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/mutex.h>
+               #include <linux/mm.h>
 
 int
 main (void)
 {
 
-               struct mutex mutex;
-               mutex_init(&mutex);
-               mutex_lock_nested(&mutex, 0);
+               enum zone_stat_item zsi __attribute__ ((unused));
+               zsi = NR_ACTIVE_ANON;
 
   ;
   return 0;
@@ -18892,7 +21734,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_LOCK_NESTED 1
+#define HAVE_ZONE_STAT_ITEM_NR_ACTIVE_ANON 1
 _ACEOF
 
 
@@ -18911,9 +21753,8 @@ fi
 
 
 
-
-       { $as_echo "$as_me:$LINENO: checking whether on_each_cpu() wants 3 args" >&5
-$as_echo_n "checking whether on_each_cpu() wants 3 args... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether page state NR_ACTIVE_FILE is available" >&5
+$as_echo_n "checking whether page state NR_ACTIVE_FILE is available... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -18924,13 +21765,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/smp.h>
+               #include <linux/mm.h>
 
 int
 main (void)
 {
 
-               on_each_cpu(NULL, NULL, 0);
+               enum zone_stat_item zsi __attribute__ ((unused));
+               zsi = NR_ACTIVE_FILE;
 
   ;
   return 0;
@@ -18959,7 +21801,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_3ARGS_ON_EACH_CPU 1
+#define HAVE_ZONE_STAT_ITEM_NR_ACTIVE_FILE 1
 _ACEOF
 
 
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol kallsyms_lookup_name is exported" >&5
-$as_echo_n "checking whether symbol kallsyms_lookup_name is exported... " >&6; }
-       grep -q -E '[[:space:]]kallsyms_lookup_name[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(kallsyms_lookup_name)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_KALLSYMS_LOOKUP_NAME 1
-_ACEOF
+       { $as_echo "$as_me:$LINENO: checking whether symbol get_zone_counts is needed" >&5
+$as_echo_n "checking whether symbol get_zone_counts is needed... " >&6; }
 
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_KALLSYMS_LOOKUP_NAME 1
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
 _ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
 
-       fi
 
 
+int
+main (void)
+{
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol get_vmalloc_info is exported" >&5
-$as_echo_n "checking whether symbol get_vmalloc_info is exported... " >&6; }
-       grep -q -E '[[:space:]]get_vmalloc_info[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(get_vmalloc_info)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+               #if !defined(HAVE_ZONE_STAT_ITEM_NR_FREE_PAGES)
+               #error "global_page_state needs NR_FREE_PAGES"
+               #endif
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+               #if !defined(HAVE_ZONE_STAT_ITEM_NR_ACTIVE) && \
+                   !defined(HAVE_ZONE_STAT_ITEM_NR_ACTIVE_ANON) && \
+                   !defined(HAVE_ZONE_STAT_ITEM_NR_ACTIVE_FILE)
+               #error "global_page_state needs NR_ACTIVE*"
+               #endif
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_GET_VMALLOC_INFO 1
-_ACEOF
+               #if !defined(HAVE_ZONE_STAT_ITEM_NR_INACTIVE) && \
+                   !defined(HAVE_ZONE_STAT_ITEM_NR_INACTIVE_ANON) && \
+                   !defined(HAVE_ZONE_STAT_ITEM_NR_INACTIVE_FILE)
+               #error "global_page_state needs NR_INACTIVE*"
+               #endif
 
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+  ;
+  return 0;
+}
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_GET_VMALLOC_INFO 1
 _ACEOF
 
-       fi
-
-
-
-       { $as_echo "$as_me:$LINENO: checking whether symbol *_pgdat exist" >&5
-$as_echo_n "checking whether symbol *_pgdat exist... " >&6; }
-       grep -q -E 'first_online_pgdat' $LINUX/include/linux/mmzone.h 2>/dev/null
-       rc=$?
-       if test $rc -eq 0; then
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_PGDAT_HELPERS 1
-_ACEOF
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
 
-       else
                { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
-       fi
-
-
-       { $as_echo "$as_me:$LINENO: checking whether symbol first_online_pgdat is exported" >&5
-$as_echo_n "checking whether symbol first_online_pgdat is exported... " >&6; }
-       grep -q -E '[[:space:]]first_online_pgdat[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(first_online_pgdat)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_FIRST_ONLINE_PGDAT 1
-_ACEOF
-
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_FIRST_ONLINE_PGDAT 1
-_ACEOF
-
-       fi
-
-
-
-       { $as_echo "$as_me:$LINENO: checking whether symbol next_online_pgdat is exported" >&5
-$as_echo_n "checking whether symbol next_online_pgdat is exported... " >&6; }
-       grep -q -E '[[:space:]]next_online_pgdat[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(next_online_pgdat)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_NEXT_ONLINE_PGDAT 1
-_ACEOF
-
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_NEXT_ONLINE_PGDAT 1
-_ACEOF
-
-       fi
-
-
-
-       { $as_echo "$as_me:$LINENO: checking whether symbol next_zone is exported" >&5
-$as_echo_n "checking whether symbol next_zone is exported... " >&6; }
-       grep -q -E '[[:space:]]next_zone[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(next_zone)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_NEXT_ZONE 1
-_ACEOF
-
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_NEXT_ZONE 1
-_ACEOF
-
-       fi
-
-
-
-       { $as_echo "$as_me:$LINENO: checking whether symbol pgdat_list is exported" >&5
-$as_echo_n "checking whether symbol pgdat_list is exported... " >&6; }
-       grep -q -E '[[:space:]]pgdat_list[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(pgdat_list)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_PGDAT_LIST 1
-_ACEOF
 
-               fi
-       else
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_PGDAT_LIST 1
+#define NEED_GET_ZONE_COUNTS 1
 _ACEOF
 
-       fi
-
 
+               { $as_echo "$as_me:$LINENO: checking whether get_zone_counts() is available" >&5
+$as_echo_n "checking whether get_zone_counts() is available... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether global_page_state() is available" >&5
-$as_echo_n "checking whether global_page_state() is available... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -19255,14 +21905,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/mm.h>
+                       #include <linux/mmzone.h>
 
 int
 main (void)
 {
 
-               unsigned long state __attribute__ ((unused));
-               state = global_page_state(0);
+                       get_zone_counts(NULL, NULL, NULL);
 
   ;
   return 0;
@@ -19286,21 +21935,68 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
+
+fi
+
+       rm -Rf build
+
+
+       if test $rc -ne 0; then :
+
+                       { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]get_zone_counts[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(get_zone_counts)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
+
+               fi
+               if test $rc -ne 0; then :
+
+                       { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
+
+                       { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_GLOBAL_PAGE_STATE 1
+#define HAVE_GET_ZONE_COUNTS 1
 _ACEOF
 
 
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+               fi
+       fi
 
-               { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
 
 
 
@@ -19310,9 +22006,9 @@ fi
 
 
 
+       { $as_echo "$as_me:$LINENO: checking whether user_path_dir() is available" >&5
+$as_echo_n "checking whether user_path_dir() is available... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether page state NR_FREE_PAGES is available" >&5
-$as_echo_n "checking whether page state NR_FREE_PAGES is available... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -19323,14 +22019,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/mm.h>
+               #include <linux/fcntl.h>
+               #include <linux/namei.h>
 
 int
 main (void)
 {
 
-               enum zone_stat_item zsi __attribute__ ((unused));
-               zsi = NR_FREE_PAGES;
+               user_path_dir(NULL, NULL);
 
   ;
   return 0;
@@ -19354,33 +22050,72 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ZONE_STAT_ITEM_NR_FREE_PAGES 1
-_ACEOF
+fi
 
+       rm -Rf build
 
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+
+       if test $rc -ne 0; then :
 
                { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
+       else
+               if test "x$enable_linux_builtin" != xyes; then
 
+       grep -q -E '[[:space:]]user_path_at[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(user_path_at)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-fi
+               fi
+               if test $rc -ne 0; then :
 
-       rm -Rf build
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_USER_PATH_DIR 1
+_ACEOF
 
 
+               fi
+       fi
 
 
-       { $as_echo "$as_me:$LINENO: checking whether page state NR_INACTIVE is available" >&5
-$as_echo_n "checking whether page state NR_INACTIVE is available... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether set_fs_pwd() is available" >&5
+$as_echo_n "checking whether set_fs_pwd() is available... " >&6; }
+
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -19391,14 +22126,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/mm.h>
+               #include <linux/spinlock.h>
+               #include <linux/fs_struct.h>
 
 int
 main (void)
 {
 
-               enum zone_stat_item zsi __attribute__ ((unused));
-               zsi = NR_INACTIVE;
+               (void) set_fs_pwd;
 
   ;
   return 0;
@@ -19422,32 +22157,71 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ZONE_STAT_ITEM_NR_INACTIVE 1
-_ACEOF
+fi
 
+       rm -Rf build
 
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+
+       if test $rc -ne 0; then :
 
                { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]set_fs_pwd[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(set_fs_pwd)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
+
+               fi
+               if test $rc -ne 0; then :
 
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
-fi
+               else :
 
-       rm -Rf build
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SET_FS_PWD 1
+_ACEOF
 
 
-       { $as_echo "$as_me:$LINENO: checking whether page state NR_INACTIVE_ANON is available" >&5
-$as_echo_n "checking whether page state NR_INACTIVE_ANON is available... " >&6; }
+               fi
+       fi
+
+
+       { $as_echo "$as_me:$LINENO: checking whether set_fs_pwd() wants 2 args" >&5
+$as_echo_n "checking whether set_fs_pwd() wants 2 args... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -19458,14 +22232,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/mm.h>
+               #include <linux/sched.h>
+               #include <linux/fs_struct.h>
 
 int
 main (void)
 {
 
-               enum zone_stat_item zsi __attribute__ ((unused));
-               zsi = NR_INACTIVE_ANON;
+               set_fs_pwd(NULL, NULL);
 
   ;
   return 0;
@@ -19494,7 +22268,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_ZONE_STAT_ITEM_NR_INACTIVE_ANON 1
+#define HAVE_2ARGS_SET_FS_PWD 1
 _ACEOF
 
 
@@ -19513,8 +22287,8 @@ fi
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether page state NR_INACTIVE_FILE is available" >&5
-$as_echo_n "checking whether page state NR_INACTIVE_FILE is available... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether vfs_unlink() wants 2 args" >&5
+$as_echo_n "checking whether vfs_unlink() wants 2 args... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -19525,14 +22299,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/mm.h>
+               #include <linux/fs.h>
 
 int
 main (void)
 {
 
-               enum zone_stat_item zsi __attribute__ ((unused));
-               zsi = NR_INACTIVE_FILE;
+               vfs_unlink(NULL, NULL);
 
   ;
   return 0;
@@ -19561,7 +22334,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_ZONE_STAT_ITEM_NR_INACTIVE_FILE 1
+#define HAVE_2ARGS_VFS_UNLINK 1
 _ACEOF
 
 
@@ -19580,9 +22353,8 @@ fi
 
 
 
-
-       { $as_echo "$as_me:$LINENO: checking whether page state NR_ACTIVE is available" >&5
-$as_echo_n "checking whether page state NR_ACTIVE is available... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether vfs_rename() wants 4 args" >&5
+$as_echo_n "checking whether vfs_rename() wants 4 args... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -19593,14 +22365,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/mm.h>
+               #include <linux/fs.h>
 
 int
 main (void)
 {
 
-               enum zone_stat_item zsi __attribute__ ((unused));
-               zsi = NR_ACTIVE;
+               vfs_rename(NULL, NULL, NULL, NULL);
 
   ;
   return 0;
@@ -19629,7 +22400,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_ZONE_STAT_ITEM_NR_ACTIVE 1
+#define HAVE_4ARGS_VFS_RENAME 1
 _ACEOF
 
 
@@ -19648,8 +22419,9 @@ fi
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether page state NR_ACTIVE_ANON is available" >&5
-$as_echo_n "checking whether page state NR_ACTIVE_ANON is available... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether vfs_fsync() is available" >&5
+$as_echo_n "checking whether vfs_fsync() is available... " >&6; }
+
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -19660,14 +22432,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/mm.h>
+               #include <linux/fs.h>
 
 int
 main (void)
 {
 
-               enum zone_stat_item zsi __attribute__ ((unused));
-               zsi = NR_ACTIVE_ANON;
+               (void) vfs_fsync;
 
   ;
   return 0;
@@ -19691,32 +22462,72 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ZONE_STAT_ITEM_NR_ACTIVE_ANON 1
-_ACEOF
+fi
 
+       rm -Rf build
 
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]vfs_fsync[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in fs/sync.c; do
+                       grep -q -E "EXPORT_SYMBOL.*(vfs_fsync)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
+
+               fi
+               if test $rc -ne 0; then :
 
                { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
+               else :
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_VFS_FSYNC 1
+_ACEOF
 
-fi
 
-       rm -Rf build
+               fi
+       fi
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether page state NR_ACTIVE_FILE is available" >&5
-$as_echo_n "checking whether page state NR_ACTIVE_FILE is available... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether vfs_fsync() wants 2 args" >&5
+$as_echo_n "checking whether vfs_fsync() wants 2 args... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -19727,14 +22538,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/mm.h>
+               #include <linux/fs.h>
 
 int
 main (void)
 {
 
-               enum zone_stat_item zsi __attribute__ ((unused));
-               zsi = NR_ACTIVE_FILE;
+               vfs_fsync(NULL, 0);
 
   ;
   return 0;
@@ -19763,7 +22573,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_ZONE_STAT_ITEM_NR_ACTIVE_FILE 1
+#define HAVE_2ARGS_VFS_FSYNC 1
 _ACEOF
 
 
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol get_zone_counts is needed" >&5
-$as_echo_n "checking whether symbol get_zone_counts is needed... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether struct fs_struct uses spinlock_t" >&5
+$as_echo_n "checking whether struct fs_struct uses spinlock_t... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Werror"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -19795,26 +22607,15 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
+               #include <linux/sched.h>
+               #include <linux/fs_struct.h>
 
 int
 main (void)
 {
 
-               #if !defined(HAVE_ZONE_STAT_ITEM_NR_FREE_PAGES)
-               #error "global_page_state needs NR_FREE_PAGES"
-               #endif
-
-               #if !defined(HAVE_ZONE_STAT_ITEM_NR_ACTIVE) && \
-                   !defined(HAVE_ZONE_STAT_ITEM_NR_ACTIVE_ANON) && \
-                   !defined(HAVE_ZONE_STAT_ITEM_NR_ACTIVE_FILE)
-               #error "global_page_state needs NR_ACTIVE*"
-               #endif
-
-               #if !defined(HAVE_ZONE_STAT_ITEM_NR_INACTIVE) && \
-                   !defined(HAVE_ZONE_STAT_ITEM_NR_INACTIVE_ANON) && \
-                   !defined(HAVE_ZONE_STAT_ITEM_NR_INACTIVE_FILE)
-               #error "global_page_state needs NR_INACTIVE*"
-               #endif
+               struct fs_struct fs;
+               spin_lock_init(&fs.lock);
 
   ;
   return 0;
@@ -19839,60 +22640,20 @@ _ACEOF
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
 
-               { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define NEED_GET_ZONE_COUNTS 1
-_ACEOF
-
-
-               { $as_echo "$as_me:$LINENO: checking whether symbol get_zone_counts is exported" >&5
-$as_echo_n "checking whether symbol get_zone_counts is exported... " >&6; }
-       grep -q -E '[[:space:]]get_zone_counts[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(get_zone_counts)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_GET_ZONE_COUNTS 1
+#define HAVE_FS_STRUCT_SPINLOCK 1
 _ACEOF
 
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_GET_ZONE_COUNTS 1
-_ACEOF
 
-       fi
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
 
 
        rm -Rf build
 
 
+       EXTRA_KCFLAGS="$tmp_flags"
 
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol user_path_at is exported" >&5
-$as_echo_n "checking whether symbol user_path_at is exported... " >&6; }
-       grep -q -E '[[:space:]]user_path_at[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(user_path_at)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_USER_PATH_DIR 1
-_ACEOF
-
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_USER_PATH_DIR 1
-_ACEOF
-
-       fi
-
-
-
-       { $as_echo "$as_me:$LINENO: checking whether symbol set_fs_pwd is exported" >&5
-$as_echo_n "checking whether symbol set_fs_pwd is exported... " >&6; }
-       grep -q -E '[[:space:]]set_fs_pwd[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(set_fs_pwd)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SET_FS_PWD 1
-_ACEOF
-
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SET_FS_PWD 1
-_ACEOF
-
-       fi
-
-
-       { $as_echo "$as_me:$LINENO: checking whether set_fs_pwd() wants 2 args" >&5
-$as_echo_n "checking whether set_fs_pwd() wants 2 args... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether struct cred exists" >&5
+$as_echo_n "checking whether struct cred exists... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -19996,14 +22677,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/sched.h>
-               #include <linux/fs_struct.h>
+               #include <linux/cred.h>
 
 int
 main (void)
 {
 
-               set_fs_pwd(NULL, NULL);
+               struct cred *cr __attribute__ ((unused));
+               cr  = NULL;
 
   ;
   return 0;
@@ -20032,7 +22713,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_2ARGS_SET_FS_PWD 1
+#define HAVE_CRED_STRUCT 1
 _ACEOF
 
 
@@ -20051,8 +22732,9 @@ fi
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether vfs_unlink() wants 2 args" >&5
-$as_echo_n "checking whether vfs_unlink() wants 2 args... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether groups_search() is available" >&5
+$as_echo_n "checking whether groups_search() is available... " >&6; }
+
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -20063,13 +22745,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/fs.h>
+               #include <linux/cred.h>
 
 int
 main (void)
 {
 
-               vfs_unlink(NULL, NULL);
+               groups_search(NULL, 0);
 
   ;
   return 0;
@@ -20093,32 +22775,72 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_2ARGS_VFS_UNLINK 1
-_ACEOF
+fi
 
+       rm -Rf build
 
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+
+       if test $rc -ne 0; then :
 
                { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
+       else
+               if test "x$enable_linux_builtin" != xyes; then
 
+       grep -q -E '[[:space:]]groups_search[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(groups_search)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-fi
+               fi
+               if test $rc -ne 0; then :
 
-       rm -Rf build
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
+               else :
 
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_GROUPS_SEARCH 1
+_ACEOF
+
+
+               fi
+       fi
+
+
+       { $as_echo "$as_me:$LINENO: checking whether __put_task_struct() is available" >&5
+$as_echo_n "checking whether __put_task_struct() is available... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether vfs_rename() wants 4 args" >&5
-$as_echo_n "checking whether vfs_rename() wants 4 args... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -20129,13 +22851,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/fs.h>
+               #include <linux/sched.h>
 
 int
 main (void)
 {
 
-               vfs_rename(NULL, NULL, NULL, NULL);
+               __put_task_struct(NULL);
 
   ;
   return 0;
@@ -20159,22 +22881,11 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_4ARGS_VFS_RENAME 1
-_ACEOF
-
-
+  rc=0
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
-
-               { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
+ rc=1
 
 
 fi
        rm -Rf build
 
 
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
+       else
+               if test "x$enable_linux_builtin" != xyes; then
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol vfs_fsync is exported" >&5
-$as_echo_n "checking whether symbol vfs_fsync is exported... " >&6; }
-       grep -q -E '[[:space:]]vfs_fsync[[:space:]]' \
+       grep -q -E '[[:space:]]__put_task_struct[[:space:]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
                export=0
-               for file in fs/sync.c; do
-                       grep -q -E "EXPORT_SYMBOL.*(vfs_fsync)" \
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(__put_task_struct)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+               fi
+               if test $rc -ne 0; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_VFS_FSYNC 1
-_ACEOF
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
 
-               fi
-       else
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_VFS_FSYNC 1
+#define HAVE_PUT_TASK_STRUCT 1
 _ACEOF
 
+
+               fi
        fi
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether vfs_fsync() wants 2 args" >&5
-$as_echo_n "checking whether vfs_fsync() wants 2 args... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether proc_handler() wants 5 args" >&5
+$as_echo_n "checking whether proc_handler() wants 5 args... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -20237,13 +22957,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/fs.h>
+               #include <linux/sysctl.h>
 
 int
 main (void)
 {
 
-               vfs_fsync(NULL, 0);
+               proc_dostring(NULL, 0, NULL, NULL, NULL);
 
   ;
   return 0;
@@ -20272,7 +22992,7 @@ _ACEOF
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_2ARGS_VFS_FSYNC 1
+#define HAVE_5ARGS_PROC_HANDLER 1
 _ACEOF
 
 
 
 
 
+       { $as_echo "$as_me:$LINENO: checking whether kvasprintf() is available" >&5
+$as_echo_n "checking whether kvasprintf() is available... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether struct fs_struct uses spinlock_t" >&5
-$as_echo_n "checking whether struct fs_struct uses spinlock_t... " >&6; }
-       tmp_flags="$EXTRA_KCFLAGS"
-       EXTRA_KCFLAGS="-Werror"
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -20306,15 +23024,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/sched.h>
-               #include <linux/fs_struct.h>
+               #include <linux/kernel.h>
 
 int
 main (void)
 {
 
-               struct fs_struct fs;
-               spin_lock_init(&fs.lock);
+               kvasprintf(0, NULL, *((va_list*)NULL));
 
   ;
   return 0;
@@ -20338,34 +23054,72 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
 
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_FS_STRUCT_SPINLOCK 1
-_ACEOF
+fi
 
+       rm -Rf build
 
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]kvasprintf[[:space:]]' \
+               $LINUX_OBJ/Module*.symvers 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+               export=0
+               for file in ; do
+                       grep -q -E "EXPORT_SYMBOL.*(kvasprintf)" \
+                               "$LINUX_OBJ/$file" 2>/dev/null
+                       rc=$?
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
+               done
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
+
+               fi
+               if test $rc -ne 0; then :
 
                { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
+               else :
 
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
-fi
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_KVASPRINTF 1
+_ACEOF
 
-       rm -Rf build
 
+               fi
+       fi
 
-       EXTRA_KCFLAGS="$tmp_flags"
 
+       { $as_echo "$as_me:$LINENO: checking whether rwsem_is_locked() acquires sem->wait_lock" >&5
+$as_echo_n "checking whether rwsem_is_locked() acquires sem->wait_lock... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether struct cred exists" >&5
-$as_echo_n "checking whether struct cred exists... " >&6; }
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -20376,15 +23130,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/cred.h>
+               #include <linux/rwsem.h>
+               int rwsem_is_locked(struct rw_semaphore *sem) { return 0; }
 
 int
 main (void)
 {
 
-               struct cred *cr __attribute__ ((unused));
-               cr  = NULL;
-
   ;
   return 0;
 }
@@ -20407,22 +23159,11 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_CRED_STRUCT 1
-_ACEOF
-
-
+  rc=0
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
-
-               { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
+ rc=1
 
 
 fi
        rm -Rf build
 
 
+       if test $rc -ne 0; then :
 
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol groups_search is exported" >&5
-$as_echo_n "checking whether symbol groups_search is exported... " >&6; }
-       grep -q -E '[[:space:]]groups_search[[:space:]]' \
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]rwsem_is_locked[[:space:]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
                export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(groups_search)" \
+               for file in lib/rwsem-spinlock.c; do
+                       grep -q -E "EXPORT_SYMBOL.*(rwsem_is_locked)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_GROUPS_SEARCH 1
-_ACEOF
-
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
                fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_GROUPS_SEARCH 1
-_ACEOF
-
+       else :
+               rc=0
        fi
 
+               fi
+               if test $rc -ne 0; then :
 
-
-       { $as_echo "$as_me:$LINENO: checking whether symbol __put_task_struct is exported" >&5
-$as_echo_n "checking whether symbol __put_task_struct is exported... " >&6; }
-       grep -q -E '[[:space:]]__put_task_struct[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(__put_task_struct)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
+               { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_PUT_TASK_STRUCT 1
-_ACEOF
+               else :
 
-               fi
-       else
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_PUT_TASK_STRUCT 1
+#define RWSEM_IS_LOCKED_TAKES_WAIT_LOCK 1
 _ACEOF
 
+
+               fi
        fi
 
 
 
-       { $as_echo "$as_me:$LINENO: checking whether proc_handler() wants 5 args" >&5
-$as_echo_n "checking whether proc_handler() wants 5 args... " >&6; }
+       { $as_echo "$as_me:$LINENO: checking whether invalidate_inodes() is available" >&5
+$as_echo_n "checking whether invalidate_inodes() is available... " >&6; }
+
 
 
 cat confdefs.h - <<_ACEOF >conftest.c
@@ -20526,13 +23236,13 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 
-               #include <linux/sysctl.h>
+               #include <linux/fs.h>
 
 int
 main (void)
 {
 
-               proc_dostring(NULL, 0, NULL, NULL, NULL);
+               invalidate_inodes;
 
   ;
   return 0;
@@ -20556,22 +23266,11 @@ _ACEOF
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_5ARGS_PROC_HANDLER 1
-_ACEOF
-
-
+  rc=0
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
-
-               { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
+ rc=1
 
 
 fi
        rm -Rf build
 
 
+       if test $rc -ne 0; then :
 
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol kvasprintf is exported" >&5
-$as_echo_n "checking whether symbol kvasprintf is exported... " >&6; }
-       grep -q -E '[[:space:]]kvasprintf[[:space:]]' \
+       else
+               if test "x$enable_linux_builtin" != xyes; then
+
+       grep -q -E '[[:space:]]invalidate_inodes[[:space:]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
        if test $rc -ne 0; then
                export=0
                for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(kvasprintf)" \
+                       grep -q -E "EXPORT_SYMBOL.*(invalidate_inodes)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+               fi
+               if test $rc -ne 0; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_KVASPRINTF 1
-_ACEOF
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
 
-               fi
-       else
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_KVASPRINTF 1
+#define HAVE_INVALIDATE_INODES 1
 _ACEOF
 
+
+               fi
        fi
 
 
+       { $as_echo "$as_me:$LINENO: checking whether invalidate_inodes_check() is available" >&5
+$as_echo_n "checking whether invalidate_inodes_check() is available... " >&6; }
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol rwsem_is_locked is exported" >&5
-$as_echo_n "checking whether symbol rwsem_is_locked is exported... " >&6; }
-       grep -q -E '[[:space:]]rwsem_is_locked[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in lib/rwsem-spinlock.c; do
-                       grep -q -E "EXPORT_SYMBOL.*(rwsem_is_locked)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define RWSEM_IS_LOCKED_TAKES_WAIT_LOCK 1
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
 _ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
 
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define RWSEM_IS_LOCKED_TAKES_WAIT_LOCK 1
+               #include <linux/fs.h>
+
+int
+main (void)
+{
+
+               invalidate_inodes_check(NULL, 0);
+
+  ;
+  return 0;
+}
+
 _ACEOF
 
-       fi
 
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
 
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol invalidate_inodes is exported" >&5
-$as_echo_n "checking whether symbol invalidate_inodes is exported... " >&6; }
-       grep -q -E '[[:space:]]invalidate_inodes[[:space:]]' \
-               $LINUX_OBJ/Module*.symvers 2>/dev/null
-       rc=$?
-       if test $rc -ne 0; then
-               export=0
-               for file in ; do
-                       grep -q -E "EXPORT_SYMBOL.*(invalidate_inodes)" \
-                               "$LINUX_OBJ/$file" 2>/dev/null
-                       rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
-               done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+fi
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+       rm -Rf build
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_INVALIDATE_INODES 1
-_ACEOF
 
-               fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+       if test $rc -ne 0; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_INVALIDATE_INODES 1
-_ACEOF
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
-       fi
+       else
+               if test "x$enable_linux_builtin" != xyes; then
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol invalidate_inodes_check is exported" >&5
-$as_echo_n "checking whether symbol invalidate_inodes_check is exported... " >&6; }
        grep -q -E '[[:space:]]invalidate_inodes_check[[:space:]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
@@ -20713,25 +23401,28 @@ $as_echo_n "checking whether symbol invalidate_inodes_check is exported... " >&6
                        grep -q -E "EXPORT_SYMBOL.*(invalidate_inodes_check)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+               fi
+               if test $rc -ne 0; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_INVALIDATE_INODES_CHECK 1
-_ACEOF
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
 
-               fi
-       else
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -20739,6 +23430,8 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_INVALIDATE_INODES_CHECK 1
 _ACEOF
 
+
+               fi
        fi
 
 
 
 
 
+       { $as_echo "$as_me:$LINENO: checking whether shrink_dcache_memory() is available" >&5
+$as_echo_n "checking whether shrink_dcache_memory() is available... " >&6; }
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/dcache.h>
+
+int
+main (void)
+{
+
+               shrink_dcache_memory(0, 0);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+
+       rm -Rf build
+
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol shrink_dcache_memory is exported" >&5
-$as_echo_n "checking whether symbol shrink_dcache_memory is exported... " >&6; }
        grep -q -E '[[:space:]]shrink_dcache_memory[[:space:]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
@@ -20820,38 +23573,103 @@ $as_echo_n "checking whether symbol shrink_dcache_memory is exported... " >&6; }
                        grep -q -E "EXPORT_SYMBOL.*(shrink_dcache_memory)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
+
+               fi
+               if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
+               else :
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
 #define HAVE_SHRINK_DCACHE_MEMORY 1
 _ACEOF
 
+
                fi
-       else
-               { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+       fi
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SHRINK_DCACHE_MEMORY 1
+
+       { $as_echo "$as_me:$LINENO: checking whether shrink_icache_memory() is available" >&5
+$as_echo_n "checking whether shrink_icache_memory() is available... " >&6; }
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
 _ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
 
-       fi
 
+               #include <linux/dcache.h>
+
+int
+main (void)
+{
+
+               shrink_icache_memory(0, 0);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+
+       rm -Rf build
+
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
+       else
+               if test "x$enable_linux_builtin" != xyes; then
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol shrink_icache_memory is exported" >&5
-$as_echo_n "checking whether symbol shrink_icache_memory is exported... " >&6; }
        grep -q -E '[[:space:]]shrink_icache_memory[[:space:]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
@@ -20861,25 +23679,28 @@ $as_echo_n "checking whether symbol shrink_icache_memory is exported... " >&6; }
                        grep -q -E "EXPORT_SYMBOL.*(shrink_icache_memory)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+               fi
+               if test $rc -ne 0; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SHRINK_ICACHE_MEMORY 1
-_ACEOF
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
 
-               fi
-       else
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -20887,6 +23708,8 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_SHRINK_ICACHE_MEMORY 1
 _ACEOF
 
+
+               fi
        fi
 
 
@@ -20898,10 +23721,10 @@ $as_echo_n "checking whether symbol kern_path_parent exists in header... " >&6;
        for file in include/linux/namei.h; do
                grep -q "int kern_path_parent(const char \*, struct nameidata \*)" "$LINUX/$file" 2>/dev/null
                rc=$?
-               if test $rc -eq 0; then
-                       header=1
-                       break;
-               fi
+               if test $rc -eq 0; then
+                       header=1
+                       break;
+               fi
        done
        if test $header -eq 0; then
                { $as_echo "$as_me:$LINENO: result: no" >&5
@@ -20918,9 +23741,69 @@ _ACEOF
        fi
 
 
+       { $as_echo "$as_me:$LINENO: checking whether kern_path_parent() is available" >&5
+$as_echo_n "checking whether kern_path_parent() is available... " >&6; }
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/namei.h>
+
+int
+main (void)
+{
+
+               kern_path_parent(NULL, NULL);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rc=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+
+       rm -Rf build
+
+
+       if test $rc -ne 0; then :
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+       else
+               if test "x$enable_linux_builtin" != xyes; then
 
-       { $as_echo "$as_me:$LINENO: checking whether symbol kern_path_parent is exported" >&5
-$as_echo_n "checking whether symbol kern_path_parent is exported... " >&6; }
        grep -q -E '[[:space:]]kern_path_parent[[:space:]]' \
                $LINUX_OBJ/Module*.symvers 2>/dev/null
        rc=$?
@@ -20930,25 +23813,28 @@ $as_echo_n "checking whether symbol kern_path_parent is exported... " >&6; }
                        grep -q -E "EXPORT_SYMBOL.*(kern_path_parent)" \
                                "$LINUX_OBJ/$file" 2>/dev/null
                        rc=$?
-                       if test $rc -eq 0; then
-                               export=1
-                               break;
-                       fi
+                       if test $rc -eq 0; then
+                               export=1
+                               break;
+                       fi
                done
-               if test $export -eq 0; then
-                       { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+               if test $export -eq 0; then :
+                       rc=1
+               else :
+                       rc=0
+               fi
+       else :
+               rc=0
+       fi
 
-               else
-                       { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+               fi
+               if test $rc -ne 0; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_KERN_PATH_PARENT_SYMBOL 1
-_ACEOF
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+               else :
 
-               fi
-       else
                { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
@@ -20956,6 +23842,8 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_KERN_PATH_PARENT_SYMBOL 1
 _ACEOF
 
+
+               fi
        fi
 
 
index 1b4a129b2e7d989093d56a943cf690447e573ab3..4ee1b33535d0238ee4cd5df7bbf6578154bd751f 100644 (file)
 /* Define to 1 if you have the <sys/types.h> header file. */
 #undef HAVE_SYS_TYPES_H
 
-/* task_curr() exported */
+/* task_curr() is available */
 #undef HAVE_TASK_CURR
 
 /* timespec_sub() is available */