From owner-freebsd-current@FreeBSD.ORG Thu Apr 4 16:16:42 2013 Return-Path: Delivered-To: freebsd-current@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 2A80A5D0; Thu, 4 Apr 2013 16:16:42 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 403D9E24; Thu, 4 Apr 2013 16:16:40 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id TAA10827; Thu, 04 Apr 2013 19:16:32 +0300 (EEST) (envelope-from avg@FreeBSD.org) Message-ID: <515DA760.8000101@FreeBSD.org> Date: Thu, 04 Apr 2013 19:16:32 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/20130313 Thunderbird/17.0.4 MIME-Version: 1.0 To: John Baldwin Subject: Re: gptzfsboot problem on HP P410i Smart Array References: <51483621.2060503@FreeBSD.org> <201303191220.34088.jhb@freebsd.org> In-Reply-To: <201303191220.34088.jhb@freebsd.org> X-Enigmail-Version: 1.5.1 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: Bjorn Larsson , freebsd-current@FreeBSD.org, Sergey Dyatko X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.14 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: Thu, 04 Apr 2013 16:16:42 -0000 on 19/03/2013 18:20 John Baldwin said the following: > Yes, we likely could start using that, we would just need to ensure it has some > sort of minimum size. However, maybe it would always have that minimum size as you > are only going to have additional ranges if you have more than 4GB of RAM anyway. > I think though that there were some odd BIOSes that would place a hole at 15-16MB, > and for those the memory region at 1MB is too small. A minimum size of 16MB might > handle that case correctly while using the first extended region in the common > case. How about something like this? Author: Andriy Gapon Date: Wed Apr 3 11:48:34 2013 +0300 [test] zfsboot: bios_getmem prefer extmem over another random chunk of high memory If the extended memory region is sufficiently large. diff --git a/sys/boot/i386/zfsboot/zfsboot.c b/sys/boot/i386/zfsboot/zfsboot.c index 82402b6..12ceeb0 100644 --- a/sys/boot/i386/zfsboot/zfsboot.c +++ b/sys/boot/i386/zfsboot/zfsboot.c @@ -374,6 +374,16 @@ bios_getmem(void) } /* + * If extended memory is at least twice as large as the largest + * region of higher memory, then carve the high heap out of + * extended memory. + */ + if (bios_extmem > 2 * high_heap_size) { + high_heap_base = 0x100000 + bios_extmem / 2; + high_heap_size = bios_extmem / 2; + } + + /* * If we have extended memory and did not find a suitable heap * region in the SMAP, use the last 3MB of 'extended' memory as a * high heap candidate. -- Andriy Gapon