From owner-freebsd-current@FreeBSD.ORG Sat Jan 17 16:57:38 2009 Return-Path: Delivered-To: freebsd-current@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 33BF71065672 for ; Sat, 17 Jan 2009 16:57:38 +0000 (UTC) (envelope-from bra@fsn.hu) Received: from people.fsn.hu (people.fsn.hu [195.228.252.137]) by mx1.freebsd.org (Postfix) with ESMTP id 429EA8FC0C for ; Sat, 17 Jan 2009 16:57:36 +0000 (UTC) (envelope-from bra@fsn.hu) Received: from [172.27.51.4] (fw.axelero.hu [195.228.243.120]) by people.fsn.hu (Postfix) with ESMTP id 0D2BCAC4C9; Sat, 17 Jan 2009 17:57:34 +0100 (CET) Message-ID: <49720DFE.3080808@fsn.hu> Date: Sat, 17 Jan 2009 17:57:34 +0100 From: Attila Nagy User-Agent: Thunderbird 2.0.0.19 (X11/20090105) MIME-Version: 1.0 To: Maxim Sobolev References: <496B115F.1000105@fsn.hu> <4970BB63.7030601@andric.com> <4970E8C0.1080005@FreeBSD.org> In-Reply-To: <4970E8C0.1080005@FreeBSD.org> X-Stationery: 0.4.8.12 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (people.fsn.hu [0.0.0.0]); Sat, 17 Jan 2009 17:57:35 +0100 (CET) Cc: Dimitry Andric , freebsd-current@FreeBSD.org Subject: Re: FreeBSD panics with 64GiB of RAM X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Jan 2009 16:57:38 -0000 Hello, I've already tried something similar. The effect of the patch is this: http://people.fsn.hu/~bra/freebsd/20090107-freebsd-x4540/Screenshot-70.png BTW, this: ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/200812/8.0-CURRENT-200812-amd64-bootonly.iso boots up fine (to sysinstall). I haven't installed FreeBSD for years (I'm using netboot), is this i386? That could explain the situation. Maxim Sobolev wrote: > Atilla, > > Try the following patch (basically replace panic() with basemem = 640 > and let us know: > > Index: sys/amd64/amd64/machdep.c > =================================================================== > --- sys/amd64/amd64/machdep.c (revision 185808) > +++ sys/amd64/amd64/machdep.c (working copy) > @@ -1089,7 +1091,13 @@ > } > } > if (basemem == 0) > - panic("BIOS smap did not include a basemem segment!"); > + basemem = 640; > + if (basemem > 640) { > + printf( > + "Preposterous BIOS basemem of %uK, truncating to > 640K\n", > + basemem); > + basemem = 640; > + } > > #ifdef SMP > /* make hole for AP bootstrap code */ > > -Maxim > > Dimitry Andric wrote: >> 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. ;) >> _______________________________________________ >> freebsd-current@freebsd.org mailing list >> http://lists.freebsd.org/mailman/listinfo/freebsd-current >> To unsubscribe, send any mail to >> "freebsd-current-unsubscribe@freebsd.org" >> >