[SeaBIOS] [WIP PATCH 3/3] Add initial CSM support
kevin at koconnor.net
Fri Jan 18 03:09:13 CET 2013
On Fri, Jan 18, 2013 at 01:20:05AM +0000, David Woodhouse wrote:
> On Thu, 2013-01-17 at 19:58 -0500, Kevin O'Connor wrote:
> > Does this table have to be in the f-segment, or can it be anywhere in
> > the binary? BTW, how does OVMF know where to place the seabios blob
> > in memory?
> It can be anywhere in memory. OVMF loads the blob so that it ends at
Okay, sounds like we could end up doing csm.c entirely in 32bit code
then. (Enhance the build with an "export" equivalent of
VAR32FLATVISIBLE and invoke call32 directly from entry_csm.)
> > > + /* FIXME: I don't know if we can allocate in the E000 segment at all. */
> > > + dprintf(3, "Legacy16GetTableAddress size %x align %x region %d\n",
> > > + size, align, region);
> > > + chunk = pmm_malloc(&ZoneFSeg, PMM_DEFAULT_HANDLE, size, align);
> > This is the same as malloc_fseg().
> Apart from the alignment. Which is a power of two, yes. I'll fix it to
> use ZoneLow for the e-segment too; thanks. If no preference is expressed
> by the caller, should I try ZoneLow first? That'll be larger, right?
Yes, ZoneLow will be larger than ZoneFSeg, though both should be
pretty large. This is assuming CONFIG_RELOCATE_INIT is made to work -
without that ZoneLow will likely go below the e-segment and there wont
be much space in the f-segment. It should be possible to enable
CONFIG_RELOCATE_INIT once the PMM regions are filled.
More information about the SeaBIOS