[gPXE-devel] [PATCH v3][lkrn] add ramdisk support

Michael Brown mbrown at fensystems.co.uk
Thu Jun 3 05:57:33 EDT 2010


On Thursday 03 Jun 2010 08:32:55 Wu Fengguang wrote:
> > You are right.  We need a clean way to pass the off-limits region to
> > relocate().
> >
> > Generic code can't access lkrnprefix.S symbols but it should be
> > possible to pass an (addr, size) pair or even a pointer to an array of
> > (addr, size) pairs.
> 
> Yes! This is actually what I've been thinking: a little less
> straightforward, however a more modular approach.

Do you see anything wrong with Shao Miller's approach:

  http://git.etherboot.org/?p=people/sha0/gpxe.git;a=commitdiff;h=e9516971

It's pretty straightforward, and solves the problem.  The only reason I 
haven't yet merged it in to iPXE is because I'm wondering if there's a way to 
(neatly) pass max_addr in via a register, as is done with all other parameters 
in the prefix code.

(The problem of using memory for parameter passing is that the ROM prefix 
sometimes executes with a read-only .prefix.  Consequently all of the generic 
prefix code is written to assume that .prefix is non-writeable.  While it's true 
that the ROM prefix wouldn't need to override max_addr, I'd prefer to avoid 
introducing that kind of inconsistency.  We could pass parameters via the 
stack but, again, that would introduce an inconsistency since currently 
everything is passed in registers.)

Michael


More information about the gPXE-devel mailing list