All of lore.kernel.org
 help / color / mirror / Atom feed
From: achen@t-online.de (Alexander Achenbach)
To: hpa@zytor.com
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] zero-size E820 memory (kernel start-up failure)
Date: Sat, 21 Dec 2002 11:48:41 +0100	[thread overview]
Message-ID: <3E044709.5050302@slit.de> (raw)
In-Reply-To: 20021220125400.GB28068@suse.de

[-- Attachment #1: Type: text/plain, Size: 336 bytes --]

Hi again.

Dave Jones wrote:
 >
 >  > The patch adds code to remove empty entries before sorting regions. It
 >  > was generated for a 2.4.20 kernel.
 >
 > Looks good to me. Care to do a similar patch for 2.5 ?

This is it, to be applied against 2.5.52.
I've tested the kernel on an EPOX 4BEA-R and it boots as it should.

Cheers,
Alex

[-- Attachment #2: nullmem-2.5.52.diff --]
[-- Type: text/plain, Size: 2338 bytes --]

diff -ru linux-2.5.52/arch/i386/kernel/setup.c linux-2.5.52-nullmem/arch/i386/kernel/setup.c
--- linux-2.5.52/arch/i386/kernel/setup.c	Mon Dec 16 03:07:56 2002
+++ linux-2.5.52-nullmem/arch/i386/kernel/setup.c	Fri Dec 20 15:48:35 2002
@@ -14,6 +14,9 @@
  * Moved CPU detection code to cpu/${cpu}.c
  *    Patrick Mochel <mochel@osdl.org>, March 2002
  *
+ *  Provisions for empty E820 memory regions (reported by certain BIOSes).
+ *  Alex Achenbach <xela@slit.de>, December 2002.
+ *
  */
 
 /*
@@ -275,7 +278,7 @@
 	int chgidx, still_changing;
 	int overlap_entries;
 	int new_bios_entry;
-	int old_nr, new_nr;
+	int old_nr, new_nr, chg_nr;
 	int i;
 
 	/*
@@ -329,20 +332,24 @@
 	for (i=0; i < 2*old_nr; i++)
 		change_point[i] = &change_point_list[i];
 
-	/* record all known change-points (starting and ending addresses) */
+	/* record all known change-points (starting and ending addresses),
+	   omitting those that are for empty memory regions */
 	chgidx = 0;
 	for (i=0; i < old_nr; i++)	{
-		change_point[chgidx]->addr = biosmap[i].addr;
-		change_point[chgidx++]->pbios = &biosmap[i];
-		change_point[chgidx]->addr = biosmap[i].addr + biosmap[i].size;
-		change_point[chgidx++]->pbios = &biosmap[i];
+		if (biosmap[i].size != 0) {
+			change_point[chgidx]->addr = biosmap[i].addr;
+			change_point[chgidx++]->pbios = &biosmap[i];
+			change_point[chgidx]->addr = biosmap[i].addr + biosmap[i].size;
+			change_point[chgidx++]->pbios = &biosmap[i];
+		}
 	}
+	chg_nr = chgidx;    	/* true number of change-points */
 
 	/* sort change-point list by memory addresses (low -> high) */
 	still_changing = 1;
 	while (still_changing)	{
 		still_changing = 0;
-		for (i=1; i < 2*old_nr; i++)  {
+		for (i=1; i < chg_nr; i++)  {
 			/* if <current_addr> > <last_addr>, swap */
 			/* or, if current=<start_addr> & last=<end_addr>, swap */
 			if ((change_point[i]->addr < change_point[i-1]->addr) ||
@@ -365,7 +372,7 @@
 	last_type = 0;		 /* start with undefined memory type */
 	last_addr = 0;		 /* start with 0 as last starting address */
 	/* loop through change-points, determining affect on the new bios map */
-	for (chgidx=0; chgidx < 2*old_nr; chgidx++)
+	for (chgidx=0; chgidx < chg_nr; chgidx++)
 	{
 		/* keep track of all overlapping bios entries */
 		if (change_point[chgidx]->addr == change_point[chgidx]->pbios->addr)

      reply	other threads:[~2002-12-21 10:40 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-12-20 11:02 [PATCH] zero-size E820 memory (kernel start-up failure) Alexander Achenbach
2002-12-20 12:54 ` Dave Jones
2002-12-21 10:48   ` Alexander Achenbach [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3E044709.5050302@slit.de \
    --to=achen@t-online.de \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=xela@slit.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.