diff --git a/build/Makefile b/build/Makefile
index 0e5c8d4..5efb738 100644
--- a/build/Makefile
+++ b/build/Makefile
@@ -35,19 +35,11 @@ else # PATCHLEVEL
 # case 3
 
 ifneq ($(LUSTRE_KERNEL_TEST),)
-ifeq ($(PATCHLEVEL),4)
-all: $(LUSTRE_KERNEL_TEST)
-else
 extra-y = $(LUSTRE_KERNEL_TEST)
 endif
-endif
 
 obj-m := conftest.o
 
-ifeq ($(PATCHLEVEL),4)
-include $(TOPDIR)/Rules.make
-endif
-
 endif # PATCHLEVEL
 
 # case 4
diff --git a/build/Rules.in b/build/Rules.in
index 815b3da..dcfa492 100644
--- a/build/Rules.in
+++ b/build/Rules.in
@@ -65,14 +65,4 @@ EXTRA_CFLAGS += $(EXTRA_POST_CFLAGS)
 
 obj-m := $(patsubst %,%.o,$(MODULES))
 
-ifeq ($(PATCHLEVEL),4)
-# 2.4 rules
-O_TARGET := $(firstword $(obj-m))
-obj-y := $($(firstword $(MODULES))-objs)
-export-objs := $(obj-y) $(filter-out $(O_TARGET),$(obj-m))
-include $(TOPDIR)/Rules.make
-$(MODINCL)/%.ver: %.c
-	@true
 endif # PATCHLEVEL
-
-endif # KERNELRELEASE
--- a/build/autoconf/lustre-build-linux.m4	2013-03-14 15:09:00.000000000 +0100
+++ b/build/autoconf/lustre-build-linux.m4	2014-11-07 11:51:23.645778701 +0100
@@ -238,6 +238,14 @@
 LB_CHECK_FILE([$LINUX_OBJ/include/linux/version.h],[],
 	[AC_MSG_ERROR([Run make config in $LINUX.])])
 
+# ----------- kconfig.h exists ---------------
+# kernel 3.1, $LINUX/include/linux/kconfig.h is added
+# see kernel commit 2a11c8ea20bf850b3a2c60db8c2e7497d28aba99
+LB_CHECK_FILE([$LINUX_OBJ/include/linux/kconfig.h],
+              [CONFIG_INCLUDE=include/linux/kconfig.h],
+              [CONFIG_INCLUDE=include/$AUTOCONF_HDIR/autoconf.h])
+	AC_SUBST(CONFIG_INCLUDE)
+
 # ------------ rhconfig.h includes runtime-generated bits --
 # red hat kernel-source checks
 
@@ -394,7 +402,7 @@
 AC_DEFUN([LB_LINUX_COMPILE_IFELSE],
 [m4_ifvaln([$1], [AC_LANG_CONFTEST([$1])])dnl
 rm -f build/conftest.o build/conftest.mod.c build/conftest.ko
-AS_IF([AC_TRY_COMMAND(cp conftest.c build && make -d [$2] ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX_OBJ/include -I$LINUX/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build) >/dev/null && AC_TRY_COMMAND([$3])],
+AS_IF([AC_TRY_COMMAND(cp conftest.c build && make -d [$2] ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX_OBJ/include -I$LINUX/include -I$LINUX_OBJ/include2 -include $CONFIG_INCLUDE" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build) >/dev/null && AC_TRY_COMMAND([$3])],
 	[$4],
 	[_AC_MSG_LOG_CONFTEST
 m4_ifvaln([$5],[$5])dnl])
--- a/build/autoMakefile.am.toplevel	2013-03-14 15:09:00.000000000 +0100
+++ b/build/autoMakefile.am.toplevel	2014-11-07 11:32:29.320652504 +0100
@@ -74,7 +74,7 @@
 modules: $(DEP) all-sources
 	$(MAKE) $(ARCH_UM) CC="$(CC)" -C $(LINUX_OBJ)		     \
 	-f $(PWD)/build/Makefile LUSTRE_LINUX_CONFIG=$(LINUX_CONFIG) \
-        LINUXINCLUDE='$(EXTRA_LNET_INCLUDE) -I$$(srctree)/arch/$$(SRCARCH)/include -Iinclude $$(if $$(KBUILD_SRC),-Iinclude2 -I$$(srctree)/include) -include include/linux/autoconf.h' \
+        LINUXINCLUDE='$(EXTRA_LNET_INCLUDE) -I$$(srctree)/arch/$$(SRCARCH)/include -Iinclude $$(if $$(KBUILD_SRC),-Iinclude2 -I$$(srctree)/include) -include $(CONFIG_INCLUDE)' \
 	$(MODULE_TARGET)=$(PWD) -o tmp_include_depends -o scripts -o \
 	include/config/MARKER $@
 endif # LINUX

