Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Dec 2009 13:32:49 +0300
From:      Andrew Pantyukhin <infofarmer@freebsd.org>
To:        John Baldwin <jhb@freebsd.org>
Cc:        freebsd-acpi@freebsd.org
Subject:   Re: libi386/biosacpi.c - bad RSDP checksum search
Message-ID:  <20091209103248.GP98273@pollux.cenkes.org>
In-Reply-To: <20091208134913.GL98273@pollux.cenkes.org>
References:  <20091208060339.GK98273@pollux.cenkes.org> <200912080749.55710.jhb@freebsd.org> <20091208134913.GL98273@pollux.cenkes.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--B4IIlcmfBL/1gGOG
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Tue, Dec 08, 2009 at 04:49:13PM +0300, Andrew Pantyukhin wrote:
> Oops. I obviously made a wrong assumption. I'll try to confirm.

Yep, the good RSDP is found later.

So I think either a "bad checksum" should be followed by a "good
checksum" or it should only be printed if no good RSDP has been
found. Attached are a couple of alternative tiny patches.

Otherwise, a FAQ entry should be added to keep the mere mortals
like me from wondering about the error message. FWIW, it comes up
on many (most?) IBM System x machines.

--B4IIlcmfBL/1gGOG
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="biosacpi.c.diff1"

Index: biosacpi.c
===================================================================
--- biosacpi.c	(revision 200054)
+++ biosacpi.c	(working copy)
@@ -129,6 +129,7 @@
 		printf("acpi: bad RSDP checksum (%d)\n", sum);
 		continue;
 	    }
+	    printf("acpi: good RSDP checksum (%d)\n", sum);
 	    return(rsdp);
 	}
     }

--B4IIlcmfBL/1gGOG
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="biosacpi.c.diff2"

Index: biosacpi.c
===================================================================
--- biosacpi.c	(revision 200054)
+++ biosacpi.c	(working copy)
@@ -125,12 +125,12 @@
 	    sum = 0;
 	    for (idx = 0; idx < RSDP_CHECKSUM_LENGTH; idx++)
 		sum += *(cp + idx);
-	    if (sum != 0) {
-		printf("acpi: bad RSDP checksum (%d)\n", sum);
+	    if (sum != 0)
 		continue;
-	    }
 	    return(rsdp);
 	}
     }
+    if (sum != 0)
+	printf("acpi: no RSDP with good checksum found\n");
     return(NULL);
 }

--B4IIlcmfBL/1gGOG--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20091209103248.GP98273>