From owner-freebsd-current@FreeBSD.ORG Fri Jan 16 20:07:01 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 DC05E106564A for ; Fri, 16 Jan 2009 20:07:01 +0000 (UTC) (envelope-from sobomax@FreeBSD.org) Received: from sippysoft.com (gk1.360sip.com [72.236.70.240]) by mx1.freebsd.org (Postfix) with ESMTP id 8BD438FC14 for ; Fri, 16 Jan 2009 20:07:01 +0000 (UTC) (envelope-from sobomax@FreeBSD.org) Received: from [192.168.1.38] (S0106001372fd1e07.vs.shawcable.net [70.71.171.106]) (authenticated bits=0) by sippysoft.com (8.13.8/8.13.8) with ESMTP id n0GK6u9i086771 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 16 Jan 2009 12:06:57 -0800 (PST) (envelope-from sobomax@FreeBSD.org) Message-ID: <4970E8C0.1080005@FreeBSD.org> Date: Fri, 16 Jan 2009 12:06:24 -0800 From: Maxim Sobolev Organization: Sippy Software, Inc. User-Agent: Thunderbird 2.0.0.19 (Windows/20081209) MIME-Version: 1.0 To: Dimitry Andric References: <496B115F.1000105@fsn.hu> <4970BB63.7030601@andric.com> In-Reply-To: <4970BB63.7030601@andric.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Attila Nagy , 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: Fri, 16 Jan 2009 20:07:02 -0000 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" >