Index: packages/base-installer/kernel/README
===================================================================
--- packages/base-installer/kernel/README	(revision 53759)
+++ packages/base-installer/kernel/README	(working copy)
@@ -61,6 +61,8 @@
     The major version of the running kernel, e.g. 2.6.
   KERNEL_VERSION
     The full version of the running kernel, e.g. 2.6.8.
+  KERNEL_FLAVOUR
+    The flavour of the running kernel, e.g. 486, 686-bigmem or ixp4xx.
   MACHINE
     The machine hardware name (as returned by uname -m).
   NUMCPUS
Index: packages/base-installer/kernel/i386.sh
===================================================================
--- packages/base-installer/kernel/i386.sh	(revision 53759)
+++ packages/base-installer/kernel/i386.sh	(working copy)
@@ -2,16 +2,26 @@
 	VENDOR=`grep '^vendor_id' "$CPUINFO" | head -n1 | cut -d: -f2`
 	FAMILY=`grep '^cpu family' "$CPUINFO" | head -n1 | cut -d: -f2`
 	MODEL=`grep '^model[[:space:]]*:' "$CPUINFO" | head -n1 | cut -d: -f2`
+
+	# Only offer bigmem is the system supports pae and the
+	# installer itself is already using a bigmem kernel.
+	if grep '^flags' "$CPUINFO" | grep -q pae ; then
+	    case "$KERNEL_FLAVOUR" in
+		686-bigmem*) BIGMEM="-bigmem" ;;
+		*) ;;
+	    esac
+        fi
+
 	case "$VENDOR" in
 	    " AuthenticAMD"*)
 		case "$FAMILY" in
-		    " 6"|" 15")	echo k7 ;;
+		    " 6"|" 15") echo k7$BIGMEM ;;
 		    *)		echo 486 ;;
 		esac
 		;;
 	    " GenuineIntel")
 		case "$FAMILY" in
-		    " 6"|" 15")	echo 686 ;;
+		    " 6"|" 15")	echo 686$BIGMEM ;;
 		    *)		echo 486 ;;
 		esac
 		;;
@@ -19,7 +29,7 @@
 		case "$FAMILY" in
 		    " 6")
 			case "$MODEL" in
-			    " 9"|" 10")	echo 686 ;;
+			    " 9"|" 10")	echo 686$BIGMEM ;;
 			    *)		echo 486 ;;
 			esac
 			;;
@@ -39,8 +49,8 @@
 	if echo "$1" | grep -Eq -- "-486(-.*)?$"; then return 0; fi
 	if [ "$2" = 486 ]; then return 1; fi
 	if echo "$1" | grep -Eq -- "-686(-.*)?$"; then return 0; fi
-	if [ "$2" = 686 ]; then return 1; fi
-	if [ "$2" = k7 ]; then
+	if [ "$2" = 686 ] || [ "$2" = 686-bigmem ]; then return 1; fi
+	if [ "$2" = k7 ] || [ "$2" = k7-bigmem ] ; then
 		if echo "$1" | grep -Eq -- "-k7(-.*)?$"; then return 0; fi
 		return 1
 	fi
@@ -53,11 +63,21 @@
 arch_get_kernel () {
 	imgbase=linux-image
 
+	if [ "$1" = k7-bigmem ]; then
+		echo "$imgbase-$KERNEL_MAJOR-686-bigmem"
+		set k7
+	fi
+
 	if [ "$1" = k7 ]; then
 		echo "$imgbase-$KERNEL_MAJOR-k7"
 		set 486
 	fi
 
+	if [ "$1" = 686-bigmem ]; then
+		echo "$imgbase-$KERNEL_MAJOR-686-bigmem"
+		set 686
+	fi
+
 	if [ "$1" = 686 ]; then
 		echo "$imgbase-$KERNEL_MAJOR-686"
 		set 486
Index: packages/base-installer/kernel/tests/i386/cittagazze-bigmem.test
===================================================================
--- packages/base-installer/kernel/tests/i386/cittagazze-bigmem.test	(revision 0)
+++ packages/base-installer/kernel/tests/i386/cittagazze-bigmem.test	(revision 0)
@@ -0,0 +1,17 @@
+cpuinfo cittagazze.cpuinfo
+majors 2.6
+flavour k7-bigmem
+kernel-2.6 \
+  linux-image-2.6-686-bigmem \
+  linux-image-2.6-k7 \
+  linux-image-2.6-486
+usable \
+  linux-image-2.6-486 \
+  linux-image-2.6-686 \
+  linux-image-2.6-686-bigmem \
+  linux-image-2.6-k7 \
+  linux-image-2.6.18-1-486 \
+  linux-image-2.6.18-1-686 \
+  linux-image-2.6.18-1-686-bigmem \
+  linux-image-2.6.18-1-k7
+env KERNEL_FLAVOUR 686-bigmem
Index: packages/base-installer/kernel/tests/i386/cittagazze.test
===================================================================
--- packages/base-installer/kernel/tests/i386/cittagazze.test	(revision 53759)
+++ packages/base-installer/kernel/tests/i386/cittagazze.test	(working copy)
@@ -13,3 +13,4 @@
   linux-image-2.6.18-1-686 \
   linux-image-2.6.18-1-686-bigmem \
   linux-image-2.6.18-1-k7
+env KERNEL_FLAVOUR 486
Index: packages/base-installer/kernel/tests/i386/via-c7-Samuel.test
===================================================================
--- packages/base-installer/kernel/tests/i386/via-c7-Samuel.test	(revision 53759)
+++ packages/base-installer/kernel/tests/i386/via-c7-Samuel.test	(working copy)
@@ -15,3 +15,4 @@
   linux-image-2.6.18-1-686-bigmem \
   linux-image-2.6.18-1-686 \
   linux-image-2.6.18-1-k7
+env KERNEL_FLAVOUR 486
Index: packages/base-installer/kernel/tests/i386/via-c7-Esther.test
===================================================================
--- packages/base-installer/kernel/tests/i386/via-c7-Esther.test	(revision 53759)
+++ packages/base-installer/kernel/tests/i386/via-c7-Esther.test	(working copy)
@@ -16,3 +16,4 @@
 unusable \
   linux-image-2.6-k7 \
   linux-image-2.6.18-1-k7
+env KERNEL_FLAVOUR 486
Index: packages/base-installer/kernel/tests/i386/oqo1.test
===================================================================
--- packages/base-installer/kernel/tests/i386/oqo1.test	(revision 53759)
+++ packages/base-installer/kernel/tests/i386/oqo1.test	(working copy)
@@ -14,3 +14,4 @@
   linux-image-2.6.18-1-686-bigmem \
   linux-image-2.6.18-1-686 \
   linux-image-2.6.18-1-k7
+env KERNEL_FLAVOUR 486
Index: packages/base-installer/kernel/tests/i386/pentium.test
===================================================================
--- packages/base-installer/kernel/tests/i386/pentium.test	(revision 53759)
+++ packages/base-installer/kernel/tests/i386/pentium.test	(working copy)
@@ -15,3 +15,4 @@
   linux-image-2.6.18-1-686-bigmem \
   linux-image-2.6.18-1-686 \
   linux-image-2.6.18-1-k7
+env KERNEL_FLAVOUR 486
Index: packages/base-installer/kernel/tests/i386/pentium-d-2p.test
===================================================================
--- packages/base-installer/kernel/tests/i386/pentium-d-2p.test	(revision 53759)
+++ packages/base-installer/kernel/tests/i386/pentium-d-2p.test	(working copy)
@@ -15,3 +15,4 @@
 unusable \
   linux-image-2.6-k7 \
   linux-image-2.6.18-1-k7
+env KERNEL_FLAVOUR 486
Index: packages/base-installer/kernel/tests/i386/pentium-3.test
===================================================================
--- packages/base-installer/kernel/tests/i386/pentium-3.test	(revision 53759)
+++ packages/base-installer/kernel/tests/i386/pentium-3.test	(working copy)
@@ -15,3 +15,4 @@
 unusable \
   linux-image-2.6-k7 \
   linux-image-2.6.18-1-k7
+env KERNEL_FLAVOUR 486
Index: packages/base-installer/kernel/tests/i386/pentium-4M-bigmem.test
===================================================================
--- packages/base-installer/kernel/tests/i386/pentium-4M-bigmem.test	(revision 0)
+++ packages/base-installer/kernel/tests/i386/pentium-4M-bigmem.test	(revision 0)
@@ -0,0 +1,20 @@
+cpuinfo pentium-4M.cpuinfo
+machine i686
+majors 2.6
+flavour 686-bigmem
+env SPEAKUP /nonexistent
+kernel-2.6 \
+  linux-image-2.6-686-bigmem \
+  linux-image-2.6-686 \
+  linux-image-2.6-486
+usable \
+  linux-image-2.6-486 \
+  linux-image-2.6-686 \
+  linux-image-2.6-686-bigmem \
+  linux-image-2.6.18-1-486 \
+  linux-image-2.6.18-1-686 \
+  linux-image-2.6.18-1-686-bigmem
+unusable \
+  linux-image-2.6-k7 \
+  linux-image-2.6.18-1-k7
+env KERNEL_FLAVOUR 686-bigmem
Index: packages/base-installer/kernel/tests/i386/pentium-4M.test
===================================================================
--- packages/base-installer/kernel/tests/i386/pentium-4M.test	(revision 53759)
+++ packages/base-installer/kernel/tests/i386/pentium-4M.test	(working copy)
@@ -16,3 +16,4 @@
 unusable \
   linux-image-2.6-k7 \
   linux-image-2.6.18-1-k7
+env KERNEL_FLAVOUR 486
Index: packages/base-installer/debian/changelog
===================================================================
--- packages/base-installer/debian/changelog	(revision 53759)
+++ packages/base-installer/debian/changelog	(working copy)
@@ -1,10 +1,16 @@
 base-installer (1.92) UNRELEASED; urgency=low
 
+  [ Joey Hess ]
   * Call base-installer.d hooks after running debootstrap, for consistency
     with live-installer. (So, pre_install_hooks is run after bootstrap, but
     before anything is installed with apt. So the name still makes a kind
     of sense, if you squint..)
 
+  [ Ian Campbell ]
+  * i386: If the installer is running a -bigmem kernel and the processors
+    support PAE then select a -bigmem kernel for installation. For
+    compatibility with running under Xen.
+
  -- Joey Hess <joeyh@debian.org>  Wed, 18 Jun 2008 21:20:28 -0400
 
 base-installer (1.91) unstable; urgency=low
Index: packages/base-installer/library.sh
===================================================================
--- packages/base-installer/library.sh	(revision 53759)
+++ packages/base-installer/library.sh	(working copy)
@@ -17,6 +17,7 @@
 KERNEL_MAJOR="$(uname -r | cut -d . -f 1,2)"
 KERNEL_VERSION="$(uname -r | cut -d - -f 1)"
 KERNEL_ABI="$(uname -r | cut -d - -f 1,2)"
+KERNEL_FLAVOUR=$(uname -r | cut -d - -f 3-)
 MACHINE="$(uname -m)"
 NUMCPUS=$(cat /var/numcpus 2>/dev/null) || true
 CPUINFO=/proc/cpuinfo
