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 1MiB.
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.
-Kevin