Subject: Re: Booting a Compaq ProLiant ML370
To: Mark Davies <mark@MCS.VUW.AC.NZ>
From: enami tsugutomo <enami@but-b.or.jp>
List: current-users
Date: 01/08/2001 17:26:48
Mark Davies <mark@MCS.VUW.AC.NZ> writes:

> First problem)  With an unmodified INSTALL kernel the system prints
> 
> WARNING: CAN'T ALLOCATE SEGMENT 8 (0x100000000/0xfffffffffffff000/0x1) FROM 
> IOMEM EXTENT MAP

0x100000000 is seg_start and 0xfffffffffffff000 is seg_end -
seg_start.  So, seg_end is 0xfffff000, and we have following statement
just before the printf.

			if (seg_end == 0x100000000ULL)
				seg_end -= PAGE_SIZE;

So, seg_end was initially 0x100000000.  I guess we can skip this
segment if seg_end become smaller than seg_start here.

enami.

Index: machdep.c
===================================================================
RCS file: /cvsroot/syssrc/sys/arch/i386/i386/machdep.c,v
retrieving revision 1.426
diff -u -r1.426 machdep.c
--- machdep.c	2001/01/01 22:13:54	1.426
+++ machdep.c	2001/01/08 08:22:34
@@ -1882,8 +1882,11 @@
 			 * XXX Chop the last page off the size so that
 			 * XXX it can fit in avail_end.
 			 */
-			if (seg_end == 0x100000000ULL)
+			if (seg_end == 0x100000000ULL) {
 				seg_end -= PAGE_SIZE;
+				if (seg_end <= seg_start)
+					continue;
+			}
 
 			/*
 			 * Allocate the physical addresses used by RAM