Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 16 Jan 2009 17:52:51 +0100
From:      Dimitry Andric <dimitry@andric.com>
To:        Attila Nagy <bra@fsn.hu>
Cc:        freebsd-current@freebsd.org
Subject:   Re: FreeBSD panics with 64GiB of RAM
Message-ID:  <4970BB63.7030601@andric.com>
In-Reply-To: <496B115F.1000105@fsn.hu>
References:  <496B115F.1000105@fsn.hu>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2009-01-12 10:46, Attila Nagy wrote:
> FreeBSD-CURRENT/amd64 panics at initialization with this:
> http://people.fsn.hu/~bra/freebsd/20090107-freebsd-x4540/Screenshot-55.png
> on a Sun X4550, equipped with two Opteron CPUs and 64 GiB of RAM.

Looks like a BIOS problem, the memory map doesn't include any segment
that starts at 0.  This memory map seems to be provided by the loader,
as stated in /usr/src/sys/amd64/amd64/machdep.c:

	static void
	getmemsize(caddr_t kmdp, u_int64_t first)
	{
		[...]
		/*
		 * get memory map from INT 15:E820, kindly supplied by the loader.
		[...]
		/*
		 * Find the 'base memory' segment for SMP
		 */
		basemem = 0;
		for (i = 0; i <= physmap_idx; i += 2) {
			if (physmap[i] == 0x00000000) {
				basemem = physmap[i + 1] / 1024;
				break;
			}
		}
		if (basemem == 0)
			panic("BIOS smap did not include a basemem segment!");
		[...]

Funny though, the i386 equivalent has:

	static void
	getmemsize(int first)
	{
		[...]
		/*
		 * Perform "base memory" related probes & setup based on SMAP
		 */
		if (basemem == 0) {
			for (i = 0; i <= physmap_idx; i += 2) {
				if (physmap[i] == 0x00000000) {
					basemem = physmap[i + 1] / 1024;
					break;
				}
			}

			/*
			 * XXX this function is horribly organized and has to the same
			 * things that it does above here.
			 */
			if (basemem == 0)
				basemem = 640;
			if (basemem > 640) {
				printf(
			    "Preposterous BIOS basemem of %uK, truncating to 640K\n",
				    basemem);
				basemem = 640;
			}

E.g. if it can't find the SMAP segment required, it just assumes 640k...
should be enough for everone. ;)



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