Date: Mon, 19 Oct 2015 11:25:49 -0700 From: John Baldwin <jhb@freebsd.org> To: Edward Tomasz =?utf-8?B?TmFwaWVyYcWCYQ==?= <trasz@freebsd.org> Cc: "Bjoern A. Zeeb" <bzeeb-lists@lists.zabbadoz.net>, src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r287934 - head/sys/boot/efi/loader Message-ID: <7461243.7D4jZgdzzK@ralph.baldwin.cx> In-Reply-To: <20151009175906.GA4501@brick.home> References: <201509172036.t8HKalKU088025@repo.freebsd.org> <1581085.vcsbvoROWY@ralph.baldwin.cx> <20151009175906.GA4501@brick.home>
next in thread | previous in thread | raw e-mail | index | archive | help
On Friday, October 09, 2015 07:59:06 PM Edward Tomasz Napiera=C5=82a wr= ote: > On 0917T1630, John Baldwin wrote: > > On Thursday, September 17, 2015 10:30:15 PM Bjoern A. Zeeb wrote: > > >=20 > > > > On 17 Sep 2015, at 20:43 , John Baldwin <jhb@freebsd.org> wrote= : > > > >=20 > > > > On Thursday, September 17, 2015 08:36:47 PM John Baldwin wrote:= > > > >> Author: jhb > > > >> Date: Thu Sep 17 20:36:46 2015 > > > >> New Revision: 287934 > > > >> URL: https://svnweb.freebsd.org/changeset/base/287934 > > > >>=20 > > > >> Log: > > > >> The EFI boot loader allocates a single chunk of contiguous me= mory to > > > >> hold the kernel, modules, and any other loaded data. This me= mory block > > > >> is relocated to the kernel's expected location during the tra= nsfer of > > > >> control from the loader to the kernel. > > > >>=20 > > > >> The GENERIC kernel on amd64 has recently grown such that a ke= rnel + zfs.ko > > > >> no longer fits in the default staging size. Bump the default= size from > > > >> 32MB to 48MB to provide more breathing room. > > > >=20 > > > > I believe that this should work fine for any system with 64MB o= f RAM. One > > > > downside of the static size is that the loader fails if it can'= t allocate > > > > a contiguous staging size (it isn't able to grow the staging ar= ea on > > > > demand). > > >=20 > > > how do md_images work in that case? > >=20 > > The md_image has to fit into the same staging area (kernel plus any= other > > files loaded by the loader including modules and md_images all have= to fit > > in the staging area). That was the original motivation for making = the > > staging area a build-time tunable rather than always hardcoded at 3= 2MB so > > that people who wished to deploy a large md_image can use a make fl= ag to > > build a loader with a larger staging size (I tested this with a 200= +MB > > mfsroot). >=20 > What would be required to get rid of that limitation altogether, ie m= ake > it dynamic? Right now it's quite a regression compared to the usual > (non-UEFI) loader. >From earlier in the thread: It's a harder problem to solve. Feel free to submit patches. One opti= on is to let the staging code allocate more memory chunks from EFI and chain = them together. However, your relocate code will now have to be smart enough= to order the various copies in such a way that none of them copy over top = of each other. I haven't sat down to see if that's easy to solve or not. The other approach I suggested earlier is to make the kernel relocatabl= e (and allow the module metadata to be anywhere and live in a chain inste= ad of an array) so that we can just load things wherever and leave them th= ere without having to relocate. --=20 John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7461243.7D4jZgdzzK>